0

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

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

通过在 TAG 路径上执行 git svn clone,我丢失了 svn 副本之前发生的所有历史记录,这些历史记录首先创建了标签。

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

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

4

1 回答 1

0

检查--follow-parent标志:

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

编辑:

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

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

所以继续的方法是:

  • 做一个完整git svn clone的 svn 存储库,指定 trunk/tags/branches 目录 (--trunk--tagsflags--branches如果你有一些特殊设置或使用--stdlayout如果你的 repo 组织在标准 /trunk、/tags/...、/branches/ ... 方法)

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

于 2012-12-17T14:36:27.950 回答