无法成功调用 CreatePushAsync
Cannot successfully call CreatePushAsync
我正在尝试以编程方式更新现有分支中的文件,但出现此异常。
The combination of parameters is either not valid or not complete.
Parameter name: 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
.[= 的调用16=]
我找到的唯一示例是在 MS 示例中,它创建了一个新分支并添加了一个新文件。我想更新现有分支中的现有文件。
我没主意了。
您可以按照以下步骤尝试 TFS REST API:
- 获取commit ID值:请求方法:GET; URL [集合url]/[团队项目名称]/_apis/git/repositories/[存储库名称]/commits?api-version=1.0 &branch=master&$top=1
- 更新文件内容:请求方式:Post; URL: [集合url]/[团队项目名称]/_apis/git/repositories/[存储库名称]/pushes?api-version= 3.0-预览.2;内容类型:application/json;
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
}
}]
}]
}
详情请参考本案例:
我正在尝试以编程方式更新现有分支中的文件,但出现此异常。
The combination of parameters is either not valid or not complete. Parameter name: 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
.[= 的调用16=]
我找到的唯一示例是在 MS 示例中,它创建了一个新分支并添加了一个新文件。我想更新现有分支中的现有文件。
我没主意了。
您可以按照以下步骤尝试 TFS REST API:
- 获取commit ID值:请求方法:GET; URL [集合url]/[团队项目名称]/_apis/git/repositories/[存储库名称]/commits?api-version=1.0 &branch=master&$top=1
- 更新文件内容:请求方式:Post; URL: [集合url]/[团队项目名称]/_apis/git/repositories/[存储库名称]/pushes?api-version= 3.0-预览.2;内容类型:application/json;
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
}
}]
}]
}
详情请参考本案例: