【问题标题】:Checkout SVN repository from a network从网络签出 SVN 存储库
【发布时间】:2011-11-30 19:53:51
【问题描述】:

我在 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 上使用过这个,它可以工作

    file://REMOTE-PC/repositories/MyApps/trunk/App1

我应该使用什么?

+------------+--------------------------------------------------------------+
| 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 命令中提供这些吗?

【问题讨论】:

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


    【解决方案1】:

    您永远不应该使用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
    

    这很容易做到(整个事情可以在几分钟内完成),并且会消除您的所有问题。

    【讨论】:

    • 首先,很好的答案和很好的解释。不过有些问题。当我从服务器(PC 上的代表)访问我的 PC 时,我通常需要我的登录名。 SVN不需要这些登录吗? 2) 我有 svnserve.conf、authz 和 passwd。 (passed大概是一种类型吧?)。谢谢
    • @Thecrocodilehunter - 作为自动更正更正,它不一定是错字。我输入passwd,它更正为passed,这真的让我失望了。
    • @Thecrocodilehunter - 您需要某种登录信息库服务器才能进行所有设置。一旦svnserve 启动并运行,您就不需要服务器上的Windows 用户帐户来使用Subversion。事实上,最好不要这样做。这样,用户就无法修改存储库。 svn 帐户和密码在passwd 文件中。用户的默认帐户名来自用户的环境。如果用户以 dave 身份登录,Subversion 会将其作为 Subversion 帐户的名称。否则,用户可以使用--username参数指定一个。
    • @DavidW。在 file:/// 上使用 SVN 不是最佳方式,但即使网络出现故障,它也不会破坏您的 SVN 存储库。 SVN 创建一个事务,然后在完成后将其提升为修订版。在最坏的情况下,您最终会得到一个未提交的事务,并且您的存储库仍将完全正常运行(至少在 2015 年)。要清理这些失败的事务,请参阅svnbook.red-bean.com/en/1.6/…
    • @formix 版本控制系统的主要工作是保护存储库的安全。要使用file://,您必须授予将使用它的每个人对存储库本身的写入权限。任何用户都可以手动编辑文件,或删除 repo。此外,网络驱动器和保证写入可能存在问题。远程系统上的svn 命令不能始终验证写入确实发生在某些网络文件系统中。对于 nfs 的旧实现尤其如此。
    【解决方案2】:

    使用 Subversion,您的库对存储“存储库”的文件有严格的要求。 SMB 服务/Windows 共享/Samba 不满足这些要求。

    您永远不应该通过在网络共享上使用file:// 协议来隐藏网络以防止颠覆。这意味着网络故障和中断不会触发 subversion 意识到更改可能未正确存储。根据更改和情况,这可能会对您的存储库产生非常糟糕的影响。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 是的,忘了说。我以管理员身份登录。
      猜你喜欢
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多