【问题标题】:How can I specify a Windows drive letter when using subversion svn+ssh使用 subversion svn+ssh 时如何指定 Windows 驱动器号
【发布时间】:2011-02-17 17:33:34
【问题描述】:

如何在使用 subversion svn+ssh 时指定 Windows 盘符?甚至可能吗? 在一个系统上这是可行的:

svn list svn+ssh://username@hostname://Preserve/svn_repository

但是在那台机器上,所有 svn 和存储库以及 ssh 登录的位置都在 C: 驱动器上。

在新机器上,subversion 存储库位于 N: 驱动器上,但 ssh 和 svn 命令位于 C: 驱动器上。

我一直无法找到找到我的存储库的路径规范(存储库在此目录中:N:\Preserve\Repositories\jbp)

请注意,当我通过此命令登录机器时,我可以访问它:

svn list file:///N:/Preserve/Repositories/jbp

作为一个例子,这里是一个使用 svn+ssh 失败的调用

svn list svn+ssh://username@hostname/N:/Preserve/Repositories/jbp

【问题讨论】:

    标签: svn


    【解决方案1】:

    如果您想要基于文件的引用,you need to use a file based URI

    请注意,主机名是“localhost”,如果您省略它,那么 URI 标准将假定您的意思是 localhost。

    如果您决定尝试从其他机器访问文件;好吧,那么您需要一个网络 URI(可能是 URL)。无法直接访问位于网络另一端的文件系统,您必须使用网络代表您访问文件系统。

    适用于类 Unix 系统。

    file://localhost/etc/fstab
    file:///etc/fstab
    

    对于类似 Windows 的系统,冒号会导致 URI 格式出现问题。一些库将 C: 中的冒号替换为像 C| 这样的竖线(或竖线)。其他库违反了 Windows 文件 URI 的规则并允许使用额外的冒号。

    对于使用冒号替换的系统

    file://localhost/c|/WINDOWS/clock.avi
    file:///c|/WINDOWS/clock.avi
    

    对于稍微违反 URI 格式的系统

    file://localhost/c:/WINDOWS/clock.avi
    file:///c:/WINDOWS/clock.avi
    

    Wikipedia 在这一点上获得了大部分荣誉,但我之前在 Subversion 中使用过基于文件的 URI,它们运行良好(尤其是在您自己的主目录中创建一个小型存储库以跟踪单人爱好项目的更改) .

    【讨论】:

    • 据我所知,file:/// 使用 svn 的方式只能在本地工作,不能超过 svn+ssh。我在原始帖子中添加了更多信息,以表明它不是我需要使用的 file:/// svn 路径。
    • 如果您想访问另一台机器上的文件,您的计算机无法直接访问该文件。它必须使用网络协议,因为磁盘没有直接连接到您的计算机。尽管许多用户界面隐藏了远程共享只是您通过网络协议查看远程共享的事实,但浏览另一台机器的文件仍然是网络访问而不是本地访问。不能本地访问非本地文件,必须使用网络协议。
    • 由于您必须使用网络协议,驱动器号通常是隐藏的,因为网络“名称”不必包含文件系统的详细信息。 HTTP 服务器通常会限制对特定目录及其子目录的文件访问,因此使用 HTTP 访问远程计算机的人不能随意从计算机的敏感区域(如 C:\SYSTEM 等)获取文件。
    • N: 驱动器是主机上的本地驱动器。它不是映射到 N 的网络驱动器:
    • svn+ssh 是一种允许您从远程机器使用颠覆的协议。它通过 ssh 隧道进入远程机器,然后在那里运行 svn 命令,并以某种方式将响应传送回您的远程机器。请注意,我对远程机器的 ssh 访问权限使我可以完全访问该机器,例如,我可以这样做来查看我试图让 ssh+svn 工作的地方的目录内容:ssh username@host ls "N:\\Preserve"
    【解决方案2】:

    这不是问题的答案,而是一种解决方法。 我放弃了,只是将存储库移动到 C: 驱动器。 幸运的是,由于 subversion 的工作方式,我能够复制存储库,并将旧的移走,这样我就不会意外使用它。 这使得像下面这样的命令现在可以在互联网上远程工作,由 ssh 保护:

    svn list svn+ssh://myusername@repositoryhostname/Repositories/jbp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多