如何防止任何人修改git中的跟踪文件?

时间:2017-01-09 13:54:22

标签: git

SO上有多个问题和答案,解释了如何将文件添加到git存储库并忽略对它的所有未来更改。这通常通过update-index命令以及assume-unchangedskip-worktree选项之一来完成。

但是,这些命令仅对本地范围有效。我将对给定文件执行的更改将被忽略,并且不会显示在已暂存文件列表中。我想要的是防止任何人修改给定的文件。例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,并且我不希望它可以修改。怎么能实现呢?

1 个答案:

答案 0 :(得分:3)

  

例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,我不希望它可以修改。怎么能实现呢?

其他人的存储库是他们的。您可以控制存储库中发生的情况。他们控制着他们发生的事情。

您可以使用预接收挂钩审查推送到您的存储库的内容,该挂钩会扫描您不想要的内容的入站提交,例如:

#!/bin/sh -f
while read old new ref; do news="$news $new"; done
git rev-list $news --not --all | while read check; do
     [[ `git rev-parse $check:path/to/it` = `git rev-parse master:path/to/it` ]] \
     || { echo "path/to/it altered in commit $check; refusing push"; rc=1; }
done
exit $rc