Git:任何方式我都可以防止*大多数*用户编辑文件?

时间:2015-08-31 23:38:28

标签: git github

在我们的Git存储库中,我们有大约十个非常重要的文件。这些文件被许多其他文件引用,因此如果它们被移动则会中断。但是由于我们如何设置我们的开发环境,不会立即检测到这种破坏,所以会发生什么:1)开发人员移动一个重要文件,2)他们推送提交,3)几天后我们的系统管理员得到清理混乱。

为了防止这种情况,我们非常希望找到一种方法来限制我们的Git repo,以便只有某些用户才能更改这些文件。但是,我尝试过搜索Stack Overflow,到目前为止,我发现的唯一解决方案是预提交挂钩(或者我们无法使用的工具,因为我们有GitHub,而不是我们自己的Git安装)。

预先提交挂钩(让每个人都可以使用,并且很容易被禁用)是强制执行此类操作的唯一方法吗?或者还有其他方法可以限制用户在Git中对某些文件的更改吗?

2 个答案:

答案 0 :(得分:3)

你的开发团队有多大?听起来像最简单的解决方案是:

  1. 清除与开发团队的沟通,不要更改这些文件。
  2. 正如@Basile Starynkevitch所提到的,构建时检查可以快速发现变化
  3. 如果需要,可以使用git pre-commit钩子。是的,这很容易解决,但要做到这一点,他们必须明确反对与他们沟通的内容。
  4. 当有人忘记并更改文件时,提醒不要羞辱团队。
  5. 替代解决方案
    将文件放在一个单独的git存储库中,并为团队的大多数人提供只读访问权限。

答案 1 :(得分:1)

Github中没有每个文件的权限。其他一些系统如gitolite似乎也支持它。

您可以使用custom hook烹饪自定义解决方案并自动恢复违规提交,但我不建议这样做。

确保开发人员不破坏存储库是buildfarm / continuous integration(参见Travis)的角色,而不是Git。

这里最好的解决方案是设置一个测试套件来检查这种事情并确保开发人员在发送请求审核之前都运行它,并且您的CI系统也在运行它以确保您不合并任何不起作用的东西。有了这个,你几乎不会再遇到这个问题了。