【问题标题】:Does SVN have an equivalent for "hg clone" in Mercurial or "git clone" in Git?SVN 是否有与 Mercurial 中的“hg clone”或 Git 中的“git clone”等价的功能?
【发布时间】:2011-01-17 13:07:32
【问题描述】:

我有一个 Subversion 存储库的 URL,在 Ubuntu 的命令行上,我想下载存储库的副本,就像在 Mercurial 中所做的那样,输入:

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

  2. 另外,我只想获取 docs 文件夹下的所有内容 - 我不想从后备箱开始 - 你会怎么做这样的事情:

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

【问题讨论】:

  • mercurial 可以使用 hgsubversion “克隆” svn repos。

标签: svn mercurial


【解决方案1】:
svn co svn://www.example.com/path/to/repository/...

其中“co”是“checkout”的缩写。

【讨论】:

  • @calmh 我认为这个问题更多来自工作流程的角度,而不是“我如何获取整个存储库历史记录的副本”。
  • @Nick 可能已经接受了答案。我被“存储库的副本”的谈话愚弄了。
【解决方案2】:
  1. 如果没有管理员访问权限(即能够执行 svnadmin 命令),您将无法克隆存储库。
  2. 您当然可以使用svn co http://....../docs 查看子树

【讨论】:

  • 可以使用 svnsync 克隆没有管理员访问权限的存储库,但这几乎肯定不是 OP 想要的,因为这样的克隆对于将提交返回到真实状态毫无用处存储库。这是分布式(git,hg,...)和集中式(svn,cvs,...)之间的根本区别。
  • @bendin 谢谢...我不熟悉svnsyncclone 的这种用法。
【解决方案3】:

您想要执行在 SVN 领域中称为“签出”的操作。

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

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

【讨论】:

    【解决方案4】:

    如果你只需要获取当前版本,svn checkout 就是你所需要的。

    如果您想要完整的存储库副本,包括所有以前的版本,您可以使用svnsync。它可以复制完整的存储库并逐步下载新的提交。我不认为它可以限制在子目录中。

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 2017-05-30
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多