有没有办法在git中跟踪文件的不变状态?

时间:2017-04-25 17:01:12

标签: git

我处于git repo的情况下,我希望保持文件不变,除非开发人员在更改文件时明确知道他们正在做什么。

我们在回购邮件中有一个Drupal网站,其中包含我们不想更改的自定义robots.txt。更新Drupal核心涉及解压缩tarball。这意味着我们的自定义robots.txt将替换为库存Drupal robots.txt。由于Drupal核心更新被批量接受(它们主要是安全更新),可能有些粗心的开发人员会不小心覆盖我们的robots.txt

这不是你在Pull Request中提到的东西,因为核心更新中有许多文件会发生变化,你不会全部审查这些文件。我发布了another question,但答案涉及仅限本地的回购/环境变更,并且不会在回购中跟踪。 我已经做了更多的研究,这是我迄今为止所发现的:

  • skip-worktree仅限本地酒店;没跟踪。
  • assume-unchanged仅限本地酒店;没跟踪。
  • .gitignore - 我尝试取消删除文件,忽略它,然后--force添加它。当我做出改变时,git仍然看到了它们。这不是解决方案。
  • 回购中未跟踪
  • 挂钩。您可以将它们配置为要跟踪,但这需要设置本地环境以便他们开始工作,如果我们要这样做,为什么不只是设置skip-worktree或其他内容。< / LI>

目前还没有办法在执行额外的本地配置之外阻止文件的更改从repo本身内的提交(在显式/额外步骤之外,如交换机)之外?

我发布这个问题的原因是因为我试图给我的经理一个明确的&#34;不,我们无法在回购中跟踪这些信息。我们将不得不在开发人员的环境中进行额外配置。&#34;

我在Windows上的git-bash中使用git 2.12.0.windows.1

2 个答案:

答案 0 :(得分:2)

如果您正在托管自己的仓库(而不是使用github),您可以在中央仓库上写一个<build> <pluginManagement> <plugins> <plugin> ... </plugin> <plugin> ... </plugin> .... </plugins> </pluginManagement> </build> 挂钩来检测这个。它会检查引入修改受保护文件的提交并拒绝它们的推送。

这有点次优,因为在开发人员完成她的本地仓库工作之前,它不会检测到这种情况,并且需要一些深奥的git-fu(如pre-receive和{{1} })在重试推送之前修复本地提交。

答案 1 :(得分:0)

答案是

无法阻止文件正常更改,并告诉git跟踪该状态。

所有解决方案都涉及本地环境设置或远程仓库上的设置。