更新项目中已更改文件的版权标题

rsaldnfx  于 2022-10-23  发布在  Git
关注(0)|答案(2)|浏览(146)

我在一个版权标题是强制性的项目上工作。所有文件都有它们,但最近标头的指南发生了变化,因此需要更新。我在Linux平台上工作(但文件也可以通过Windows访问)。有些文件有新的标题(但需要在年份字段中更新),有些文件有旧的标题,有些文件以非常粗糙的方式不符合标准(是的,他们不幸地通过了审查),有些根本没有(是的。
因此,我有三个要求:
1.将旧标题更改为更新的标题,以及更新的年份
1.对于那些有新标题的标题,其日期(更准确地说是年份)需要更新。
1.将标题添加到没有标题的标题中
我不想对项目中的所有文件都这样做,只想为修复而更改这些文件。换句话说,只有文件显示在git状态的输出中。更新日期时可能出现的情况包括:

  1. 2011-2014, 2016 ==> 2012-2014,2016-2017
  2. 2011-2012, 2014-2015 ==> 2011-2012, 2014-2015, 2017
  3. 2011-2016 ==> 2012-2017
    1.2011-2017==>无变化
    它也是项目中的.java、.cpp、.c、.h和.xml文件。
    我看到了this,但它似乎只添加了标题。我对sed和awk不太精通。我检查了this,但它假设所有文件和this都是标准的开头,但它也包含一个公共头。有可能做到这一点吗?
    编辑:我接受了@Hoall的回答,并手动完成了,因为现在使用sed似乎太麻烦了!
qeeaahzv

qeeaahzv1#

在linux下,你可以这样做:

for i in `git diff --name-only --cached`; do echo $i; done

将echo命令替换为sed、awk左右,以替换文件中的完整标头。
编辑:
sed零件见sed: replace a block of text

0h4hbjxa

0h4hbjxa2#

我曾经在gem5项目中合并了一个脚本:

该设置通过其Python接口使用git-filter-repo。它:

  • 检查范围内的每个提交
  • 使用一个简单的Python正则表达式修改每个文件的版权,将版权标题年份更新为当前年份
  • 分别修改每个提交。

我实际上应该把它作为一个可单独安装的CLI来做,而不是把它放到gem5中,这样会帮助很多人。也许有一天我会的。
相关:

相关问题