如何防止任何人在git中修改跟踪文件?
问题描述:
有多种问题,并解释如何将文件添加到一个Git仓库,而忽略未来这一切变化对SO答案。这通常是通过伴随的assume-unchanged
或skip-worktree
选项之一update-index
命令来完成的。如何防止任何人在git中修改跟踪文件?
但是,这些命令只对局部范围的效果。我将在给定文件上执行的更改将被忽略,并且不会显示在暂存文件列表中。我想要的是防止任何人修改给定的文件。例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,我不希望它是可修改的。这怎么可能完成?
答
例如,我可能会添加一个.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
使用服务器端挂钩,因为拒绝修改到有问题的文件。请参阅接受这个问题的答案http://stackoverflow.com/questions/27553551/how-can-i-mark-a-committed-file-as-read-only-in-git – U007D
除此之外,玩脏并设置文件权限,只有你可以写入,但任何人都可以阅读。 – CDove
通常人们通过一个名为'settings-example.properties'的文件来完成这个工作,在配置期间里面有指令拷贝到'settings.properties'中。 'settings-example.properties'被检入,而'settings.properties'包含在项目的'.gitignore'文件中。 –