当前位置: 首页 > 知识库问答 >
问题:

使用Azure DevOps REST API向Azure Git存储库添加新文件和文件夹

慕才
2023-03-14

如何使用Azure DevOps REST API向Azure Git存储库添加新的文件和文件夹?

我想使用Azure DevOps REST API向我的存储库中添加一些静态文件。

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories?view=azure-devops-rest-5.1

通过REST API是否有任何选项可用?。

或者其他可用的自动化方法,或者CICD或通过C#?

共有1个答案

甄佐
2023-03-14

我找到了答案,我们可以使用Git Push REST API uri

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-5.1

在C#代码中执行以下步骤

>

  • 调用GetRef REST https://dev.azure.com/{0}/{1}/_apis/git/repositories/{2}/refs{3}这将返回存储库分支的对象,您可以使用它来推动更改

    接下来,调用Push REST API将文件夹或文件创建到存储库https://dev.azure.com/{0}/{1}/_apis/git/repositories/{2}/pushes{3}

               var changes = new List<ChangeToAdd>();
                //Add Files
    
                //pnp_structure.yml
                var jsonContent = File.ReadAllText(@"./static-files/somejsonfile.json");
    
                ChangeToAdd changeJson = new ChangeToAdd()
                {
                    changeType = "add",
                    item = new ItemBase() { path = string.Concat(path, "/[your-folder-name]/somejsonfile.json") },
                    newContent = new Newcontent()
                    {
                        contentType = "rawtext",
                        content = jsonContent
                    }
                };
                changes.Add(changeJson);
    
    
                CommitToAdd commit = new CommitToAdd();
                commit.comment = "commit from code";
                commit.changes = changes.ToArray();
    
                var content = new List<CommitToAdd>() { commit };
                var request = new
                {
                    refUpdates = refs,
                    commits = content
                };
    
         var personalaccesstoken = _configuration["azure-devOps-configuration-token"];
    
        var authorization = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", personalaccesstoken)));
    
        _logger.LogInformation($"[HTTP REQUEST] make a http call with uri: {uri} ");
    
         //here I making http client call 
         // https://dev.azure.com/{orgnizationName}/{projectName}/_apis/git/repositories/{repositoryId}/pushes{?api-version}
        var result = _httpClient.SendHttpWebRequest(uri, method, data, authorization);
    

  •  类似资料:
    • http://maven.apache.org/maven-v4_0_0.xsd“> 正如u提到的,我在mvnrepository.com/artifact/org.databene/benerator-maven-plugin/…找到了新的存储库,试图编辑POM,但得到的错误为 [警告]org.databene:benerator-maven-plugin:jar:jar的POM丢失,没有可用的

    • 我想知道如何使用ngx awesome uploader将图像从Angular上传到azure storage blob。 我希望能够使用此库将其直接从angular发送到azure存储blob。我已经能够将它发送到我的nodejs后端没有问题,但是直接将它发送到blob存储对我来说是一个挑战。有人能提供一个如何做到这一点的工作示例吗?谢谢你的帮助! ngx真棒上传器的stackblitz示例 该

    • 我需要开发android文件浏览器应用程序。我将文件名和文件路径都放入两个单独的ArrayList中,然后分配给ArrayAdapter。我使用TextView显示文件名和文件夹名。文件资源管理器工作正常。现在我需要添加文件夹图标到文件夹和文件图标到文件。 无法在布局文件中执行此操作,因为所有文件夹和文件都位于同一个ArrayAdapter中。我试图在代码中实现这一点,但我必须将整个ArrayLi

    • 我一直在Mac OSX上本地使用Git,后来决定试用Github和Bitbucket。我有一些问题使它工作,并尝试了一些修复其他人建议谁有类似的问题。我能够推送到Github和Bitbucket,但我也设法在这个过程中向我的存储库添加了额外的目录和文件。 我正在使用Xampp进行本地开发,我在那里有一个文件夹,我用它创建了我的存储库,所以文件结构如下所示

    • 使用start创建spring boot项目时。Springio中,包含一些maven包装文件: mvnw 提交到git repo时是否应该忽略这些文件?

    • 是否有任何方法(内置或附加)加密存储库中的单个文件,可供有限的人访问。这些人签入时的文件将在签出时自动加密和解密。如果其他人试图访问,它们将保持加密。