svn拉取文件失败_TortoiseSVN常见的错误信息与解决方法

我们在使用TortoiseSVN这款开源客户端的时候,有时候会遇到一些错误信息的提示,比如说,大家都非常熟悉的400 服务器未能理解请求、403 对被请求页面的访问被禁止等。那么,TortoiseSVN出现错误信息该怎么办呢?下面,就一起来看看小编给大家整理的TortoiseSVN常见的错误信息与解决方法!

TortoiseSVN

TortoiseSVN 1.9.2.26806 64位英文安装版(点击进入)

TortoiseSVN 1.9.2.26806 32位英文安装版(点击进入)

1、无法复制/移动‘XXX.svn-base‘到’XXX.tmp‘:系统找不到指定文件。

这个错误信息通常在你更新工作拷贝时出现,可能的原因有两个:

版本库中有两个文件的名字只是大小写不同,这在Windows下是不允许签出的,因为Windows的文件系统是大小写不敏感的。很可能其中一个文件是误添加的,所以你要找出是哪一个,然后删除它,以确保不会把更改提交到错误的文件。

某个文件的文件名是非法的(对Windows来说非法),比如,“con”, “lpr”, “com”都是非法的,因为这些都是设备名。当然,含有“//*?:|”和其它特殊字符在Windows(NTFS 和 FAT)也是不允许的。

是,我们知道这个错误信息对解决问题没什么实质性的帮助,但这个错误信息是来自Subversion库的,我们改不了。

有几个办法可以避免这个问题,请看 这里。

2、无法打开文件’XXX/nnn-n.txn/changes‘:无法访问,文件正被其它程序使用。

通常报告这个错误的人都说这个问题是随机发生的,并且通常会在一次大的提交中发生。重新提交可能成功,也可能在别的地方出错。

最有可能的原因是,有一个病毒扫描程序正在非正常地占用这个文件。你可以试着禁用病毒扫描,或者让它忽略你的版本库文件。

类似的错误也可能发生在你的工作拷贝,试试让它忽略 .svn 文件夹。

3、添加‘XXX’失败:同名对象已存在。

这个错误通常是在你更新工作拷贝时发生。之所以抛出这个错误是因为Subversion绝对不会擅自删除或者覆盖你已有的本地文件。有三个可能原因会导致这个错误:

你有一个未纳入版本控制的本地文件,名字跟其他人已添加的文件一样。这种情况下你可以先移走或者重命名你的本地文件再更新。之后你可以决定是需要合并还是把你的文件改个名字。

版本库中的一个文件被重命名了,但只是大小写不一样,如 Install.txt 改为 install.txt,而你在本地作了修改。当你更新时就会遇到第一种情况,你修改过的本地文件被视为未纳入版本控制。将它移到其它地方,再更新,问题解决。

版本库中有两个文件的名字只是大小写不同,这在 Windows 下是 不 允许签出的,因为 Windows 的文件系统是大小写不敏感的。很可能其中一个文件是误添加的,所以你要找出是哪一个,然后删除它,以确保不 会把更改提交到错误的文件。

4、OPTIONS of ’《path》‘: 401 Authorization Required 《url》

升级到 1.4.x 版之后,你发现无法访问版本库了,每次都出这个错: OPTIONS of ’path‘: 401 Authorization Required ’url‘。

这是因为 1.4.x 版使用了 SSPI 自动验证,即TortoiseSVN会自动使用登录 Windows 域控制器的用户信息来作身份验证。

如果你设置你的服务器以 SSPI 的方式向域控制器作身份验证,而域控制器又没开放 GUEST 用户的话,不会有问题。但是如果开放了 GUEST 用户,自然所有以 GUEST 用户进行的验证都会通过——但是一般来说你是不会授权 GUEST 访问你的版本库的。这就造成了 验证 通过了,但授权 不成功。

另一个失败的原因是,你设置用来访问版本库的用户跟你用来登录工作站的用户不一致(那我就奇怪了,如果是这样你根本就不应该以 SSPI 方式来验证呀)。

有几个方法可以解决此问题:

在域控制器中禁用 GUEST 用户

将登录工作站的用户和访问版本库的用户设为一样

不用 SSPI 来做版本库验证

检查用户名的大小写,将控制文件中的用户名改为小写对解决问题也可能有帮助

5、客户端版本太旧,不能操作工作拷贝‘XXX’

完整的错误信息是:客户端版本太旧,不能操作工作拷贝’。‘;请下载更高版本的Subversion客户端。

当先使用一个比较高版本的Subversion客户端,然后又用比较低版本的客户端来执行命令,就会发生这个错误。比如你先用了 1.4.x 版的客户端操作工作拷贝,然后用 1.3.x 版的操作同一个工作拷贝。

这是因为Subversion1.4 和 1.5 会自动更新工作拷贝的格式,而老版本的客户端不认新的格式。

唯一的解决办法是升级你的客户端,或者用你老版本的客户端重新签出。

6、工作拷贝已过期

这个错误是在提交修改的时候出现的,通常是因为在版本库里,你想要提交的文件已经被其他人修改了。

这时你要先用 更新 命令更新的的工作拷贝到版本库当前的版本。

你可能会不明白为什么要这么做,尤其是在你 确知 版本库并没有被修改过的情况下。答案很简单,因为提交的时候,并不会彻底更新你的工作拷贝,而只是那些修改的文件会被自动更新。举个例子,有个新建的版本库:

Add Folder in revision 1

Add File1 and File2 in revision 2

Modify File1 and commit in revision 3

现在版本库处于修订版本 3,但你的工作拷贝的版本会是这个样子:

Folder : revision 1

Folder/File1 : revision 3

Folder/File2 : revision 2

这时如果你修改 File2 然后提交,就会失败。因为客户端告诉版本库 File2 是在版本 2 的基础上作修改的,但是版本库已经处于版本 3 了。如果此时你执行更新命令,就会将 File2 也变成版本 3 (当然,你的本地修改还会在的)。

这个错误还可能在你试图创建分支或标记时出现。答案永远都是:如果工作拷贝已经过期,那就更新呗!

7、无法写到标准输出

TortoisePlink 使用的是标准的 plink 代码,但不是针对 Windows 编译的,因而无法正常发送错误信息。在 TSVN 的设置 -》 网络里,将 SSH 客户端指向标准 plink,错误信息就会输出到一个命令行窗口中。设置好之后再像之前一样运行 TortoisePlink。

“无法写到标准输出” 表示 Plink 想要抛出一个错误,但是因为 TortoisePlink 并没有提供一个 DOS 窗口,所以就没没有标准输出来接收这个错误信息。

知道是设置有问题后,可以先使用普通的 plink 程序,看到底是什么错误,解决它。

如果普通 plink 挂住了,那就是参数不对(设置 -》 网络)。

另一个可能是 SSH 后台程序找不到 svnserve 可执行文件。以你将要使用的用户(此处为 myuser)登录到服务器,输入 “which svnserve”,如果没有显示指向可执行文件的路径,就把该文件(以及其它 Subversion可执行文件)设为对于该用户可全局访问。

8、400 服务器未能理解请求(400 Bad Request)

REPORT request failed on ’。。。‘ REPORT of ’。。。‘: 400 Bad Request (http://。。。)

你的 DAV 请求被防火墙阻止了,多数防火墙都会这么这么干。你可以让你的管理员更改防火墙的设置,或者以 https 访问,如 https://svn.collab.net/repos/svn/ ,这样你与版本库之间的通信是经过 SSL 加密的,防火墙无法阻止(如果它没有封掉 SSL 端口的话)。

另外,现已确认某些病毒扫描程序(如卡巴斯基)也会导致这个错误。

9、403 对被请求页面的访问被禁止(403 Forbidden)

PROPFIND request failed: 403 Forbidden

这有可能因为你试图访问版本库的父目录(而不是版本库本身)。你可以试着在 URL 尾部指定版本库的名字,还有别忘了名字后面的斜杠 ‘/’。

有关导致此错误的真正原因,请查看 Apache 的错误日志。

10、405 HTTP Method Not Allowed

PROPFIND Request Failed - Error 405 HTTP Method Not Allowed

这个错误有几种形式,可能的原因有以下几个:

PROPFIND Request Failed 你试图使用较低版本的TortoiseSVN浏览版本库的父目录。你可以试着在 URL 尾部指定版本库的名字,或者升级TortoiseSVN到 1.2.3 版或更高。

PROPFIND Request Failed 你漏了 URL 末尾的斜杠 ‘/’,较旧版本的 TSVN 要求在版本库名字后必须有斜杠,否则它会砍掉版本库名字,等于试图去访问它的父目录。

PROPFIND Request Failed 你可能正尝试通过一个不允许 DAV 请求的代理访问版本库。通常你用网页防火墙,以让 DAV 请求通过,或者使用 https 来访问,多数代理服务器无法分析加密过的信息包,因而也就无法阻止 DAV 请求了。

另一个可能是你正在运行病毒扫描程序或防火墙,很多此类软件会在你根本不知道的情况下就阻止了 DAV 请求,可以试一下禁用它们。

Lock Request Failed 你尝试在工作拷贝中锁定一个文件,而这个文件在版本库中已经不存在了。你需要先更新工作拷贝。

有关导致此错误的真正原因,请查看 Apache 的错误日志。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值