Git svn配置本地存储库

时间:2014-04-28 21:21:09

标签: git svn version-control github master

我有一个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上合并。

2 个答案:

答案 0 :(得分:1)

其他感谢使用 gitolite 等外部软件,您可以使用服务器端挂钩

在您的情况下,您可以使用pre-receiveupdate挂钩。

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或其他类似的软件。