寻找一种方法来计算两次提交之间没有改变的行数

时间:2013-01-12 18:37:40

标签: git version-control diff

我正在开发一个版权较低的项目,而我正在尝试放弃版权,因为该项目多年来发生了重大变化。

(别担心,不要偷东西,我正在收集案件让版权所有者同意我的意见。)

那么真正有用的是对项目的两个版本之间未发生变化的准确统计。

我正在使用git,而我无法找到解决方案..

1 个答案:

答案 0 :(得分:1)

我找到了一种方法,但它不是本机git。它使用标准的 diff 命令和bash扩展。反正

如果对于一个文件,您可能需要编写脚本来为每个文件执行此操作。它不处理文件重命名,它依赖命令diff来解决差异。

获取文件 originalfile 的原始行数。在我的例子中,原始文件只是两个提交,但任何refspec都可以工作,也许确切的哈希是最好的。

git show HEAD^^:originalfile | wc

然后使用此魔术线获得仍未更改的行数

diff --unchanged-group-format='%<' --old-group-format='' --new-group-format='' --changed-group-format='' <(git show HEAD^^:original_file) <(git show HEAD:original_file) | wc

我会解释一下。首先,我们将未更改组格式的格式设置为实际行(%&lt;),将所有其他组(旧,新和更改)设置为空(甚至不是新行)。

然后我们使用bash扩展名&lt;(命令)首先管道原始版本,然后管道文件的当前版本到diff。也可以比较两个结账。它通过管道传输到 wc 来计算行数。

更改的行数只是我们已经得到的减法。