2016-09-19 72 views
0

我正在从SVN迁移到Git。我们有以下的结构在任何SVN仓库:分支内的Java项目被视为svn中git中的分隔分支或标签?

-trunk 
    -javaproject1 
    -javaproject2 
-branch 
    -branch1 
     -javaproject1 
     -javaproject2 
    -branch2 
     -javaproject1 
     -javaproject2 
-tags 
    -tag1 
     -javaproject1 
     -javaproject2 
    -tag2 
     -javaproject1 
     -javaproject2 

作为迁移的一部分,我将不得不只tag1branch1所以我用以下,以命令迁移。

git svn init <svn-repo-url> 

这将创建下列内容

[core] 
    repositoryformatversion = 0 
    filemode = false 
    bare = false 
    logallrefupdates = true 
    symlinks = false 
    ignorecase = true 
[svn-remote "svn"] 
    url = <repo-svn-url> 
    fetch = trunk:refs/remotes/origin/trunk 
    branches = branches/branch1/*:refs/remotes/origin/branch1/* 
    tags = tags/tag1/*:refs/remotes/origin/tags/tag1/* 

git svn fetch 迁移完成,但它有许多分支创建.git我去改配置:

origin/branch1_javaproject_1 
origin/branch1_javaproject_2 
origin/tag1_javaproject_1 
origin/tag1_javaproject_2 
origin/master 

理想的情况下应该是

origin/branch1 
    origin/tag1 
    origin/master 

Master已正确创建,其中包含两个Java项目,而标记nad分支是为其中的每个java项目创建的。

回答

0
branches = branches/branch1/*:refs/remotes/origin/branch1/* 
tags = tags/tag1/*:refs/remotes/origin/tags/tag1/* 

这两个看起来相当错误。如果branch1是一个分支,tag1是一个标签,就应该

branches = branches/*:refs/remotes/origin/branches/* 
tags = tags/*:refs/remotes/origin/tags/* 
0

我能解决这个问题,通过再次抽搐配置如下

[core] 
    repositoryformatversion = 0 
    filemode = false 
    bare = false 
    logallrefupdates = true 
    symlinks = false 
    ignorecase = true 
[svn-remote "svn"] 
    url = svn-repo-url 
    fetch = trunk:refs/remotes/origin/trunk 
    branches = branches/{branch1}:refs/remotes/origin/* 
    tags = tags/{tag1}:refs/remotes/origin/tags/*