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

标签 git diff githooks git-diff beyondcompare

我正在尝试创建一个 git 钩子(Hook)来为我的代码和服务器代码之间发生变化的每个文件创建差异报告。

我见过的大多数解决方案都说使用 git 的 diff 命令来创建报告,但我需要为每个已更改的文件完成此操作,并且我需要以 beyond compare 的方式创建它,特别是作为并排 HTML 报告。

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

我对如何自动执行 beyond compare 来创建差异有一个粗略的了解,我只是不知道如何获取已更改的文件的路径以及远程文件的本地缓存路径已经改变了。

有没有人做过这样的事情?

编辑 - 我想使用 githooks,因为我想为每次提交自动生成 diff 文件,而无需任何人考虑。这是我们现在 checkin 流程的一部分(按照管理层的指示),手动为每个已更改的文件执行操作非常乏味。

最佳答案

  1. 列出更改的文件:

    git diff --name-only
    
  2. 打印文件内容at a specified revision :

    git show <revision>:<file>
    
  3. 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/

相关文章:

java - Java 中的 Git Diff 命令

git - 从 git diff 的短 SHA 中查找长 SHA

git - 使用预提交 Hook 在提交前修改文件

git - 尝试推送 git 并接收 "could not read Username for ' https ://github. com':终端提示已禁用”

git - 没有冲突的 git merge 是否可能会破坏应用程序功能?

git - perforce diff 到 git

git - 想要设置一个 Hook ,将提交的文件复制到特定文件夹

github 服务器端 git 钩子(Hook)(即预提交和后提交)

git - 如何找到删除了某些代码的 Git 提交?

php - 用于开发、测试、生产环境的 VCS