Git能否自动将提交日期存储在文件中?

3

我可以帮助你翻译。我有一些文本文件在git控制下。这些文件包括一行文本,如下所示:

Date of this revision: 23.05.2021

在文件提交时,是否可以让git自动更新?我知道版本控制系统(如RCS)可以做到这一点,但我还没有找到在git中实现的方法。


1
@evolutionxbox 因为该文件显示为网页文件,用户需要能够看到信息最后更新的时间。 - oz1cz
1
查看该文件的用户。它是HTML。是的,我可以编写提取git存储库中信息的PHP代码,但如果信息已经存在那将更容易。其他版本控制系统提供此功能,肯定也有一种方法在git中实现它。 - oz1cz
1
可能吧,但这仍然不会将信息存储在显示给用户的文件中。如果在git中无法实现这一点,那就直说吧。 - oz1cz
1
预提交钩子怎么样?别为了天堂的缘故变得狂躁。 - matt
1
请参阅https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes和https://git-scm.com/docs/gitattributes#_filter中的“关键字扩展”。 - phd
显示剩余5条评论
1个回答

2
我认为的解决方案是编写一个git客户端钩子,通过编写一个pre-commit钩子来完成以下操作:
  1. 获取更改文件的列表。
  2. 查找您的头部注释以进行更新。
  3. 再次提交已更新的文件。
  4. 钩子返回成功,以便进行提交。
麻烦之处在于您必须在每个开发者机器上创建一个模板,以在每个git clone时初始化repo并使用钩子。
在这里https://www.omerkatz.com/blog/2013/5/23/git-hooks-part-2-implementing-git-hooks-using-python,您可以找到有关编写和管理钩子的大量信息。

1
谢谢。我认为这可能是必要的。我只是惊讶于这个功能,在其他版本控制系统中经常使用,却不是git的基本部分。 - oz1cz
2
将文件的“内容”更改以跟踪其修改日期会妨碍其他非常有用的功能,例如“合并”,“变基”和基于内容的哈希(对于git的存储至关重要)。 git将此信息存储在文件旁边(在提交数据中,您可以找到作者,提交日期...) - LeGEC
@LeGEC:我认为(其他版本控制系统可能适用或不适用的)窍门是在合并变基或基于内容的散列时将静态占位符视为内容。也就是说,在工作副本中保存的具体文件可能包含例如$Date: 2023-02-10$$Date: 2022-12-31或其他任何内容;从版本控制系统的角度来看,该文件被视为如果该字符范围只是$Date$ - O. R. Mapper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接