首页 文章

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

提问于
浏览
2

我正在将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 回答

  • 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
    

相关问题