如何git-svn从Subversion仓库克隆最近的n个修订?

问题


如何从Subversion存储库中使用git-svn创建浅表副本,例如,如何仅提取最后三个修订版?


git clone如果使用选项--depth,则该命令可以从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 .


拉丁的传说
浏览 847回答 3
3回答

慕森卡

通过在(-r$REV:HEAD)中指定要启动克隆的SVN版本号,您已经发现了在Git-SVN中指定浅表克隆的最简单方法。例如: git svn clone -s -r1450:HEAD some/svn/repoGit的数据结构基于有向无环图(DAG)中的指针,这使得回溯n提交变得微不足道。但是在SVN中(因此在Git-SVN中),您将必须自己找到修订号。

慕的地10843

我发现自己经常使用以下内容从我们庞大的Subversion树中获取有限数量的修订版(我们很快将达到svn修订版35000)。# checkout a specific revisiongit svn clone -r N svn://some/repo/branch/some-branch# enter it and get all commits since revision 'N'cd some-branchgit svn rebase找出分支从何处开始的好方法是执行分支svn log并找到分支上的第一个分支(执行时列出最后一个分支):svn log --stop-on-copy svn://some/repo/branch/some-branch到目前为止,在跟踪所有分支方面,我还没有真正发现值得解决的麻烦。克隆和svn和git不能像我想要的那样协同工作需要太多时间。我倾向于创建补丁文件,并将其应用到另一个svn分支的git克隆上。
打开App,查看更多内容
随时随地看视频慕课网APP