.gittributes污迹和清除过滤器作为存储库的一部分
我的git存储库中有许多模板文件,它们以不同的速率变化。然后,它们被用来生成HTML页面。如果有人报告问题,我希望他们能够告诉我模板文件的哪个版本有问题。目前,我在更改文件时手动将日期输入到文件中。或者,好吧,我试着。我大部分时间都忘了 至少在理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入上次更新的日期。这太好了 除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器上 如何让污迹和干净的过滤器显示在另一台机器上?我不想在路径中添加奇怪的脚本;这只是这一个存储库需要的,所以我想让它完全独立。所有联机内容都会显示“将此筛选器定义添加到~/.gitconfig,然后将这些脚本添加到路径,然后设置repository.gittributes文件”。我希望这样,如果我转到一台新计算机并克隆存储库,所有的清理和涂抹都会自动配置.gittributes污迹和清除过滤器作为存储库的一部分,git,gitattributes,Git,Gitattributes,我的git存储库中有许多模板文件,它们以不同的速率变化。然后,它们被用来生成HTML页面。如果有人报告问题,我希望他们能够告诉我模板文件的哪个版本有问题。目前,我在更改文件时手动将日期输入到文件中。或者,好吧,我试着。我大部分时间都忘了 至少在理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入上次更新的日期。这太好了 除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器上 如何让污迹和干净的过滤器显示在另一台机器上?我不想在路径中添加奇怪的脚本;这只是这一个存
有人这样做过吗?指定一个模板,在克隆时执行您想要的操作,或者提供一个
repo设置
脚本并在克隆后键入sh repo设置
,或者在自述文件的一段中输入必要的命令并说V}!sh
或者您的编辑器通过shell传递命令,或者使用git-archive
进行分发,而不是git-push
,因为它支持任意关键字替换。将一个裸的git克隆
转换成代码注入向量似乎是一个不好的代价,以避免像这样的琐碎不便。如中所述,您可以设置一个声明这些配置的程序。Ie该模板文件夹将有一个最小的
.gitconfig
,带有这些污迹/清除指令:
filter.manage_date.smudge ${GIT_TEMPLATE_DIR}/smudge-script
filter.manage_date.clean ${GIT_TEMPLATE_DIR}/clean-script
只需设置(导出)引用该模板文件夹的GIT\u TEMPLATE\u DIR
环境变量
通过使用以${GIT\u TEMPLATE\u DIR}
开头的绝对路径,您无需将这些脚本添加到$path
。而且脚本路径在不同的机器上可能有所不同:每台机器都有自己的${GIT_TEMPLATE_DIR}
路径
最后,.gittributes
是您的回购协议的一部分,因此无需执行任何操作
通过该设置,您可以“转到一台新计算机并克隆存储库,所有的清理和涂抹都将自动配置。”(前提是新计算机预先填充了模板目录)您可以设置模板目录。这样您就可以传播您的配置设置。但这对所有的git回购都是如此。另一个好的用例是,它需要过滤器来避免在输出更改时提交二进制数据。将过滤脚本作为repo的一部分(或者至少在不需要任何额外润滑脂的情况下引用)可以使共享和修改这些笔记本变得更加容易。