从svn到没有前缀的git迁移是否安全吗?

时间:2018-06-28 19:24:43

标签: git svn git-svn

我在Subversion中有许多要迁移到git的存储库。 迁移完成后,svn仓库将被标记为只读,并且不再提交。 在我正在处理的特定情况下,有两个活动分支,我们称它们为BranchABranchB。 迁移完成后,我希望它们看起来像没有前缀的“常规” git分支。

当前我正在使用以下命令:

 git svn clone --prefix=svn/ --stdlayout http://repos-url/ <git-name>

在这种情况下,我的分支最终被称为svn/BranchAsvn/BranchB

但是我宁愿使用

 git svn clone --prefix="" --stdlayout http://repos-url/ <git-name>

在git中将它们分别命名为BranchABranchB

但是,the docs警告说

  

在任何情况下都强烈建议设置前缀(带有斜杠)...

但是我不确定我为什么。它还说SVN URL将作为“远程”添加,但这并不是我真正想要的。

我担心使用--prefix=""会在以后遇到麻烦,因为我不太了解警告。

所以我想我的问题是:

  • 使用--prefix=""有什么弊端?
  • 我可以阻止svn-git保留对SVN存储库的引用吗?

1 个答案:

答案 0 :(得分:1)

您根本无法使用--prefix。从文档中...

  

-prefix = <前缀>

     

这允许指定一个前缀,前缀为              如果指定了中继线/分支/标签,则为遥控器。前缀不              自动包含一个斜杠,因此请确保在              如果那是您想要的参数。

如果您不想在分支名称前添加前缀,请不要使用--prefix。当您镜像SVN存储库以使SVN分支与Git分支分开时,这主要有用。如果您要迁移,则不需要。

后面的斜杠注释只是清楚地表明,如果您说--prefix=foo,则会得到fooBranchAfooBranchB。无论您的分支名称是否带有斜杠,对Git都没有关系。

  

它还说SVN网址将作为“远程”添加,但这并不是我真正想要的。

这也用于镜像,在迁移时没有用。

您稍后可以使用git remote rm将其删除。或者您可以忽略它。远程服务器连接到磁盘上的物理.git目录,但不共享。该遥控器不会被推送到Git服务器。克隆存储库的任何人都不会拥有此svn远程。

因此,您只需简单地克隆迁移的对象即可在迁移后获得一个“干净”的存储库。您可以克隆目录。

git clone path/to/migrated/repo path/to/clean/repo

Bitbucket has a nice guide on migrating from SVN to Git


与在SVN中“分支”是相当繁琐的事情不同,Git“分支”只是实际分支上的标签。与SVN的历史记录就像一叠煎饼一样,您只能将其添加到顶部,而Git历史记录则是节点和连接的graph,并且可以更改。

您不必担心在迁移过程中得到正确的解决,而后可以进行一些微调。例如,您可以在迁移后安全地在Git中更改分支名称。您可以删除SVN遥控器。