使用svn2git将svn repo转换为git repo时更改文件夹结构

时间:2013-04-17 12:50:34

标签: git svn2git

我正在将SVN存储库迁移到Git。

svn结构如下所示

Root
  + branches
      + b1
      + b2
      + development_branches
          + d1
          + d2
  + tags
  + trunk

这里的情况是文件夹分支包含另一个子目录develop_branches,而该子目录又包含很少的分支。

当我使用svn2git时,将其转换为git存储库。文件夹development_branches被视为单个分支。下面是使用svn2git

的Git分支结构
Root
   + b1
   + b2
   + development_branches

是否可以让svn2git将文件夹“development_branches”的内容视为单独的分支,或者在Git中是否有一种方法可以将文件夹development_branches中的文件夹标记为单独的分支?

提前致谢

1 个答案:

答案 0 :(得分:1)

我不确定这是否是正确的做法,但似乎有效。如果这不正确,欢迎您的反馈。

策略是这样的 1.从分支“development_branches”创建分支,每个子文件夹一个 2.检查新创建的分支并使用命令git filter-branch将根内容替换为子目录的内容

git filter-branch  -f --subdirectory-filter <subdirectory_name> HEAD

因此,对于问题中显示的git结构,我使用了以下命令

$ git checkout development_branches
$ git branch d1
$ git branch d2
$ git checkout d1
$ git filter-branch  -f --subdirectory-filter d1 HEAD
$ git checkout d2
$ git filter-branch  -f --subdirectory-filter d2 HEAD
$ git branch -d development_branches

在此之后,新的Git结构

Root
   + b1
   + b2
   + d1
   + d2