使用git钩子为当前提交已更改的每个文件创建差异报告

我正在尝试创建一个git hook来为我的代码和服务器代码之间的每个文件创建一个diff报告.

我见过的大多数解决方案都说使用git的diff命令来创建报告,但是我需要为每个已经更改的文件完成此操作.我需要将其创建为特别是作为并排HTML报告进行比较.

因此,对于每个已更改的文件,我需要调用超出比较来创建一些file.html详细说明已更改的内容.如果更改了63个文件,我希望63个html文件显示更改的差异.

我粗略地想知道如何自动化以及创建差异,我只是不知道如何获得已更改的文件的路径以及已更改的远程文件的本地缓存的路径.

有人做过这样的事吗?

编辑 – 我想使用githooks,因为我想让每次提交都自动生成diff文件,而不必考虑它.这是我们现在的签入过程的一部分(由管理层决定),并且为每个已更改的文件手动执行操作非常繁琐.

最佳答案 >列出已更改的文件:

git diff --name-only

>要打印文件at a specified revision的内容:

git show <revision>:<file>

> Beyond Compare seem通过添加 – 命令接受stdin作为输入.

结合这些,假设您在Windows上并假设服务器位于origin / master分支上,您可以执行以下操作:(请注意,我没有对此进行测试)

for f in $(git diff --name-only)
    git show origin/master:"$f" | BCompare.exe "$f" - # add correct option(s) before "$f" to generate html
do
点赞