是否有自动更新源文件中元数据的工具?



我有一个 git 存储库,包括大约一百个 .cpp 和 .h 文件。每个文件都有一个包含许可证数据的短标题。我想用几行元数据来扩展这部分,以显示上次创建和修改特定文件的日期。

是否有在不与 git 冲突的情况下自动管理此功能的好做法?

使用 git 过滤器。Git Book 有一个例子正是这样做的。请参阅 https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes,从"另一个有趣的示例获得$Date$关键字扩展,RCS样式"开始。

有两个过滤器,一个用于在将数据添加到提交之前过滤数据(清理过滤器(,另一个用于从提交到工作树中签出文件(涂抹过滤器(。获取脚本并配置筛选器:

$ git config filter.dater.clean clean_date
$ git config filter.dater.smudge expand_date

这可以通过 git 钩子来完成。

假设您的所有文件都遵循一个模板。 例如:

/**
* Some license information
*
* Last update: Thu, Jun 28, 2018  8:19:47 PM
*/
// Code comes here...

使用简单的脚本.git/hooks/pre-commit创建一个可执行文件,以替换"上次更新:"行:

#!/bin/sh
d=$(date)
git diff --cached --name-only --diff-filter=ACM | 
xargs sed -i "s/* Last update:.*/* Last update: $d/"

相关内容

最新更新