我正在尝试以编程方式更新现有分支中的文件,但是我得到了这个例外。
参数组合无效或不完整。 参数名称:refUpdate
这是我的代码
GitRefUpdate desiredBranch = new GitRefUpdate()
{
RepositoryId = sourceRepoGuid,
OldObjectId = branch.ObjectId
};
GitCommitRef newCommit = new GitCommitRef()
{
Comment = $"Update config to match new branch ",
Changes = new GitChange[]
{
new GitChange()
{
ChangeType = VersionControlChangeType.Edit,
Item = new GitItem() { Path = $"/{fileName}" },
NewContent = new ItemContent()
{
Content = fileContent,
ContentType = ItemContentType.RawText,
},
}
},
};
GitPush push = gitClient.CreatePushAsync(new GitPush()
{
RefUpdates = new GitRefUpdate[] { desiredBranch },
Commits = new GitCommitRef[] { newCommit }
}, sourceRepoGuid).Result;
我会从错误消息中想象我对GitRefUpdate对象做错了。我已经尝试了几个不同的OldObjectId,NewObjectId和从最后一次提交文件的SHA到分支本身的SHA的组合,没有什么能满足对CreatePushAsync的调用。
我发现的唯一示例是在MS示例中,它创建了一个新分支并添加了一个新文件。我想更新现有分支中的现有文件。
我没有想法。
答案 0 :(得分:0)
您可以尝试使用TFS REST API,如下所示:
JSON数据:
{
"refUpdates": [{
"name": "refs/heads/master",
"oldObjectId": "[step 1 commit ID]"
}],
"commits": [{
"comment": "Updated BuildLog.cs",
"changes": [{
"changeType": 2,
"item": {"path": "/BuildLog.cs"},
"newContent": {
"content": "using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class BuildLog
{
public int count;
public string[] value6;
}
}
",
"contentType": 0
}
}]
}]
}
有关详细信息,请参阅此案例:Updating a file using REST Api Visual Studio Team Services