在我的公司,我们使用SVN,但希望无缝将来切换到GIT。这就是为什么我开始学习git-svn,它有望成为svn存储库的前端。
我尝试使用以下设置:
要求是:
[ManyGitUsers]
许多giters可以克隆/推送到GITREPO [ManySvnUsers]
许多svners承诺使用SVNREPO [SyncHook]
同步可以通过钩子完成,也可以在开发钩子之前由管理员手动完成[NoInteraction]
giters不想知道有关SVNREPO的任何信息,反之亦然[NoProactivity]
用户在发生问题时解决所有问题(冲突);他们不与他人同步以避免他们问题:
到目前为止,我的实验表明它 moreless 有效,但是提交到SVNREPO会破坏与git同步的可能性。我只相信原因是我发出了错误的命令......
答案 0 :(得分:4)
git-svn有一种替代方案可以满足您的需求:SubGit。我正在研究SubGit项目,但我希望这个答案是相关的,不会被视为垃圾邮件。
SubGit是一种在服务器端安装到存储库中的工具。然后,您将能够使用“git clone”或checkout作为Subversion工作副本克隆该存储库。 Git用户将像普通Git存储库一样工作,不需要特殊命令。对于Subversion用户来说,这是正确的。
Git和Subversion方面会自动由SubGit保持同步。
答案 1 :(得分:1)
我认为这不会长期存在并且会引起问题。
首先让我谈谈如何完成svn镜像:
通常,有一个主仓库和一个奴隶仓库(通常在不同的位置,因此需要)。 svners,在主要位置结帐并从主人提交。从属位置检出并在从属位置提交。但实际的设置是,每当有人提交镜像时,slave的提交首先提交给master,然后镜像回slave(svnsync)。最终用户不知道这一点。这确保了回购同步。有关此设置的更多说明:http://www.tty1.net/blog/2007-08-26-subversion-proxy_en.html
现在,带上Git,变得困难。问题是,在Git仓库和SVN仓库中可能存在近乎同时提交的提交。如果SVN中的提交被应用并且新的提交来自Git(它没有在SVN中看到新的提交),那么你将遇到很多麻烦。
您可以拥有的设置是所有用户都使用git-svn
直接“克隆”svn repo。然后他们可以像任何其他svn客户端一样使用git repo。
或者像你提到的那样有一个中央git repo(用git-svn克隆)并且所有gite从它克隆并推送到它。来自中央仓库的git svn rebase
和git svn dcommit
有一个钩子,但是当事情破裂时,有人会手动修复仓库。
答案 2 :(得分:0)
有效。搜索/阅读文档。还有大量书籍可以解决这个问题。
基本上GIT用户负有全部责任,SVN方面的一切都保持不变。
在每个SVN提交中,GIT用户必须git svn rebase
。在每次GIT提交时,GIT用户都必须git svn dcommit
。