我正在尝试导入遵循标准svn约定(trunk / branches / tags)的svn存储库。 “问题”是每个副本下面有两个完全无用的目录,我真的想在我的git repo中消除。我的svn结构如下所示:
trunk/redundantdir1/redunddantdir2/realstuff
branches/b1/redundantdir1/redunddantdir2/realstuff
tags/t1/redundantdir1/redunddantdir2/realstuff
...
在svn中,这两个目录没有受到太多伤害,因为大多数用户只会从“realstuff”中查看并关闭。有了git,我真的很想把多余的dir从repo中删除。我不准备开始改变svn结构,我需要能够在短时间内保持git repo与subversion同步。建议?
答案 0 :(得分:1)
我不建议使用git-svn进行任何SVN分支或合并,因此您实际上不需要分支或标记目录。然后你可以像这样克隆你需要的回购部分:
git-svn clone https://example.com/svnroot/trunk/redundantdir1/redunddantdir2/realstuff myprojectname
编辑:如果您确实需要在分支中进行更改(而不是创建或合并我建议使用真正的svn执行的分支),那么您可以简单地将该分支克隆为单独的git像这样的回购:
git-svn clone https://example.com/svnroot/branches/b1/redundantdir1/redunddantdir2/realstuff myprojectname-b1
答案 1 :(得分:0)
基本上,我们的想法是将git svn clone
分成两个操作,首先是git svn init
来设置带有排除项的存储库,然后是git svn fetch
来从svn中提取修订版本:
git svn init <Svn repo url> -s --ignore-paths 'redundantdir1'
git svn fetch
这也为你的git repo提供了一个svn repo的缩小克隆选项,例如忽略你可以做的svn repo中的第一个12344变更集:
git svn fetch -r 12345:HEAD
从那时起,git svn fetch
将会出现更多近期变更集。