我正在设置Gitolite服务器,但有严格的限制。 Gitolite文档很好,但是我认为如果我正在做的是好的方法,我仍然需要一些建议。
用户只能访问master分支。他们不能创建任何分支或标签。另外,我也想防止强行推动。用户只能做简单的提交。
我不确定是否可以做到
repo foo
RW+ = @sync
RW master = user
需要触发触发器或通过其他方式通知服务更改并保持数据库同步。
提交后获取diff的更好方法是什么。我需要同步数据库中的所有提交。我能想到的一种方法是使用@sync这样的用户将仓库克隆到tmp dir并运行git diff。有更好的方法来做到这一点吗?
答案 0 :(得分:1)
您可以添加自己的update hooks,也可以添加post-receive hook
将此行添加到
rc
块中的%RC
文件中(如果尚不存在的话),或者取消注释(如果已经存在并注释掉):
LOCAL_CODE => "$ENV{HOME}/local",
将您的钩子放入该目录的子目录“ hooks / common”中:
这种钩子(接收后)可以在其中进行git diff处理:请参见this example
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev
重点是:无需克隆存储库:每次推送后都会执行钩子。