2

我正在开发一个受旧版权保护的项目,我正在努力提出一个放弃版权的好案例,因为多年来该项目发生了重大变化。

(别担心,不偷东西,我正在收集一个案例让版权所有者同意我的观点)。

因此,真正有帮助的是准确统计项目的两个版本之间没有变化的内容。

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

4

1 回答 1

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

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

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

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

于 2013-01-12T20:27:48.197 回答