为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
拉丁的传说 2019-10-14 10:19:41
问题如何从Subversion存储库中使用git-svn创建浅表副本,例如,如何仅提取最后三个修订版?git clone如果使用选项--depth,则该命令可以从Git存储库获取最新的n个修订版本,即,您可以获得存储库的浅表副本。例:git clone --depth 3 git://some/repo myshallowcopyrepogit-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 .
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

通过在(-r$REV:HEAD)中指定要启动克隆的SVN版本号,您已经发现了在Git-SVN中指定浅表克隆的最简单方法。


例如: git svn clone -s -r1450:HEAD some/svn/repo


Git的数据结构基于有向无环图(DAG)中的指针,这使得回溯n提交变得微不足道。但是在SVN中(因此在Git-SVN中),您将必须自己找到修订号。


查看完整回答
反对 回复 2019-10-14
?
慕的地10843

TA贡献1785条经验 获得超8个赞

我发现自己经常使用以下内容从我们庞大的Subversion树中获取有限数量的修订版(我们很快将达到svn修订版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 log并找到分支上的第一个分支(执行时列出最后一个分支):


svn log --stop-on-copy svn://some/repo/branch/some-branch

到目前为止,在跟踪所有分支方面,我还没有真正发现值得解决的麻烦。克隆和svn和git不能像我想要的那样协同工作需要太多时间。我倾向于创建补丁文件,并将其应用到另一个svn分支的git克隆上。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 836 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信