我有一个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了解它通常是如何调用的。 TreeFilter
和 ParentFilter
的某种组合可能会达到您想要的效果。
关于c# - Git mega 压缩具有相同消息和作者的所有顺序提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199210/