我刚访问了一个使用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
结帐?
答案 0 :(得分:0)
URL: https://svn.example2.com/client.account/trunk
答案 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
并将更改带入服务器。