在源代码的两个Git版本之间高效地比较生成的代码

在源代码的两个Git版本之间高效地比较生成的代码,git,code-generation,Git,Code Generation,假设答案是“否”,那么当源代码发生更改时(预期的或意外的)最好的解决方法是什么 在这种情况下 所有开发人员都有在本地执行代码生成的工具 代码生成速度很快 生成的文件很大 下面是一个Bash脚本,它可以比较以前版本和当前版本之间生成的单个文件: #/bin/bash-x #在当前版本和旧版本之间比较生成的文件。 # #如果我们的目的仅仅是为了 #检查生成代码中的更改,因为“diff”命令 #如果有更改,将返回“1”,提前终止此脚本。 # #但是,如果我们的目的是将此脚本用作预提交挂钩 #为了确保

假设答案是“否”,那么当源代码发生更改时(预期的或意外的)最好的解决方法是什么

在这种情况下

  • 所有开发人员都有在本地执行代码生成的工具
  • 代码生成速度很快
  • 生成的文件很大

下面是一个Bash脚本,它可以比较以前版本和当前版本之间生成的单个文件:

#/bin/bash-x
#在当前版本和旧版本之间比较生成的文件。
#
#如果我们的目的仅仅是为了
#检查生成代码中的更改,因为“diff”命令
#如果有更改,将返回“1”,提前终止此脚本。
#
#但是,如果我们的目的是将此脚本用作预提交挂钩
#为了确保生成的代码不会更改,我们应该
#启用“-e”标志并将“-quiet”选项添加到diff命令中
#(根据文档,这意味着“-exit code”选项)。
#XXX注意:前导“/”表示当前目录的相对路径
#对于下面的diff命令很重要。
文件名=./hellofile.txt
旧版本=头部~
#TODO将其替换为任何“构建步骤”,例如“make”
FILE\u PRODUCTION\u COMMAND='eval echo“hello$(git rev parse--short HEAD)”>$FILENAME'
#隐藏整个工作树,包括构建工件
吉特藏起来了
#生成要比较的衍生内容的现代版本
$FILE\u PRODUCTION\u命令
#将文件标记为应保存在存储库中的内容
#--force命令用于在.gitignore文件中标记文件的情况
git add--force$FILENAME
#保留该文件以供以后比较
暂存
#移到源代码的旧版本
git checkout$OLD\u修订版
#生成要比较的衍生内容的旧版本
$FILE\u PRODUCTION\u命令
#启动文本或图形差异查看器以查看派生内容中的更改
#我们使用“-R”选项是因为我们已经隐藏了更新的内容。
git diff-R stash@{0}:$FILENAME--$FILENAME
#git difftool-R stash@{0}:$FILENAME--$FILENAME
#丢弃最近的藏品
吉特储藏液
#清理所有内容,包括被忽略的文件;叶子完全原始
git clean-fxd$(git rev parse--显示顶级)
#回到现代版本的源代码
git签出-
#恢复原始工作树,包括构建工件

git stash pop
下面是一个Bash脚本,它可以比较以前版本和当前版本之间生成的单个文件:

#/bin/bash-x
#在当前版本和旧版本之间比较生成的文件。
#
#如果我们的目的仅仅是为了
#检查生成代码中的更改,因为“diff”命令
#如果有更改,将返回“1”,提前终止此脚本。
#
#但是,如果我们的目的是将此脚本用作预提交挂钩
#为了确保生成的代码不会更改,我们应该
#启用“-e”标志并将“-quiet”选项添加到diff命令中
#(根据文档,这意味着“-exit code”选项)。
#XXX注意:前导“/”表示当前目录的相对路径
#对于下面的diff命令很重要。
文件名=./hellofile.txt
旧版本=头部~
#TODO将其替换为任何“构建步骤”,例如“make”
FILE\u PRODUCTION\u COMMAND='eval echo“hello$(git rev parse--short HEAD)”>$FILENAME'
#隐藏整个工作树,包括构建工件
吉特藏起来了
#生成要比较的衍生内容的现代版本
$FILE\u PRODUCTION\u命令
#将文件标记为应保存在存储库中的内容
#--force命令用于在.gitignore文件中标记文件的情况
git add--force$FILENAME
#保留该文件以供以后比较
暂存
#移到源代码的旧版本
git checkout$OLD\u修订版
#生成要比较的衍生内容的旧版本
$FILE\u PRODUCTION\u命令
#启动文本或图形差异查看器以查看派生内容中的更改
#我们使用“-R”选项是因为我们已经隐藏了更新的内容。
git diff-R stash@{0}:$FILENAME--$FILENAME
#git difftool-R stash@{0}:$FILENAME--$FILENAME
#丢弃最近的藏品
吉特储藏液
#清理所有内容,包括被忽略的文件;叶子完全原始
git clean-fxd$(git rev parse--显示顶级)
#回到现代版本的源代码
git签出-
#恢复原始工作树,包括构建工件
git隐藏流行音乐