从网络中检出SVN存储库

时间:2011-11-30 19:53:52

标签: svn windows-xp tortoisesvn windows-server-2003

我在 How to update TortoiseSVN over the network? 之前问了一个类似的问题。那时我正在使用服务器的VM副本,并且我列出的解决方案有效。这次我使用的是实际的服务器,我在检查我的存储库时遇到了问题。

Unable to open an ra_local session to URL 
Unable to open repository 'file://REMOTE-PC/repositories/MyApps/trunk/App1' 
Can't open file '\\REMOTE-PC\repositories\MyApps\trunk\App1\format': Logon 
failure: unknown user name or bad password.

我的问题是

  1. 我是否需要对服务器上的文件夹有特殊权限才能成功检出存储库?

  2. The documentation here指出要在哪个协议使用?我以前在VM上使用过这个工作

    文件:// REMOTE-PC /库/安装MyApps /中继/ App1的

  3. 我应该使用什么?

    +------------+--------------------------------------------------------------+
    | file:///   | Direct repository access (on local disk)                     |
    | http://    | Access via WebDAV protocol to Subversion-aware Apache server |
    | https://   | Same as http://, but with SSL encryption.                    |
    | svn://     | Access via custom protocol to an svnserve server             |
    | svn+ssh:// | Same as svn://, but through an SSH tunnel.                   |
    +------------+--------------------------------------------------------------+
    

    之前有什么作用,现在不起作用?请解决这两个问题。

    我还想提一下,如果我想从服务器(我使用远程桌面)访问我的PC(存储库),我必须输入用户名和密码。我是否必须在SVN命令中提供这些?

3 个答案:

答案 0 :(得分:4)

您永远不应该使用file://协议。永远,永远,永远。好吧,有时它可以使用,但它应该只有在以下所有情况都成立时才会使用:

  • 您是唯一使用该存储库的人。
  • 存储库位于您的系统上。
  • 你正在尝试Subversion。

如果您的存储库位于远程系统上。不要使用file://。如果这是公共存储库,则不使用file://svnserve Subversion服务器进程非常易于设置和使用。并且,它很快,并且它避免了与直接访问存储库相关的所有问题和错误。实际上,在我的系统上的私有存储库中,我使用svnserve


至少有十几个错误可能会导致您指出的问题。服务器需要权限,在现代Windows系统上,即使您以管理员身份登录,也可能存在UAC问题。它只是在寻找麻烦。

查看有关设置svnserve的文档。您将遇到的最大问题是确保您的IT部门没有阻止端口3690。

在远程服务器上运行svnserve进程,并确保服务器进程具有完整的所有权以及存储库中所有文件的所有权限。

有一些关于svnserve进程的问题,不允许它开箱即用:

  • 编辑conf/svnserve.conf文件:默认情况下,此文件非常好。但是,默认密码文件已注释掉。移除您在#行前面看到的password-db = passed。我不确定为什么这不是默认值。您还可以设置realm的名称。这不是必要的。

  • 编辑passwd文件:您需要为每个用户设置用户名和密码。请按照示例进行操作。

然后运行svnserve,现在您可以通过以下方式访问您的存储库:

$ svn ls svn://REMOTE-PC/MyApps/trunk/App1

这很容易做到(整个过程可以在几分钟内完成)并且可以消除所有问题。

答案 1 :(得分:3)

使用Subversion,您的库对被操作以存储“存储库”的文件有严格的要求。 SMB服务/ Windows共享/ Samba不符合这些要求。

您不应该通过在网络共享中使用file://协议来隐藏网络免受颠覆。这意味着网络故障和中断不会触发subversion意识到可能无法正确存储更改。根据变化和环境,这可能会对您的存储库产生非常糟糕的影响。

如果您使用的是远程存储库,请使用其中一种网络感知协议。他们拥有适当的代码来检测和捕获网络中断,并且不会混淆错误报告存储库中存储的内容。

答案 2 :(得分:0)

检查此路径上的读/写权限:

\\REMOTE-PC\repositories\MyApps\trunk\App1