C#Azure DevOps Git:无法推送新目录

新黑

我正在尝试使用适用于C#.Net的Azure DevOps Git API,并且在大多数情况下我已经弄清楚了。但是我在将新目录推送到存储库时遇到问题。

以下是到目前为止的相关代码片段;

创建提交

        GitCommitRef commit = new GitCommitRef()
        {
            Comment = "Add a sample file",
            Changes = new GitChange[]
            {
                new GitChange()
                {
                    ChangeType = VersionControlChangeType.Add,
                    Item = new GitItem() { Path = "/TESTFOLDER", GitObjectType = GitObjectType.Tree, IsFolder = true },
                    NewContent = null
                    //NewContent = new ItemContent()
                    //{
                    //    Content = Utilities.ReadFile(fileNamePath),
                    //    ContentType = ItemContentType.RawText
                    //}
                 },

                new GitChange()
                {
                    ChangeType = VersionControlChangeType.Add,
                    Item = new GitItem() {Path = "/TESTFOLDER/" + fileName, GitObjectType = GitObjectType.Blob, IsFolder = false },
                    NewContent = new ItemContent()
                    {
                        Content = Utilities.ReadFile(fileNamePath),
                        ContentType = ItemContentType.RawText
                    }

                }

创建推送

        GitPush toPush = new GitPush()
        {
            RefUpdates = new GitRefUpdate[] { newBranch },
            Commits = new GitCommitRef[] { commit }
        };

        // Create the push with the new branch and commit
        GitPush push = gitClient.CreatePushAsync(toPush, repo.Id).Result;

当它使用该提交执行Push时,错误提示“提供的参数无效。参数名称:newPush”。

我在文档中找不到任何可以帮助我弄清楚如何将“ fileName”文件放置在同时创建的目录中的问题?

李维·鲁

该错误似乎是由于GitChange中的TESTFOLDER目录对象引起的GitChanges

您无需GitChangeTESTFOLDER目录指定新对象由于@StriplingWarrior注释git中不允许有空目录。

您只能GitChange为文件指定一个新对象。如果文件所在的目录不存在。它将自动创建。

见下文:

GitCommitRef commit = new GitCommitRef()
        {
            Comment = "Add a sample file",
            Changes = new GitChange[]
            {
                new GitChange()
                {
                    ChangeType = VersionControlChangeType.Add,
                    Item = new GitItem() {Path = "/TESTFOLDER/" + fileName, GitObjectType = GitObjectType.Blob, IsFolder = false },
                    NewContent = new ItemContent()
                    {
                        Content = Utilities.ReadFile(fileNamePath),
                        ContentType = ItemContentType.RawText
                    }

                }

从我的测试中看到以下屏幕:目录已自动创建。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章