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 的错误日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值