从Subversion迁移到Git,其中存储库最初不使用标准布局

时间:2011-11-18 15:28:22

标签: git git-svn

我尝试迁移最初不使用标准布局的Subversion存储库。我无法弄清楚如何迁移它。

例如。在SVN Rev 1. - 700中,布局是

[svn]/projectfile
[svn]/projectfile2

在修订版700之前,它将变为

[svn]/trunk/projectfile
[svn]/tags
[svn]/branches

如何运行git svn init命令?

现在我使用

git svn init -s <subversion_repository>

它会显示目录中的所有内容,就像没有分支一样。 (与使用以下命令相同)

svn checkout <subversion_repository_root>/

2 个答案:

答案 0 :(得分:2)

由于我手头没有一个subversion repo试图解决这个问题,我只能概述解决这个问题的方法,这个问题可能有效,也可能不行:

  • 首先,创建一个目录来保存您的Git仓库和cd
  • 初始化您的Git仓库:git svn init svn://path/to/svn/repo
  • 在此仓库内,运行git svn fetch --revision 1:699(或者无论您使用非标准版面的修订范围如何)
  • 修改.git/config并修改[svn-remote]部分,以添加/修改fetchbranchestags条目:
  [svn-remote "svn"]
    url = svn://path/to/svn/repo
    fetch = trunk:refs/remotes/trunk
    branches = branches/*:refs/remotes/*
    tags = tags/*:refs/remotes/tags/*
  • 运行git svn fetch --revision 700:HEAD以获取其余的repo
  • 如果到目前为止一切正常,但您的工作目录中没有任何文件,请运行git svn rebase --local以确保Git创建文件。

理论上,这应该会为您提供一个Git存储库,其中包含完整的历史记录以及所有分支和标记。

像往常一样,在执行任何此类操作之前备份可能被此触及的任何内容,并自行承担风险等。

答案 1 :(得分:0)

正如提供的答案,我发现在已经获取Git的所有修订版本时会出现问题。创建新问题,例如this topic

在我查看了存储库后,我发现如果我提供参数(-s)将我的存储库标记为标准存储库,它将忽略所有非标准,在我的情况下,它将忽略Rev.1-700然后将自动从700转换。

所以,现在,我仍然没有解决办法,除了使用git-svn和原始网址的完整提取,并忽略导致问题发生的路径。

相关问题