2013-02-27 60 views
3

我有一个相当大的svn集中式存储库,我们用于我的团队。现在我想在本地使用git(-svn),所以我创建了一个git-svn克隆。这工作得很好,但git-svn克隆需要很长时间才能完成。相比之下,git克隆通常不需要那么长时间。如何复制一个git-svn克隆的存储库,以便git svn dcommit仍然可以运行

一位同事如何复制我的svn克隆,以便他不需要再次检出并转换整个svn历史? I.e.没有与svn互动。

当然,我们希望同事能够使用他自己的凭据执行fetch和dcommit到中央svn存储库。

Thnx。

+2

也许这个问题会更适合在stackoverflow?我不确定。 – Stim 2013-02-27 08:37:08

+1

是否有任何理由不能tar /压缩你的存储库,并把它给他?它应该工作。 – oschrenk 2013-02-27 14:24:40

回答

1

基于加入到这个问题和其他答案的评论:

有可能只是(物理)复制Git仓库(或焦油/ ​​ZIP复制或文档说的rsync) 。

我测试了这个解决方案,实际上,在另一台机器上,使用该机器的svn凭证执行与svn的连接,而整个历史仅在几秒钟内复制。

5

总之,这个程序非常脆弱,不建议。见git svn man page,部分注意事项:

为了简单起见,用颠覆互操作,建议所有的Git SVN用户克隆,获取和dcommit直接从SVN服务器,并避免任何混帐克隆/拉/合并/ git仓库和分支之间的操作。在git分支和用户之间交换代码的推荐方法是git format-patch和git am,或者只是向SVN存储库提交。

所以每个想使用git svn的人都应该从SVN服务器克隆他/她自己的副本。

另一种解决方案是使用SubGit,这将为您提供一个git桥到存储库,您可以用SVN交替使用:

SubGit是工具,平滑,无压力的SVN到Git迁移。在服务器端安装一次,只要你喜欢就使用Subversion和Git。

SubGit operation overview

SubGit让一个设置一个双向Subversion来GIT中复制(可写的反射镜)。访问文档页面以获取更多信息。

+1

但这不是OP要求的?问题是关于重复使用单个“git svn clone”操作的结果给多个开发人员,所以每个开发人员都可以使用他/她自己的凭证来重新绑定/ dmitmit。不是关于开发者之间的推拉。 – JesperE 2013-02-27 13:34:00

+0

@JesperE引用的手册页说_...避免所有的git **克隆** /pull/merge/push..._换句话说,为了避免重复使用克隆的git回购,甚至为了进一步的克隆。根据我自己的经验,我可以说,不应该试图违背这一警告,然后进入难以解决的问题。 SubGit解决了这个问题 - 所有开发人员都可以克隆并推送到单个git镜像。 – 2013-02-27 15:52:39

+0

@PetrPudlák,完整目录的直接副本不会造成任何伤害。它的'git clone'可能只是得到'git'部分,而不是SVN的必要粘合剂,所以我也会避免这样做。禁止本地人交换东西'git'的方式就是在这里创建任何东西,SVN无法代表,通过中央SVN服务器做所有事情。 – vonbrand 2013-02-27 19:26:46