有没有什么为什么强制用户不要更改.gitignore文件。我的意思是让我们说有人会改变或删除这个文件并推送这个改变。防止用户更改.gitignore文件?
回答
您可以在服务器端设置预接收挂钩,如果修改了.gitignore
,则拒绝推送。
Git是分散的。一旦有人克隆了回购,它完全在他们的控制之下,包括.gitignore
文件。
什么你可以要做的就是防止用户通过使用Git hook用于检查指定的文件类型,并拒绝用户推到某些文件推送到服务器。
请阅读pre-receive hooks。并编写一个脚本来搜索给定的文件类型。
检查您的回购.git/hooks
会有一个示例文件列表,告诉您如何处理它。还请阅读this article以避免容易犯的错误。
编辑
我没有任何好处的shell脚本,但这里是不允许.php然后.css文件并告诉用户中止前一个小脚本。它位于.git/hooks/pre-receive
。请记住使其可执行(chmod +x
),否则它将无法工作。
#!/bin/sh
while read oldrev newrev refname
do
if [[ `git diff-tree --no-commit-id --name-only -r $newrev | grep -e 'css\|php'` != "" ]]
do
echo "Cannot push this"
exit 1;
fi
end
随着,预接收钩被称为VREFS(Virtual Refs,也listed here):不设置一个直接在由gitolite管理回购通过在VREF
目录添加VREF预接收钩,做到这一点gitolite-admin
回购,而Gitolite会将其推广到回购。
“restricting pushes by dir/file name”部分说明如何通过更改的目录和文件的名称限制推送。
这是你不需要添加到VREF
目录的一个VREF,实际上(它是由Gitolite管理的更新挂钩的一部分,对于二级更新挂钩,see here)。
因此,修改gitolite-admin
回购中的gitolite.conf
,并将该管理回购推回到gitolite服务器就足够了。
repo foo
RW+ = @senior_devs
RW = @junior_devs
- VREF/NAME/Makefile = @junior_devs
这很酷,它的作用就像一个魅力:P Thx非常。我还有一个问题有点偏离主题,您能否建议我使用GIT与QA团队和代码审查人员在开发,测试,分期和生产服务器环境中进行良好的工作流程? – 2013-02-15 10:55:50
@MarceliPo git-flow是当前的标准,并且是一个很好的起点(http://stackoverflow.com/a/12927985/6309) – VonC 2013-02-15 14:20:13
@MarceliPo,如果这回答了你的问题,你可以把它标记为正确的回答,以便其他访问者知道,并且VonC会得到适当的归属? :) – Swivel 2013-10-10 16:34:22
- 1. 防止用户更改
- 2. 防止用户更改文本文件中的特定行
- 3. 防止弹簧连接文件被用户更改
- 4. 如何防止用户手动更改文件?
- 5. C#,如何防止用户更改文件夹权限?
- 6. 防止用户更改输入法
- 7. 如何防止用户更改窗口
- 8. 防止用户更改DataGrid的SelectedItem
- 9. 防止用户更改为字体
- 10. 防止文件被删除和更改
- 11. 有条件防止文本框更改
- 12. 防止用户更改asp.net文本框中的某些文本
- 13. 防止用户篡改html
- 14. 使用.gitignore防止分支误用
- 15. .gitignore不会停止在文件中跟踪更改
- 16. 防止DateTime更改
- 17. 防止UISegmentedControl更改
- 18. 防止用户更改他们的电子邮件别名
- 19. 如何防止用户更改/删除其他用户数据
- 20. Devise/Rolify/CanCan 2.0:防止用户更改用户角色
- 21. 防止用户查看JavaScript文件
- 22. 如何通过终端编辑.gitignore文件/更改.gitignore文件规则
- 23. 文件验证,防止C++中的文件更改
- 24. 防止更改文本框的值
- 25. 防止用户
- 26. 防止用户
- 27. 防止用户
- 28. 防止使用Javascript更改文件输入(jQuery)
- 29. BootstrapToggle如何防止更改事件
- 30. 防止更改事件的默认值
如果你在本地文件系统层面讲,有可能是设置'chmod'到Git的工作目录中的文件的方式,但在git仓库的水平,可能没有任何办法做到那。 – ConcurrentHashMap 2013-02-13 14:11:32
那么我使用gitolite来管理对回购的访问。 – 2013-02-13 14:16:40
当您使用Gitolite管理回购站时,我不会推荐挂钩。看到我的答案。 – VonC 2013-02-13 14:28:45