繁体   English   中英

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

[英]Using git hooks to create a diff report for every file that has changed for the current commit

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

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

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

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

有人做过这样的事吗?

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

  1. 列出已更改的文件:

     git diff --name-only 
  2. 在指定的版本中打印文件的内容:

     git show <revision>:<file> 
  3. Beyond Compare似乎通过添加-命令接受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

除了比较似乎不喜欢使用带有参数列表的文本中的管道,所以我最终得到这样的东西:

COUNTER=0
for f in $(git diff --name-only --cached); do
    git show HEAD:"$f" > tempRemote.dat
    "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe" "$f" tempRemote.dat "C:\output\output${COUNTER}.html" @"script.txt"
    rm tempRemote.dat
    ((COUNTER++))
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM