如何将连续的SVN和BZR回购加入GIT?
一个奇怪的要求,我承认 我们有一个项目,目前在Bazaar中管理,但以前存储在Subversion中。然而,以前的开发商并没有复制历史,而是将SVN回购单次导出,并开始了全新的BZR回购 因此,我们有以下几点:如何将连续的SVN和BZR回购加入GIT?,git,svn,bazaar,Git,Svn,Bazaar,一个奇怪的要求,我承认 我们有一个项目,目前在Bazaar中管理,但以前存储在Subversion中。然而,以前的开发商并没有复制历史,而是将SVN回购单次导出,并开始了全新的BZR回购 因此,我们有以下几点: SVN: A-B-C-D BZR: E-F-G-H 我想要的是: GIT: A-B-C-D-E-D-G-H 谢谢使用git过滤器分支可能最简单。事实上,这是过滤器分支文档中的一个示例: 要将提交(通常位于另一个历史记录的顶端)设置为当前初始提交的父级,以便将其他历史记录粘贴到当前历史
SVN: A-B-C-D
BZR: E-F-G-H
我想要的是:
GIT: A-B-C-D-E-D-G-H
谢谢使用
git过滤器分支
可能最简单。事实上,这是过滤器分支文档中的一个示例:
要将提交(通常位于另一个历史记录的顶端)设置为当前初始提交的父级,以便将其他历史记录粘贴到当前历史记录后面,请执行以下操作:
git过滤器分支--父过滤器“sed”s/^\$/-p/”头
这里是您的提交D,假设您是从BZR提交E到H的分支工作的。所以我假设您使用了迁移工具将svn和BZR历史记录都导入git,并将它们作为单独的分支导入到单个存储库中。我使用了一个稍微不同的过程(使用.git/info/grafts,后跟过滤器树),但您的回答为我指明了正确的方向。谢谢!
git filter-branch --parent-filter 'sed "s/^\$/-p <graft-id>/"' HEAD