我想抛弃SVN GIT中。我现在的SVN仓库设置有下躯干(/trunk/projecta
,/trunk/projectb
等与标签,并在/tags/projecta-1.0
树枝等)的项目。我想通过使用git-svn将它们从SVN中提取出来,为每个项目创建不同的Git仓库。转换SVN子目录到Git
我已经成功地拉了整个SVN回购下来到本地的Git回购,但所有的项目,现在在同一个Git的回购存在。在这一点上可以将它们分开吗?
我想抛弃SVN GIT中。我现在的SVN仓库设置有下躯干(/trunk/projecta
,/trunk/projectb
等与标签,并在/tags/projecta-1.0
树枝等)的项目。我想通过使用git-svn将它们从SVN中提取出来,为每个项目创建不同的Git仓库。转换SVN子目录到Git
我已经成功地拉了整个SVN回购下来到本地的Git回购,但所有的项目,现在在同一个Git的回购存在。在这一点上可以将它们分开吗?
这是棘手。为了得到一个项目的标签,它的所有标签都必须在一个公共目录下,但是你的结构中所有的项目都共享一个标签目录。
也许你可以一次移动/tags/projecta-1.0到/tags/projecta/1.0等,然后将项目导入到git的一个:
git-svn init --trunk=trunk/projecta --tags=tags/projecta ...
我不知道,如果这将工作不如预期,所以请做到这一点你的资料库的副本,而不是原来的!
我并不太在意标签/分支,所以这个工作非常愉快。我在我的Ubuntu Lynx盒子上执行了这个操作: “”“git svn clone --no-metadata --trunk = trunk/projecta http:// svn/repo projecta”“” – magneticMonster 2010-05-02 04:14:50
这很有趣,最简单的方法是创建两个新的git项目,并将ProjectA和ProjectB复制到git repo对应,但这将失去所有历史:( – hugemeow 2012-08-27 01:38:32
当存储库布局非常复杂时,有一个名为svn2git
的工具,它可以使用规则集转换复杂存储库。
您可以在这里下载:http://gitorious.org/svn2git/ 该程序需要编译,它需要Qt,Apache和SVN头文件。
另一个一次性转换Subversion版本库的程序是Svn2Git(与vdboor的答案不同),它具有较少的依赖关系,并且对我的存储库做的很好。
我最近不得不用一个相当复杂的案例解决这个问题(从BRL-CAD的总体历史中提取utahrle文件以创建一个单独的GIT项目),最后使用svn2git和规则文件。这些都是我的步骤 - 不知道这是否是“正确”的方式,但它似乎已经成功地在我的情况:
确保svn2git安装,以及颠覆和Git 如果(启用混帐颠覆支持。不存在)注意 有似乎是使用项目名称 svn2git多个程序 - 我用了一个,这是一个:
http://www.gitorious.org/svn2git
这从KDE的文章让我开始:
获取svn仓库的本地副本。请注意,这 不是结账库的但 整个SVN回购数据集的完整副本。 Sourceforge通过rsync选项使 成为可能 - 详情请参阅他们的文档:http://sourceforge.net/p/forge/documentation/rsync%20Backups/。我不是 其他网站肯定。
mkdir svn_repo
cd svn_repo
rsync -av svn.code.sf.net::p/PROJECTNAME/MOUNTPOINT .
cd ..
创建SVN提交者和git提交者之间的标识映射
文件:帐户地图
svnname1 Jane Coder <[email protected]>
svnname2 Joe Techwriter <[email protected]>
创建svn2git过滤规则来捕捉utahrle历史。 我会在这里发布全utahrle例子,说明如何 遵循历史的不同目录之间的身边,但 我希望大多数情况下不会是相当这个坏:
文件:规则
create repository utahrle
end repository
match /brlcad/trunk/libutahrle/
min revision 1
max revision 22796
repository utahrle
branch master
end match
match /brlcad/trunk/tools/
min revision 1
max revision 22814
repository utahrle
branch master
end match
match /brlcad/trunk/src/other/libutahrle/
min revision 22797
repository utahrle
branch master
end match
match /brlcad/trunk/src/other/URToolkit/
min revision 22815
repository utahrle
branch master
end match
match/
end match
运行svn-所有快速出口产生归档(svn_repo是抱着 你颠覆文件的完整副本的目录):
SVN-所有高速出口--identity地图帐户地图 - 规则svn_repo
使用上述规则文件,utahrle持有由此产生的git 存储库。使用gitk检查我们期望看到的历史记录 实际上是否存在,然后(如果您使用此回购作为在线存档) 用于上传现有git存储库。
我听说有更好的最长期的选项将颠覆比混帐svn的(因为GIT-SVN是专门为能提交后),不过我还是要说到Git没有任何提及的手。 – 2010-05-02 14:29:20