'git svn clone'时保留复制TAG的SVN历史记录

时间:2012-12-17 14:28:51

标签: git git-svn

我正在将一些SVN项目迁移到git。

我想将某个标签克隆到自己的git存储库。

通过在TAG路径上执行git svn克隆,我放弃了svn副本之前发生的所有历史记录,它首先创建了标记。

有没有办法在新的git项目中保留原始历史记录? (我可以在我选择的IDE中浏览SVN历史记录,因此SVN似乎能够提供所需的信息)

提醒:我不希望中继项目的分支和标签类似于SVN结构。我想要一个单独的项目,只包含TAG和附加的所有历史记录(包括创建标记之前的修订版)

1 个答案:

答案 0 :(得分:0)

检查--follow-parent标志:

 git svn clone --follow-parent https://path.to/svnroot/repo/tags/0.12

编辑:

但请注意,git svn只会看到克隆目录上下文中的内容; svn标记通常涉及将一个目录复制到另一个位置,因此您需要整个目录树(包含“trunk”和最终的“tagX”控制器),以便有足够的git上下文工作。 这样做的原因是,git将拒绝从git-repository本身之外的路径复制任何东西(这是有道理的)。 svn可以看到整个历史记录,因为它确实具有完整的上下文(在服务器上,即使您只在本地计算机上进行了部分检出)

所以,为了将完整的历史记录放到你的git svn clone中,你可能确实需要克隆整个项目(也就是说,至少包含trunk和tag-dir的目录)。

所以继续进行的方式是:

  • 执行svn存储库的完整git svn clone,并指定trunk / tags / branches目录(--trunk--tags--branches标记(如果有)一些特殊设置或使用--stdlayout如果您的仓库按标准/主干,/ tags / ...,/ branches / ...方式组织)

  • 这将为您提供一个git存储库,其中包含许多git分支和git标记,您可以删除所有不需要的分支/标记(或者只是不将它们推送到服务器)< / p>