在"git svn 克隆"时保留复制的标签的 SVN 历史记录



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

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

通过在TAG路径上进行git-svn克隆,我丢失了svn复制之前发生的所有历史记录,该复制首先创建了标签。

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

提醒:我不想要一个分支和标签类似SVN结构的主干项目。我想要一个单独的项目,只附上标签和所有历史记录(包括标签创建前的修订)

检查--follow-parent标志:

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

编辑:

然而,请注意,git svn将只看到克隆目录上下文中的内容;svn标记通常涉及将一个目录复制到另一个位置,因此您需要整个目录树(包含"trunk"和最终的"tagX"director),以便有足够的上下文让git工作。这样做的原因是,git将拒绝从git存储库本身之外的路径复制任何内容(这是有道理的)。svn可以查看整个历史,因为它确实有完整的上下文(在服务器上,即使您在本地机器上只有部分结账)

因此,为了将完整的历史记录保存到git-svn克隆中,您可能确实需要克隆整个项目(即,至少包含trunk和tag-dir的目录)。

因此,继续进行的方法是:

  • 对svn存储库执行完整的git svn clone,并指定trunk/tags/branches目录(如果您有一些特殊设置,则使用--trunk--tags--branches标志;如果您的repo是以标准/ttrunk、/tags/…、/branches/…方式组织的,则使用--stdlayout)

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

最新更新