我的git存储库中有许多模板文件,它们以不同的速率变化。然后使用它们来生成HTML页面。如果有人报告问题,我希望他们能够告诉我哪个版本的模板文件有问题。目前,当我更改日期时,我会手动在文件中输入日期。或者,我会尝试输入。大多数时候我都忘记了。
至少在理论上,我应该能够使用git污迹和clean过滤器来修复文件并自动插入上次更新的日期。这太好了。
除了我在一台机器上开发,当我准备好时,我会推/拉到另一台机器。
如何让污迹和干净的过滤器显示在另一台机器上?我不想在路径中添加奇怪的脚本;这只需要一个存储库,所以我想让它完全独立。网上的所有内容都说"将这个过滤器定义添加到~/.gitconfig中,然后将这些脚本添加到您的路径中,然后设置存储库.gitattributes文件"。我想要它,这样,如果我去一台新计算机并克隆存储库,所有的干净和污迹都会自动配置。
有人这样做过吗?
如git clone
中所述,您可以设置一个模板目录来声明这些配置
即模板文件夹将具有最小的.gitconfig
,带有那些污迹/清洁指令:
filter.manage_date.smudge ${GIT_TEMPLATE_DIR}/smudge-script
filter.manage_date.clean ${GIT_TEMPLATE_DIR}/clean-script
只需设置(导出)一个引用该模板文件夹的GIT_TEMPLATE_DIR
环境变量。
通过使用以${GIT_TEMPLATE_DIR}
开头的绝对路径,您不需要将这些脚本添加到$PATH
中。脚本路径可能因机器而异:每台机器都可以有自己的${GIT_TEMPLATE_DIR}
路径。
最后,.gitattributes
是回购的一部分,所以没有什么可做的。
使用该设置,您可以"转到一台新计算机并克隆存储库,所有的清洁和污迹都会自动配置。"
(前提是新计算机的模板目录已预先填充)
指定一个在克隆时执行所需操作的模板,或者提供一个repo-setup
脚本并在克隆后键入sh repo-setup
,或者将必要的命令放在自述文件的一段中,例如V}!sh
,或者您的编辑器通过shell管道传输命令,或者使用git archive
而不是git push
进行分发,因为它支持任意的关键字替换。将一个裸露的git clone
变成代码注入向量似乎是为了避免这种琐碎的不便而付出的糟糕代价。