我正在尝试创建一个 git 钩子(Hook)来为我的代码和服务器代码之间发生变化的每个文件创建差异报告。
我见过的大多数解决方案都说使用 git 的 diff 命令来创建报告,但我需要为每个已更改的文件完成此操作,并且我需要以 beyond compare 的方式创建它,特别是作为并排 HTML 报告。
因此,对于每个已更改的文件,我都需要调用 beyond compare 来创建一些 file.html 来详细说明更改内容。如果更改了 63 个文件,我希望 63 个 html 文件显示更改的差异。
我对如何自动执行 beyond compare 来创建差异有一个粗略的了解,我只是不知道如何获取已更改的文件的路径以及远程文件的本地缓存路径已经改变了。
有没有人做过这样的事情?
编辑 - 我想使用 githooks,因为我想为每次提交自动生成 diff 文件,而无需任何人考虑。这是我们现在 checkin 流程的一部分(按照管理层的指示),手动为每个已更改的文件执行操作非常乏味。
最佳答案
列出更改的文件:
git diff --name-only
打印文件内容at a specified revision :
git show <revision>:<file>
Beyond Compare seem通过在命令中添加
-
来接受标准输入作为输入。
结合这些,假设你在 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
关于git - 使用 git hooks 为当前提交更改的每个文件创建差异报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107785/