c# - 在 C# 中使用 Git TFS API 在一次提交中进行移动和编辑?
问题描述
我正在尝试编辑我们的一个文件并将其移动到我们的仓库中的另一个位置,到目前为止有这个设置:
GitRepository repo = new GitRepository();
repo.Id = new Guid(RepositoryId);
repo.Url = "Working.url.goes.here.com";
repo.DefaultBranch = "heads/master";
GitRef defaultBranch = GitClient.GetRefsAsync(repo.Id, filter: repo.DefaultBranch).Result.First();
string result = testpath.Replace(ACTUALFILEPATH, "");
GitCommitRef newCommit;
List<GitChange> changes;
GitRefUpdate newBranch = new GitRefUpdate()
{
Name = currBranch,
OldObjectId = defaultBranch.ObjectId,
};
changes = new List<GitChange>(3);
//the changes for the test being edited
changes.Add(new GitChange()
{
ChangeType = VersionControlChangeType.Add,
Item = new GitItem() { Path = result },
NewContent = new ItemContent()
{
Content = TestContent,
ContentType = ItemContentType.RawText
},
});
//the changes for the csproj file
changes.Add(new GitChange()
{
ChangeType = VersionControlChangeType.Edit,
Item = new GitItem() { Path = projPath },
NewContent = new ItemContent()
{
Content = projContent,
ContentType = ItemContentType.RawText
},
});
//The deletion of the old file
changes.Add(new GitChange()
{
ChangeType = VersionControlChangeType.Delete,
Item = new GitItem() { Path = origpath },
});
newCommit = new GitCommitRef()
{
Comment = commitmessage,
Changes = changes.ToArray()
};
GitPush push = GitClient.CreatePushAsync(new GitPush()
{
RefUpdates = new GitRefUpdate[] { newBranch },
Commits = new GitCommitRef[] { newCommit },
Repository = repo
}, repo.Id).Result;
return result;
每次我尝试运行它时,删除会导致一个错误,说您不能在一次提交中修改同一个文件两次,或者如果我将删除移动到它说该文件不存在于分支目录中之前。
我需要什么:为了能够将测试从一个目录移动到另一个目录,编辑其内容,还可以编辑另一个文件的内容,并将所有内容推送到服务器。
其他注意事项:Powershell 和 Cmd 的使用非常有限。
任何想法或建议或知道什么是错的?非常感谢您的帮助!
解决方案
好吧,经过几个小时的测试,我终于弄明白了..
我为 origpath 使用了错误的参数,并且传递的路径与我添加的新文件相同。
TLDR:在编写函数时仔细检查你的参数
推荐阅读
- java - 在 Spring RestTemplate 和 ResponseEntity 中设置状态码 301 或 303
- javascript - 在 Pushkin 安装中找不到 Node.js fs 模块
- javascript - Azure AD - OAuth 2 - 隐式授权 - 尝试使用应用程序进行身份验证时出现 CORS 错误,但当我从浏览器访问 URL 时工作正常
- r - 将星期日和星期六的日期设置为等于星期五的日期
- image - 从 netlogo 导出图像(jpg png pdf)
- c++ - C++:无法在 lambdas 中捕获“this”上下文 2 次
- c++ - 我可以使用 clang-format 将我的代码格式化为这种样式吗?
- mysql - 在 MySQL 中将 JSON 值设置为 TEXT 变量错误
- javascript - 如何让我的 Etch-A-Sketch 网格在悬停时改变颜色和不透明度?
- ios - 运行子进程cordova时出错,但没有解释