c# - Git mega 压缩具有相同消息和作者的所有顺序提交

标签 c# git libgit2sharp

我有一个application它监视文件系统(TeamCity 配置目录),以了解 XML 配置文件的更改。当检测到更改时,会将其提交到 Git(使用 libgit2sharp )。 Git“提交者”始终是运行应用程序的服务帐户用户,但 Git“作者”是通过检查 TeamCity 审核日志来确定的,以便将更改归因于进行更改的用户。应用程序记录一条通用提交消息,例如“构建配置‘x’已被用户‘y’修改。”并提交更改。

由于 TeamCity 配置更改往往是作为一系列网页交互进行的,因此我们最终会进行大量(10 到 30 左右)的顺序提交,显示对给定配置文件的更改(通常是相同的( build-config)或两个(vcs-config)文件在整个提交系列中发生更改)。

我想将具有相同提交消息和作者的所有顺序提交压缩为单个提交。是否有一个 git 命令可以一次对整个存储库执行此操作,或者我是否需要为我想要压缩的每个提交序列编写一系列调用?

在使用 libgit2sharp 时,我发现先弄清楚我想要在 vanilla git 中实现什么,然后在 C# 代码中实现 git 命令是有意义的。但也许有人已经知道 libgit2sharp 调用的正确顺序来完成这项工作。

最佳答案

我认为它以前没有被用来压缩历史记录,但你可以尝试使用 LibGit2Sharp 的 RewriteHistory API。查看the tests了解它通常是如何调用的。 TreeFilterParentFilter 的某种组合可能会达到您想要的效果。

关于c# - Git mega 压缩具有相同消息和作者的所有顺序提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199210/

相关文章:

c# - 在 ASP.NET WebApi 中,为什么 RouteData 的值类型是 "object"而不是 "string"

c# - 需要帮助来决定什么是跟踪系统 (.NET) 的最佳解决方案

c# - 计算数组中元素的差异

c# - 必须在 new Uri() 中使用 http ://1/? 才能获取 NameValueCollection

linux - git 使用什么机制来查找其存储库?

git - 在 IntelliJ 项目中更改在线 git 存储库 url

Git 还原已删除的文件并保留文件历史记录

c# - 如何使用 libgit2sharp (git cat-file) 获取文件的头版本

c# - LibGit2Sharp - 暂存和提交文件的最佳方式

c# - 'LibGit2Sharp.Core.NativeMethods' 的类型初始值设定项抛出异常