繁体   English   中英

如何将SVN存储库的一部分导入现有的git存储库,并保留历史记录?

[英]How can I import part of an SVN repo into an existing git repo, retaining history?

我有一个旧的SVN储存库,其中包含我想导入到现有 git储存库中的文件的子目录,并保留历史记录。 如何才能做到这一点?

假设我有现有的SVN布局:

file:///svn
  trunk
    foo
    bar
  branches

以及以下git布局:

file:///git
  *master
    baz
    qux

我想将svn:///file/trunk/foo导入git,这样我得到以下结果:

file:///git
  *master
    foo
    baz
    qux

我发现的解决方案需要使用git-subtree,它是git contrib的一部分,或者在某些情况下使用默认的git安装(例如git Debian软件包1.9和更高版本)。

  1. 使用git-svn克隆SVN仓库:

     git svn clone -r 1540:HEAD \\ --authors-file=authors.txt \\ https://svn.host.com/repos/trunk/foo foo 
  2. 然后在您的主仓库中,创建一个新分支(我想是可选的),并使用git-subtree导入新的部分仓库:

     git checkout -b foo git subtree add --prefix foo /path/to/foo master 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM