Git mega squash所有顺序提交都有相同的消息和作者

时间:2014-03-05 13:30:16

标签: c# git libgit2sharp

我有application监视文件系统(TeamCity配置目录),以更改XML配置文件。检测到更改时,会将其提交给Git(使用libgit2sharp)。 Git' Committer'始终是应用程序运行的服务帐户用户,但Git'作者'通过检查TeamCity审核日志来确定,以便将更改归因于创建它的用户。该应用程序记录一个通用的提交消息,如"构建配置' x'由用户' y修改。'。"并承诺改变。

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

我想将所有顺序提交与相同的提交消息和作者压缩到一个提交中。是否有一个git命令可以一次性完成整个仓库的操作,或者我是否需要为每个要压缩的提交序列编写一系列调用脚本?

使用libgit2sharp时,我发现在vanilla git中找出我想要实现的内容,然后在c#代码中实现git命令是有意义的。但也许有人已经知道了正确的libgit2sharp调用序列,以使其发挥作用。

1 个答案:

答案 0 :(得分:3)

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