Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.gittributes污迹和清除过滤器作为存储库的一部分_Git_Gitattributes - Fatal编程技术网

.gittributes污迹和清除过滤器作为存储库的一部分

.gittributes污迹和清除过滤器作为存储库的一部分,git,gitattributes,Git,Gitattributes,我的git存储库中有许多模板文件,它们以不同的速率变化。然后,它们被用来生成HTML页面。如果有人报告问题,我希望他们能够告诉我模板文件的哪个版本有问题。目前,我在更改文件时手动将日期输入到文件中。或者,好吧,我试着。我大部分时间都忘了 至少在理论上,我应该能够使用git smudge和clean过滤器来修复文件并自动插入上次更新的日期。这太好了 除了我在一台机器上开发,当我准备好时,我推/拉到另一台机器上 如何让污迹和干净的过滤器显示在另一台机器上?我不想在路径中添加奇怪的脚本;这只是这一个存

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

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

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

如何让污迹和干净的过滤器显示在另一台机器上?我不想在路径中添加奇怪的脚本;这只是这一个存储库需要的,所以我想让它完全独立。所有联机内容都会显示“将此筛选器定义添加到~/.gitconfig,然后将这些脚本添加到路径,然后设置repository.gittributes文件”。我希望这样,如果我转到一台新计算机并克隆存储库,所有的清理和涂抹都会自动配置


有人这样做过吗?

指定一个模板,在克隆时执行您想要的操作,或者提供一个
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的一部分(或者至少在不需要任何额外润滑脂的情况下引用)可以使共享和修改这些笔记本变得更加容易。