无法检查SVN repo - 原因未知

时间:2014-04-07 20:59:32

标签: svn repository svn-checkout

我刚访问了一个使用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查看回购,不是吗?

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

2 个答案:

答案 0 :(得分:0)

  1. 它不是存储库,而是URL: https://svn.example2.com/client.account/trunk
  2. 的工作副本
  3. 如果是存储库,它将不能用作" live"站点

答案 1 :(得分:0)

  

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

那是你的问题!您不了解Subversion的设置方式!

我对你提供的Subversion路径感到困惑:/var/www/vhosts/www.example.com/。看起来它包含了从服务器根目录到repo的完整路径。 Subversion为服务器使用虚拟根(取决于服务器的运行方式)。你不知道通过查看Subversion repo实际所在的服务器上的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存储库根目录。

看一下其他工作目录应该让你了解。你要使用的网址不是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保存更改。完成后,您可以登录Web服务器,执行svn update并将更改带入服务器。

相关问题