【问题标题】:.gitattributes smudge and clean filters as a part of the repository.gitattributes 涂抹和清洁过滤器作为存储库的一部分
【发布时间】:2014-09-30 16:22:43
【问题描述】:

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

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

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

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

有人做过吗?

【问题讨论】:

  • 你可以设置一个模板目录。这样你就可以传播你的配置设置。但这将适用于所有 git repos。 stackoverflow.com/questions/16658087/…
  • 另一个很好的用例是putting Jupyter (formerly IPython) notebooks in git,它需要过滤器来避免在输出更改时提交二进制数据负载。将过滤器脚本作为 repo 的一部分(或至少在不需要任何额外的麻烦的情况下被引用)使得共享和修改这些 notebook 变得更加容易。

标签: git gitattributes


【解决方案1】:

git clone 中所述,您可以设置一个template directory 来声明这些配置。
即该模板文件夹将有一个最小的.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 是你的回购的一部分,所以没什么可做的。

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

【讨论】:

    【解决方案2】:

    指定一个模板在克隆时执行您想要的操作,或者提供一个repo-setup 脚本并在克隆后输入sh repo-setup,或者将必要的命令放在自述文件的一个段落中并说V}!sh,或者您的编辑器管道通过 shell 命令,或者使用git archive 进行分发而不是git push,因为它支持任意关键字替换。将一个裸露的git clone 转换为代码注入向量似乎是为了避免此类琐碎的不便而付出的糟糕代价。

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      相关资源
      最近更新 更多