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

Update copyright headers across changed files in a project

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

因此我提出了三个要求:

  1. Change the old headers to the updated headers, along with updated years

  2. For those which have new headers, their date(more precisely year) needs to be updated.

  3. Add headers to those that don't have any

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

  1. 2011-2014, 2016 ==> 2012-2014,2016-2017
  2. 2011-2012, 2014-2015 ==> 2011-2012, 2014-2015, 2017
  3. 2011-2016 ==> 2012-2017
  4. 2011-2017 ==> No change

也是项目中的.java、.cpp、.c、.h和.xml文件。

我看到了this but it only appears to add headers. I am not too proficient in sed and awk. I went through this but it assumes a standard start of all files and ,但它也涉及到一个常见的header。可以这样做吗?

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

在 linux 下你可以这样做:

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

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

编辑:

有关 sed 部分,请参阅 sed: replace a block of text