【问题标题】:Trouble checking out SVN repo - reason unknown无法签出 SVN 回购 - 原因未知
【发布时间】:2017-11-11 03:58:41
【问题描述】:

我刚刚访问了一个使用 SVN 进行版本控制的网站,这对我来说是新的。

webroot 是传统的/var/www/vhosts/www.example.com/httpdocs。当我在该目录中时,我可以运行简单的 SVN 命令,例如状态和信息。当我尝试在本地机器上签出 repo 的副本时,我遇到了麻烦:

它一直告诉我找不到存储库

me@desktop-123 /c/wamp/www/tempSite
$ svn co svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com .
The authenticity of host '111.111.111.1 (111.111.111.1)' can't be established.
RSA key fingerprint is 1d:e2:8f:5e:94:1b:94:0b:92:57:c0:ca:37:36:fb:4c.
Are you sure you want to continue connecting (yes/no)? yes
username@111.111.111.1's password:
username@111.111.111.1's password:
svn: No repository found in 'svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com'

me@desktop-123 /c/wamp/www/tempSite
$ svn co svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com/httpdocs .
username@111.111.111.1's password:
svn: No repository found in 'svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com/httpdocs'

me@desktop-123 /c/wamp/www/tempSite
$ svn co svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com/httpdocs/.svn .
username@111.111.111.1's password:
svn: No repository found in 'svn+ssh://username@111.111.111.1/var/www/vhosts/www.example.com/httpdocs/.svn'

有一个空目录/var/www/vhosts/www.example.com/trunk,但是已经好几个月没有动过了,而子.svn 目录在上周更新了。我认为这无关紧要,但由于我是新手,这让我很困惑。

当我运行 svn info 时,我得到了这个:

$ svn info
Path: .
URL: https://svn.example2.com/client.account/trunk
Repository Root: https://svn.example2.com/client.account
Repository UUID: 9c0d3acc-3531-50de-5176-468ba01a45ce
Revision: 1273
Node Kind: directory
Schedule: normal
Last Changed Author: mhollis
Last Changed Rev: 1273
Last Changed Date: 2014-03-20 11:14:49 -0700 (Thu, 20 Mar 2014)

也许我只是太习惯于 git,但我觉得我应该能够在 /var/www/vhosts/www.example.com/httpdocs 上查看 repo,不是吗?

这是因为我要检查别人的回购吗?我需要尝试从https://svn.example2.com/client.account 结帐吗?

【问题讨论】:

    标签: svn repository svn-checkout


    【解决方案1】:
    1. 不是存储库,而是URL: https://svn.example2.com/client.account/trunk 的工作副本
    2. 如果它是存储库,它将不能用作“实时”站点

    【讨论】:

      【解决方案2】:

      webroot 是传统的 /var/www/vhosts/www.example.com/httpdocs

      那是你的问题!您不了解 Subversion 是如何设置的!

      我对您提供的 Subversion 路径感到困惑:/var/www/vhosts/www.example.com/。看起来它包含了从服务器根目录到 repo 的整个路径。 Subversion 为服务器使用虚拟根(取决于服务器的运行方式)。通过查看 Subversion 存储库实际位于服务器上的 URL,您不知道。就像httpd 对您隐藏实际的 Webroot 一样。

      事实上,如果你使用 Apache httpd 作为你的服务器,你会在http.conf 文件中看到类似这样的内容:

      <Location /svn>
          DAV svn
          SVNPath /opt/subversion/repo
          ....
      </Location>
      

      这是将/svn 设置为您的Subversion 存储库的文档根。实际的 repo 位于系统的其他位置,甚至可能不在 Apache 设置或 docroot 的其余部分下。假设这是在svn.vegicorp.com 上运行的Apache httpd。在这种情况下,实际的 Subversion 存储库目录位于 /opt/subversion/repo 下。但是,我使用 http://svn.vegicorp.com/svn 的 URL 作为我的 Subversion 存储库根。

      查看其他工作目录应该会提示您。您要使用的 URL 不是 svn+ssh://。 Subversion 站点很少使用此协议,因为它非常难以设置。大多数人使用http://https://,因为他们可以利用Apache 连接到Active Directory/LDAP 服务器的能力来确保安全。其他人会使用svn:// 来提高速度。

      当我在那个 [httpd webroot] 目录中时,我可以运行简单的 SVN 命令,例如状态和信息

      那是因为 webroot 实际上是一个 Subversion 工作目录。您在 Subversion 中创建整个网页,然后在 httpd webroot 目录中执行 svn co 并拥有您的网站。

      这样,某人可以远程处理网页,使用版本控制等来设置所有内容。然后,他们可以使用svn update 将 webfoot 更新为分支或根的 HEAD。

      进入 webfoot,然后执行 evn info。这将为您提供该结帐的 URL。然后,您可以通过 svn checkout 和任何 URL 将网页在本地签出到您的系统。

      例如:

      $ svn co https://svn.example2.com/client.account/trunk webroot-trunk

      这将在您的本地系统上创建一个名为 webroot-trunk 的目录,其中包含您的网页的完整签出,包括整个目录结构。

      您现在可以修改网页,完成后,发送svn commit 以保存更改。完成后,您可以登录网络服务器,执行svn update 并将您的更改引入服务器。

      【讨论】:

        猜你喜欢
        • 2016-02-02
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 2023-03-19
        • 1970-01-01
        • 2015-10-28
        相关资源
        最近更新 更多