【问题标题】:Altering folder structure while converting svn repo to git repo using svn2git使用 svn2git 将 svn repo 转换为 git repo 时更改文件夹结构
【发布时间】:2013-04-17 12:50:33
【问题描述】:

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

svn结构如下图

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

这里的情况是文件夹分支包含另一个子目录 development_branches 又包含几个分支。

当我使用 svn2git 时,将其转换为 git 存储库。文件夹 development_branches 被认为是一个分支。下面是使用 svn2git 的 Git 分支结构

Root
   + b1
   + b2
   + development_branches

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

提前致谢

【问题讨论】:

    标签: git svn2git


    【解决方案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
    

    【讨论】:

    • 为我工作 - 谢谢 vumaasha!我尝试了 Ruby Gem svn2git,但无法通过“命令失败:git checkout –f master”错误...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2015-01-15
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多