标准的回购布局在svn如下。

/trunk
/branches
    featureX
    featureY
/tags
    1.0
    2.0

库我工作的是一个更平坦的结构。

trunk
featureX
featureY

从本质上讲,干线的水平相同的其他分支机构。我不能使用的或s-b的选项 git svn init 因为这个原因。

我怎么拉 trunk 作为跟踪 master 和拉 featureX 作为一个跟踪相同的名字吗?我不关心任何其他分支机构或标签。

我已经看到类似的问题和人建议重组svn库。这是从桌子上就这个问题感到关切。

有帮助吗?

解决方案

我已经想出了一个方向拉,在多个分支机构从一个任意的svn储存库的结构。

-b 选择 git svn init 只会的工作,如果所有分支机构都组合在一起,在一个子目录的储存库,例如在标准布局。如果所有分支机构,其中包括干线,是在同一个文件夹,这不会真的工作。你可以拉在选定的树枝从svn储存库的基本上建立多个"干"int仓库的内容。

假定平结构的问题与的三个分支机构的主干,featureX,并featureY.

  1. 实例仓库的内容。

    mkdir myproject
    cd myproject
    git svn init url:to/svn/repo -T trunk
    

    这将创建一个混帐库svn元数据 .git/config 文件。

  2. 开放的配置文件和审查svn元数据

    vim .git/config
    

    您的配置文件将这样的事情。

    [core]
      repositoryformatversion = 0
      filemode = true
      bare = false
      logallrefupdates = true
      autocrlf = false
    [svn-remote "svn"]
      url = url:to/svn/repo
      fetch = trunk:refs/remotes/trunk
    

    svn-remote 标题定义的参考称为"svn"指向你svn库。的 fetch 参告诉混帐svn里拉的新修订内svn库。现在,我们需要告诉混帐svn有关的其他分支,我们是感兴趣。

  3. 重复 svn-remote 部分

    整个拷贝 svn-remote 部分的配置文件和粘贴到它的下面现有的配置文本。

    [core]
      repositoryformatversion = 0
      filemode = true
      bare = false
      logallrefupdates = true
      autocrlf = false
    [svn-remote "svn"]
      url = url:to/svn/repo
      fetch = trunk:refs/remotes/trunk
    [svn-remote "svn"]
      url = url:to/svn/repo
      fetch = trunk:refs/remotes/trunk
    
  4. 修改新的 svn-remote 部分

    更改名称 svn-remote 部分标题和名称的分支,这点。

    [core]
      repositoryformatversion = 0
      filemode = true
      bare = false
      logallrefupdates = true
      autocrlf = false
    [svn-remote "svn"]
      url = url:to/svn/repo
      fetch = trunk:refs/remotes/trunk
    [svn-remote "svn-featureX"]
      url = url:to/svn/repo
      fetch = featureX:refs/remotes/featureX
    

    现在混帐svn将跟踪两svn分支机构。你可以使用的名称"svn"和"svn-featureX"任何混帐svn命令,该命令需要一个 [svn-remote] 参数。你可以使用的名称"中继"和"featureX"任何命令的,需要一个远程支的名字作为一个参数。

这个解决方案不会规模好,是有点黑客与格式错误svn库。所以,只要你只需要追踪一个少数svn分支,这会工作得很好。如果数svn分支机构你需要的工作变得过大,严肃看重组你的svn库的标准布局。

其他提示

这样 文章说明了, ,您可以编写用于运行类似工具的规则 svn2git
(您的完整版本较少 svn2git在这里)

那些例子 对于您可以重写的规则,以匹配那些平坦的SVN目录/分支并将其声明为GIT分支。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top