16

我的 git 存储库中有许多模板文件,它们以不同的速率变化。这些然后用于生成 HTML 页面。如果有人报告了问题,我希望他们能够告诉我哪个版本的模板文件有问题。目前,我在更改日期时手动将日期输入到文件中。或者,好吧,我尝试。我大部分时间都忘记了。

至少在理论上,我应该能够使用 git smudge 和 clean 过滤器来修复文件并自动插入上次更新的日期。这会很棒。

除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器。

如何让污迹和清洁过滤器出现在另一台机器上?我不想在路径中添加奇怪的脚本;这只需要这个存储库,所以我想让它完全独立。网上的所有内容都说“将此过滤器定义添加到您的 ~/.gitconfig,然后将这些脚本添加到您的路径,然后设置存储库 .gitattributes 文件”。我想要它,这样如果我去一台新计算机并克隆存储库,所有的清洁和涂抹都会自动配置。

有人做过吗?

4

2 回答 2

4

如 中所述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是你的回购的一部分,所以没有什么可做的。

使用该设置,您可以“转到新计算机并克隆存储库,所有清洁和涂抹都是自动配置的”。
(前提是新计算机预先填充了模板目录)

于 2016-06-15T07:07:11.460 回答
0

Specify a template that does what you want when cloning, or supply a repo-setup script and type sh repo-setup after cloning, or put the necessary commands in a paragraph in the README and say V}!sh or however your editor pipes commands through the shell, or use git archive for distribution rather than git push, since that supports arbitrary keyword substitution. Turning a bare git clone into a code-injection vector seems like a bad price to pay to avoid trivial inconveniences like this.

于 2016-06-15T04:04:40.247 回答