Ubuntu下RapidSVN用svnserve执行Diff时出现file协议错误求助
解决RapidSVN执行Diff时使用file协议而非svnserve的问题
问题原因
你的工作副本元数据中记录的仓库URL是file://协议(而非svn://),导致RapidSVN执行Diff操作时直接尝试访问本地文件系统路径,而非通过svnserve服务连接仓库。另外你添加的仓库书签URL格式有误——svn://localhost/var/svn/repos/trunk里的trunk是仓库内的目录,不是svnserve识别的仓库根路径,正确的仓库根URL应为svn://localhost/var/svn/repos。
解决步骤
1. 检查工作副本的仓库关联
进入工作副本目录,执行命令查看当前关联的仓库URL:
cd /home/tom/dev/src/ svn info
查看输出中的Repository Root和URL字段,如果是file://开头,说明工作副本是通过本地文件系统创建的,需要重新关联svnserve的仓库。
2. 重新通过svnserve checkout工作副本(推荐)
- 先备份当前工作副本的修改文件(避免数据丢失);
- 执行checkout命令,从svnserve仓库拉取新的工作副本:
svn checkout svn://localhost/var/svn/repos/trunk /home/tom/dev/src_new
- 将备份的修改文件复制到新工作副本对应目录,替换原工作副本。新工作副本的元数据会自动关联
svn://协议的仓库,RapidSVN执行Diff时会通过svnserve访问。
3. 直接修改工作副本的仓库关联(需谨慎)
如果不想重新checkout,可尝试在RapidSVN中操作:
- 选中工作副本书签,右键选择Relocate(重新定位);
- 将目标仓库URL改为
svn://localhost/var/svn/repos/trunk; - 确认修改,操作前务必备份工作副本,避免路径不匹配导致异常。
4. 修正仓库书签URL
删除原有的svn://localhost/var/svn/repos/trunk书签,重新添加仓库书签为svn://localhost/var/svn/repos,在RapidSVN中浏览到trunk目录即可,这样书签路径与仓库实际结构一致,避免路径混淆。
内容的提问来源于stack exchange,提问作者Tom Boddington
相关产品推荐
相关产品推荐

