我从事的项目中版权标题是强制性的。所有文件都有它们,但最近标题的指导方针发生了变化,因此需要更新。我正在 Linux 平台上工作(但也可以通过 Windows 访问文件)。有些文件有新的标题(但需要在年份字段中更新),有些文件有旧的标题,有些文件的标题非常粗略,不符合标准(是的,不幸的是它们通过了审查),有些则没有根本没有(是的,这些也通过了审查)。
因此我有三个要求:
将旧标题更改为更新的标题,以及更新的年份
对于那些有新标题的人,他们的日期(更准确地说是年份)需要更新。
为那些没有的标题添加标题
我不想对项目中的所有文件执行此操作,而只想对我为修复而更改的文件执行此操作。换句话说,只有 git status 输出中显示的文件。更新日期时可能出现的情况是:
- 2011-2014, 2016 ==> 2011-2014,2016-2017
- 2011-2012, 2014-2015 ==> 2011-2012, 2014-2015, 2017
- 2011-2016 ==> 2011-2017
- 2011-2017 ==> 没有变化
还有项目中的.java、.cpp、.c、.h和.xml文件。
我看到了this,但它似乎只添加了标题。我对 sed 和 awk 不太精通。我经历了 this 但它假设所有文件都有一个标准的开始,而 this 但它也涉及一个公共标头。可以这样做吗?
编辑:我接受了@Hoall的回答并手动完成,因为现在使用 sed 似乎太麻烦了!
在linux下你可以做这样的事情:
for i in `git diff --name-only --cached`; do echo $i; done
用 sed、awk 等替换 echo 命令,以替换文件中的完整标头。
编辑:
有关 sed 部分,请参阅 sed:替换文本块
我曾经合并了一个在 gem5 项目上执行此操作的脚本:
该设置通过其 Python 界面使用 git filter-repo 。它:
我实际上应该把它作为一个单独安装的 CLI 来完成,而不是将它放入 gem5 中,这样会帮助很多人。也许有一天我会的。
相关: