问题
如何从Subversion存储库中使用git-svn创建一个浅拷贝,例如,如何只提取最后三个修订?
如果你使用——depth选项,git clone命令可以从git存储库中获得最近的n个修订,也就是说,你可以获得存储库的浅拷贝。例子:
git clone --depth 3 git://some/repo myshallowcopyrepo
git-svn是否有类似的选项?
我目前的发现
到目前为止,我只找到了-rN选项,其中N是要拉的修订。例子:
git svn clone -rN svn://some/repo
根据文档,可以使用-r$REVNUMBER:HEAD。我尝试下面的3个版本,返回一个错误消息。
$ git svn clone --prefix=svn/ -s -rHEAD~3:HEAD http://some/svn/repo .
revision argument: HEAD~3:HEAD not understood by git-svn
所以我将HEAD~3替换为第三次也是最后一次修订534的实际数字。这是有效的,但这要求我首先计算出第三次(也是最后一次)提交的修订号。
$ git svn clone --prefix=svn/ -s -r534:HEAD http://some/svn/repo .
文档
git-clone
git-svn
我发现自己经常使用以下方法从我们巨大的subversion树中获得有限数量的修订(我们很快就会达到svn revision 35000)。
# checkout a specific revision
git svn clone -r N svn://some/repo/branch/some-branch
# enter it and get all commits since revision 'N'
cd some-branch
git svn rebase
找到分支开始的位置的一个好方法是执行svn日志并找到分支上的第一个(执行时列出的最后一个):
svn log --stop-on-copy svn://some/repo/branch/some-branch
到目前为止,我还没有发现跟踪所有分支的麻烦。它需要太多的时间来克隆和svn和git不像我想的那样一起工作。我倾向于创建补丁文件,并将它们应用到另一个svn分支的git克隆上。
我发现自己经常使用以下方法从我们巨大的subversion树中获得有限数量的修订(我们很快就会达到svn revision 35000)。
# checkout a specific revision
git svn clone -r N svn://some/repo/branch/some-branch
# enter it and get all commits since revision 'N'
cd some-branch
git svn rebase
找到分支开始的位置的一个好方法是执行svn日志并找到分支上的第一个(执行时列出的最后一个):
svn log --stop-on-copy svn://some/repo/branch/some-branch
到目前为止,我还没有发现跟踪所有分支的麻烦。它需要太多的时间来克隆和svn和git不像我想的那样一起工作。我倾向于创建补丁文件,并将它们应用到另一个svn分支的git克隆上。