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

问题描述 投票:0回答:2

我从事的项目中版权标题是强制性的。所有文件都有它们,但最近标题的指导方针发生了变化,因此需要更新。我正在 Linux 平台上工作(但也可以通过 Windows 访问文件)。有些文件有新的标题(但需要在年份字段中更新),有些文件有旧的标题,有些文件的标题非常粗略,不符合标准(是的,不幸的是它们通过了审查),有些则没有根本没有(是的,这些也通过了审查)。

因此我有三个要求:

  1. 将旧标题更改为更新的标题,以及更新的年份

  2. 对于那些有新标题的人,他们的日期(更准确地说是年份)需要更新。

  3. 为那些没有的标题添加标题

我不想对项目中的所有文件执行此操作,而只想对我为修复而更改的文件执行此操作。换句话说,只有 git status 输出中显示的文件。更新日期时可能出现的情况是:

  1. 2011-2014, 2016 ==> 2011-2014,2016-2017
  2. 2011-2012, 2014-2015 ==> 2011-2012, 2014-2015, 2017
  3. 2011-2016 ==> 2011-2017
  4. 2011-2017 ==> 没有变化

还有项目中的.java、.cpp、.c、.h和.xml文件。

我看到了this,但它似乎只添加了标题。我对 sed 和 awk 不太精通。我经历了 this 但它假设所有文件都有一个标准的开始,而 this 但它也涉及一个公共标头。可以这样做吗?

编辑:我接受了@Hoall的回答并手动完成,因为现在使用 sed 似乎太麻烦了!

git copyright-display
2个回答
1
投票

在linux下你可以做这样的事情:

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

用 sed、awk 等替换 echo 命令,以替换文件中的完整标头。

编辑:

有关 sed 部分,请参阅 sed:替换文本块


0
投票

我曾经合并了一个在 gem5 项目上执行此操作的脚本:

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

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

我实际上应该把它作为一个单独安装的 CLI 来完成,而不是将它放入 gem5 中,这样会帮助很多人。也许有一天我会的。

相关:

© www.soinside.com 2019 - 2024. All rights reserved.