代码之家  ›  专栏  ›  技术社区  ›  Ibrahim

当使用git svn或svn2git从svn转换为git时,如何更改存储库的基本路径并可能保留分支/标记?

  •  1
  • Ibrahim  · 技术社区  · 17 年前

    我正在将一个项目从SVN移动到Git(完全不需要Git-SVN的SVN互操作功能),我尝试同时使用这两种功能 git svn svn2git ( nirvdrum's fork on github )我遇到的一个问题是,我们在SVN中的存储库布局是这样的:

    example.com/website/trunk|branches|tags/base/code ,

    所以当我把它导入Git时,存储库的根目录包含一个目录,基目录(不是实名),然后是所有的东西。这对我们来说是个问题,因为它增加了一些复杂的因素。

    有没有一种好的、简单的方法可以将存储库的根更改为基础,无论是在导入过程中还是在Git疯狂的历史更改能力的追溯过程中?否则,不应该是存储库根目录并且包含其他不相关代码的目录必须是Git中存储库的根目录,这很奇怪,而且出于某种原因,对于SVN,情况并非如此(即存储库的根目录是基目录,父目录没有任何SVN内容)。

    希望这是一个快速的问题,有人可以轻松回答。

    哦,顺便说一句,我确实有一些要导入的分支和标记,但是这些应该是在基目录下的根目录,而不是基目录下的父目录。如果它们不能像那样被导入,那就不算什么了,因为它们几乎是无用的,而且团队以前半心半意地使用SVN,但是拥有它们会很好。

    2 回复  |  直到 11 年前
        1
  •  1
  •   ph0t0nix Thomas    11 年前

    svn2git 也有选择;用查尔斯的回答中的例子来说:

    svn2git --trunk example.com/website/trunk/base/code \
            --tags example.com/website/tags/base/code \
            --branches example.com/website/branches/base/code
    

    [警告:我没试过,但据我所知, Svn2GIT 把它们转换成 -T|t|b 的选项 git-svn ]

        2
  •  1
  •   CB Bailey    17 年前

    你应该能够做到:

    git svn init -Texample.com/website/trunk/base/code -texample.com/website/tags/base/code -bexample.com/website/branches/base/code
    

    而不是接受默认值或使用 -s|--stdlayout .