svn 存储库停止与 svn+ssh 一起工作(但在服务器上本地工作)
Posted
技术标签:
【中文标题】svn 存储库停止与 svn+ssh 一起工作(但在服务器上本地工作)【英文标题】:Svn repository stopped working with svn+ssh (but works locally on the server) 【发布时间】:2011-07-14 23:16:57 【问题描述】:我有一个 svn 存储库,用于使用 svn+ssh 协议进行结帐。它有一些用 svn+ssh URL 引用自身的 EXTERNALS。
直到今天我才离开这个项目一段时间。当我尝试访问 svn+ssh url(几个月前曾经工作过)时,我收到消息svn: No repository found in 'svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository
。我仔细检查了,路径和主机名都是正确的。
我尝试使用 file://
URL 在托管 repo 的机器上检查它,它成功了,直到它必须检查 EXTERNALS,它在 No repository
消息中失败。我在本地和远程使用相同的用户。
我应该在哪里寻找日志/调试信息来解决这个问题?
【问题讨论】:
【参考方案1】:我不知道在哪里可以找到日志,但我认为您可以使用以下命令删除/更改该目录中的 externals 属性:
svn propedit svn:externals path/to/dir
见: http://svnbook.red-bean.com/en/1.0/ch07s03.html
【讨论】:
【参考方案2】:我找到了办法。我把它写在这里以供将来参考。
编辑:结果是一位同事在没有通知的情况下修改了该文件。然而,找到问题的原因比理想更困难。
长话短说:即使我使用了 URL svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository
,在服务器上查找的真实路径也是 /var/svn/the/right/path/to/the/repository
。确实是走错路了。但我认为我为找到这一点所做的步骤可能对其他人有用,因此我将在此处报告。
首先,我将(在服务器上)/usr/bin/svnserve 移动到 /usr/bin/svnserve.orig 并将我自己的 svnserve 与这些内容放在一起:
#!/bin/bash
strace -o /tmp/svntrace /usr/bin/svnserve.orig $@ | tee /tmp/svnserve-out
然后我再次运行结帐,然后服务器上的/tmp/svntrace
的尾部包含我解决问题所需的所有信息。
似乎在文件/var/svn/svnwrapper.sh
中使用-r
选项设置了一个新的svn 根目录。删除后,一切都像魅力一样。
我仍然无法理解发生了什么(过去它曾经有效,我几乎可以肯定我没有改变任何东西)。
【讨论】:
【参考方案3】:感谢您向我介绍 strace。我用 strace 调试了为什么这个命令:
svn+ssh://HOSTNAME/path/to/svn/directory
将无法识别 ~/.ssh/config 中的这一行:
Host HOSTNAME
要使用 strace,请在 ~/.subversion/config 的 [tunnels] 部分中。我改变了这个:
ssh = ssh -o ControlMaster=no
到这里:
ssh = strace -o tmp ssh -o ControlMaster=no
然后我运行了这个命令:
svn list svn+ssh://HOSTNAME/path/to/svn/directory
查看进入文件“tmp”的 strace 的输出,我可以看到“HOSTNAME”作为“主机名”传递给 ssh 命令。快速修复是在 ~/.ssh/config 中更改此行:
Host HOSTNAME
到这里:
Host HOSTNAME hostname
无论主机名作为“HOSTNAME”还是“hostname”传递给 ssh,这都会导致应用特定于主机的设置。
【讨论】:
感谢您使用 strace 的指南 - 从这里我发现 svn+ssh 失败的原因是我需要对我的私钥文件设置更严格的权限为described here【参考方案4】:strace 帮助隔离了问题。我的存储库位于 /var/svn/repos 但跟踪显示它无法找到 /repos/format。我在 /repos 添加了一个指向 /var/svn/repos 的符号链接,它又开始工作了。
【讨论】:
以上是关于svn 存储库停止与 svn+ssh 一起工作(但在服务器上本地工作)的主要内容,如果未能解决你的问题,请参考以下文章
TortiseSVN svn+ssh 错误:无法连接到 URL 上的存储库...网络连接意外关闭