SVN有没有类似于Mercurial中的“hg clone”或Git中的“git clone”的等效功能?

5

我有一个Subversion仓库的URL,在Ubuntu命令行中,我想像在Mercurial中一样通过输入以下命令来下载仓库的副本:

hg clone http://svn.somerepository.com/somerepository/trunk/docs/
  1. 如何在SVN中“克隆”一个存储库?

  2. 另外,我只想获取docs文件夹下的所有内容 - 我不想从trunk开始 - 您会怎么做:

    svn clone http://svn.somerepository.com/somerepository/trunk/docs/


Mercurial可以使用hgsubversion来“克隆”SVN存储库。 - tonfa
4个回答

12
你想要在SVN里面进行所谓的“check out”操作。
svn co http://svn.somerepository.com/somerepository/trunk/docs/

注意SVN和像Mercurial或Git这样的分布式系统之间的主要区别在于,SVN的“check out”命令仅下载每个文件的最新版本副本,而使用hg clone命令,您实际上会得到存储库完整历史记录的本地副本。这对您的工作方式有一些影响。例如,您需要通过网络连接到服务器才能检索日志,执行差异等操作。


6
如果您只需要获取当前版本,svn checkout就足够了。
如果您想要完整的存储库副本,包括所有以前的版本,您可以使用svnsync。它可以复制完整的存储库并逐步下载新提交。我认为它无法限制到子目录。

4
  1. 如果没有管理员访问权限(即无法执行svnadmin命令),则无法克隆存储库。
  2. 您可以使用svn co http://....../docs检出子树。

你可以使用svnsync克隆一个仓库而无需管理员权限,但这几乎肯定不是OP想要的,因为这样的克隆对于向真实仓库提交更改是无用的。这是分布式(git,hg,...)和集中式(svn,cvs,...)之间的根本区别。 - bendin
@bendin 谢谢...我之前不熟悉 svnsyncclone 的这种用法。 - Michael Hackner

2
svn co svn://www.example.com/path/to/repository/...

在这里,“co”代表“checkout”。

1
@calmh 我认为这个问题更多是从工作流的角度而不是“如何获得整个存储库历史记录的副本”的角度提出的。 - Nick Meyer
@Nick 根据被接受的答案,很可能是这样。我被“存储库的副本”所迷惑了。 - Jakob Borg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接