我正在将一些SVN项目迁移到git。
我想将某个标签克隆到自己的git存储库。
通过在TAG路径上执行git svn克隆,我放弃了svn副本之前发生的所有历史记录,它首先创建了标记。
有没有办法在新的git项目中保留原始历史记录? (我可以在我选择的IDE中浏览SVN历史记录,因此SVN似乎能够提供所需的信息)
提醒:我不希望中继项目的分支和标签类似于SVN结构。我想要一个单独的项目,只包含TAG和附加的所有历史记录(包括创建标记之前的修订版)
答案 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>