在我们的Git存储库中,我们有大约十个非常重要的文件。这些文件被许多其他文件引用,因此如果它们被移动则会中断。但是由于我们如何设置我们的开发环境,不会立即检测到这种破坏,所以会发生什么:1)开发人员移动一个重要文件,2)他们推送提交,3)几天后我们的系统管理员得到清理混乱。
为了防止这种情况,我们非常希望找到一种方法来限制我们的Git repo,以便只有某些用户才能更改这些文件。但是,我尝试过搜索Stack Overflow,到目前为止,我发现的唯一解决方案是预提交挂钩(或者我们无法使用的工具,因为我们有GitHub,而不是我们自己的Git安装)。
预先提交挂钩(让每个人都可以使用,并且很容易被禁用)是强制执行此类操作的唯一方法吗?或者还有其他方法可以限制用户在Git中对某些文件的更改吗?
答案 0 :(得分:3)
你的开发团队有多大?听起来像最简单的解决方案是:
替代解决方案
将文件放在一个单独的git存储库中,并为团队的大多数人提供只读访问权限。
答案 1 :(得分:1)
Github中没有每个文件的权限。其他一些系统如gitolite似乎也支持它。
您可以使用custom hook烹饪自定义解决方案并自动恢复违规提交,但我不建议这样做。
确保开发人员不破坏存储库是buildfarm / continuous integration(参见Travis)的角色,而不是Git。
这里最好的解决方案是设置一个测试套件来检查这种事情并确保开发人员在发送请求审核之前都运行它,并且您的CI系统也在运行它以确保您不合并任何不起作用的东西。有了这个,你几乎不会再遇到这个问题了。