我有一个svn本地存储库,我的目标是将其转换为git。
我遵循了本教程:http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git(部分Subversion) 对于最后一个命令,我做到了:
$ git remote add origin .
$ git push origin --all
already up to date
$ git push origin --tags
already up to date
我需要就最后的事情提出一些建议:
我需要为一个用户(admin)阻止master分支。 我需要为dev创建分支,我的意思是,一个dev克隆这个rep并得到分支主人和所有dev分支,他只能推送他的dev分支。
现在,当我克隆我只有主分支,甚至不能推它(裸问题)。
这个git rep必须可以被很多开发人员访问,他们可以提交并推送他们的分支和管理员在master上合并。
答案 0 :(得分:1)
其他感谢使用 gitolite 等外部软件,您可以使用服务器端挂钩。
在您的情况下,您可以使用pre-receive
或update
挂钩。
pre-receive
是处理来自客户端的推送时运行的第一个脚本。它需要一个从stdin推送的引用列表;如果它退出非零,则不接受任何一个。
update
脚本与预接收脚本非常相似,只是它为推送器尝试更新的每个分支运行一次。如果推送器试图推送到多个分支,则预接收仅运行一次,而更新每个分支运行一次,他们正在推送。此脚本不是从stdin读取,而是采用三个参数:引用的名称(分支),引用前引用的SHA-1以及用户尝试推送的SHA-1。如果更新脚本退出非零,则仅拒绝该引用;其他参考文献仍然可以更新。
我建议您继续阅读http://git-scm.com/book/en/Customizing-Git-An-Example-Git-Enforced-Policy,当然还有http://git-scm.com/docs/githooks.html上的手册页
答案 1 :(得分:0)
Git本身不提供每用户访问控制。您需要使用一些其他软件,例如Gerrit,Gitorious或其他类似的软件。