svn - git 是否有类似 `svn propset svn:keywords` 或提交前/提交后的 Hook ?

标签 svn git version-control

浏览 git 文档,我看不到任何类似于 SVN 的提交 Hook 或“propset”功能的东西,例如,只要提交到存储库,就可以更新文件中的版本号或版权声明。

是否期望 git 用户为此类功能编写外部脚本(这似乎不是不可能的),还是我只是错过了一些明显的东西?

编辑:为了清楚起见,我更感兴趣的是,例如,

svn propset svn:keywords "Author Date Id Revision" expl3.dtx

像这样的字符串:

$Id: expl3.dtx 780 2008-08-30 12:32:34Z morten $

每当发生提交时,相关信息都会保持最新。

最佳答案

我写了一个fairly complete answer到别处,代码显示如何做到这一点。总结:

  1. 你可能不想这样做。使用 git describe 是一个合理的选择。
  2. 如果您确实需要这样做,$Id$$Format$ 非常简单。
  3. 任何更高级的东西都需要使用 gitattributes 和自定义过滤器。我提供了 $Date$ 的示例实现。

基于钩子(Hook)函数的解决方案通常没有帮助,因为它们会使您的工作副本变脏。

关于svn - git 是否有类似 `svn propset svn:keywords` 或提交前/提交后的 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742/

相关文章:

svn - 如何避免Subversion中的复杂合并?

java - SVNKit - 获取修改以提交

eclipse svn "The working copy needs to be upgraded"

git - 从多个 git rebases 中恢复 'old commits'

Git:从源代码控制的文件中删除回车符

version-control - Mercurial/Kiln 如何在不影响其他文件的情况下获取已删除的文件?

c++ - 用于在结帐/更新时重命名成员变量的 svn 脚本

git - 如何使用 SmartGit 从以前的 svn 修订版创建分支?

laravel - 来自 AWS Codecommit 的克隆存储库

git - 如何在 Gitlab 中查找给定推送事件的 IP 地址