.gitattributes作为仓库的一部分,包含了smudge和clean过滤器。

18
我在git存储库中有许多模板文件,它们以不同的速率变化。这些文件用于生成HTML页面。如果有人报告问题,我希望他们能告诉我哪个版本的模板文件出了问题。目前,当我更改文件时,我手动输入日期。或者说,我尽力而为,但大多数时间我都会忘记。
理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入最后更新日期。这将非常好。
但是,我在一台机器上进行开发,并且在准备就绪时,我会推送/拉取到另一台机器上。
我如何使smudge和clean过滤器显示在另一台计算机上?我不想添加奇怪的脚本到路径中;这仅针对此存储库需要,因此我希望使其完全自包含。所有在线内容都说“将此过滤器定义添加到~/.gitconfig中,然后将这些脚本添加到您的路径中,然后设置存储库.gitattributes文件”。我希望如果我去新的计算机并克隆存储库,则所有的clean和smudge都会自动配置。
有人做过吗?

你可以设置一个模板目录,这样你就可以传播你的配置设置。但是它将应用于所有的git仓库。https://dev59.com/p2Qn5IYBdhLWcg3wpoqp#16658321 - Klas Mellbourn
另一个很好的用例是将Jupyter(以前的IPython)笔记本放入git中,这需要过滤器来避免提交大量二进制数据作为输出更改。将过滤脚本作为仓库的一部分(或者至少引用而不需要额外的努力)使得共享和修改这些笔记本变得更加容易。 - Andrew Mao
2个回答

5
git clone所述,您可以设置一个模板目录,其中将声明这些配置。
也就是说,该模板文件夹应具有带有这些smudge/clean指令的最小.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是您的存储库的一部分,因此无需进行任何操作。

有了这个设置,您可以“去到一个新的计算机并克隆存储库,所有干净和污点都会自动配置。”
(前提是新计算机已经预先填充了其模板目录)


0

在克隆时指定一个模板来执行所需操作,或提供一个 repo-setup 脚本并在克隆后输入 sh repo-setup,或将必要命令放在 README 的段落中,并说 V}!sh 或使用编辑器将命令通过 shell 进行传递,或者使用 git archive 进行分发而不是 git push,因为它支持任意关键字替换。将裸的 git clone转化成代码注入向量似乎是个低效的代价,以避免这些微不足道的不便。


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