我正在开发一个版权较低的项目,而我正在尝试放弃版权,因为该项目多年来发生了重大变化。
(别担心,不要偷东西,我正在收集案件让版权所有者同意我的意见。)
那么真正有用的是对项目的两个版本之间未发生变化的准确统计。
我正在使用git,而我无法找到解决方案..
答案 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 来计算行数。
更改的行数只是我们已经得到的减法。