SVN常见问题登记(持续更新)

1.资料用途

本资料登记项目人员使用TortoiseSVN客户端,或者在eclipse中使用svn插件时,遇到的问题,问题原因及对应的解决方案。用于帮助配置管理员快速定位及解决常见问题。

本文档为动态文档,即应为持续不断更新的。

2.问题和解决方案(每个问题之间我用了分割线,方便逐个查找)

问题1.如何将svn插件加入eclipse中?

解决方法

步骤1 下载svn插件;

步骤2 将下载的svn插件带文件夹解压到eclipse安装文件中;

步骤3 在eclipse安装文件夹中新建links文件夹;

步骤4 在links中创建svn.link文件;

步骤5 在创建的文件中指定svn插件路径:

path=D:\\Tools\\eclipse\\site-1.6.5

步骤6 在eclipse菜单中,依次点击preferences -> Team -> SVN ->SVN接口,将svn接口的选项改成javahl。

以上6个步骤,即完成插件配置。


问题2.用户在使用eclipse创建资源库时,提示验证位置时发生错误。错误提示如下图:

问题2

问题原因

项目人员使用的机器保存的是别人的账号密码,该账号对资源库没有访问权限。

解决方法

方法1:把Documents and Settings\Administrator\Application Data\Subversion\auth\文件夹中的所有文件删除,即可;

方法2:如果不行,还可以试试看,安装TortoiseSVN客户端,然后右键菜单TortoiseSVN----设置(settings)----已保存数据(Saved Data)----认证数据(Authentication data),点击“清除”(clear);

清除后,重新下载项目时输入账号密码就可以了。


问题3.Eclipse操作时,提示用户“请求的名称有效,但是找不到请求的类型的数据。svn: Unable to connect to a repository at URL……”

问题原因:本机不能连接网络

解决方法:本机可以上网便正常。


问题4.64位Win 7 上eclipse的svn插件找不到 javaHL(javaHL not available),如下图:

问题4 图1-1
问题4 图1-2

问题表现形式

机器1为64位win7系统,机器2为32位系统,机器2提交的文件,机器1同步不到,但修改的文件可以正常同步。

说明

Subclipse是一个很优秀的SVN客户端。它提供了ClientAdapter、JavaHL和SVNKit等方式与SVN服务交互。官方强烈推荐使用JavaHL的方式。JavaHL使用JNI调用SVN的本地库。速度快,稳定可靠。

但是在64位的Win7下,就比较麻烦了。默认安装好后, Subclipse的配置界面中,显示的javaHL的状态是“unavailable“,如图。这是因为系统中没有安装svn的javahl。

解决方法

安装SlikSVN,可以在http://www.sliksvn.com/en/download下载SlikSVN,不同的Subsvn要安装不同的SlikSVN。

当前版本对应

问题4 图2

下载安装完SlikSVN后,配置系统环境变量,把SlikSVN安装目录下的bin目录加入到系统环境变量:

问题4 图3

重新启动Eclipse,你会看到Subsvn已经有JavaHL库了

问题4 图4

问题5.svn修改后无法commit,也无法update,提交时提示“Incomplete copy information on path ...

问题原因:有可能是因为本地的.svn文件夹过多导致。

解决方法

删除本地工作区源代码中的.svn文件夹,update不了的重新checkout或者update即可;commit不了的,删除.svn文件夹后,先将文件add加入版本控制,再commit即可。


问题6.svn代码冲突,无法提交

问题原因

一个文件同时被a1和a2两个人修改。a1修改完后先提交未告知a2。a2修改后未先将版本更新,直接提交。导致冲突发生。

解决方法

步骤1 右键冲突文件,在TortoiseSVN菜单中点击“Resolved”先将冲突状态移除;

步骤2 右键该文件,update更新版本。

参考:http://www.haodaima.net/art/2512917


问题7.在使用TortoiseSVN客户端操作版本合并merge时失败提示“one or more files are in a conflicted state”,错误如下图

问题7 图1

问题原因:选择merge第一项时,没有选择需要合并的文件版本号

解决方法

在对svn文件进行合并时,选择需要合并的文件的版本信息,然后next即可,如下图:

问题7 图2

问题8.在eclipse提交代码时提示Lock‘Attempted to lock an already-locked dirsvn:Workingcopy'D:\workspace\qxt_admin\WebRoot\WEB-INF\view\meipm\business\library\mmsTemp'locked’,错误详情如下图:

问题8

问题原因:本地工作拷贝被锁定。

解决方法:使用Clean up清理即可。


问题9.在eclipseupdate更新文件提示前一个操作被中断让用户尝试cleanup解决。但操作cleanup后提示整个目录被锁定,报错如图示:

1)更新报错:

问题9 图1

2)Cleanup报错:

(忘记截图),弹出提示框提示整个文件夹均被锁定无法操作。

问题原因:未能定位。

解决方法

尝试了以下方法

一.直接根据提示,使用Cleanup清理,清理完成更新。若更新不成功,继续尝试其他方法。

二.清理wc.db文件中的记录;

*.下载sqlite3.exe

*.找到你项目的.svn文件,查看是否存在wc.db

*.将sqlite3.exe放到.svn的同级目录

*.启动cmd执行sqlite3  .svn/wc.db "select * from work_queue"

问题9 图2

*.看到一些记录,下一步执行delete from work_queue,执行完后再执行步骤4的语句,会发现已经没有看到记录了。

问题9 图3

*.现在在到项目里面,执行cleanup。

(文章链接:http://blog.csdn.net/luojian520025/article/details/22196865

三.若第二种方法后,还是提示目录锁定,删除一下锁定文件。

产生这种情况大多是因为上次svn命令执行失败且被锁定了,需要删除文件夹中的lock文件,即可解锁。这里介绍3种方法:

方法一.直接进行cleanup;对较小的文件比较管用,文件稍大些等待时间很长或不起作用;

方法二.选择文件,右键执行release lock;等待时间较长;

方法三.手动删除锁定文件:

*.在运行中输入cmd进入命令行;

*.在命令提示符下cd 到svn项目被锁定的位置;

*.执行命令del lock /q/s

*.等待删除lock文件成功,cleanup后重新更新SVN。


问题10.在更新svn时候提示目录下多出了一个xx.tmp文件,提示使用cleanup解决。但每次cleanup都会产生一个.tmp文件,并且提示文件目录locked。

解决方法

将隐藏文件.svn解除隐藏,之后把tmp目录下所有临时文件以及目录删除,再次cleanup后。更新操作成功。


问题11.在eclipse中提交失败,提示不知道这样的主机,如下图:

问题11

问题原因

这种情况一般是网络问题导致。也可能是因为用户提交前未进行更新操作。

解决方法

提交(commit)前先更新(update),一般都可以解决。

积累1  eclipse中svn图标的详细含义

在eclipse中使用svn,会遇到这样那样的问题,对svn图标含义的了解,可以方便我们更加快速准确地分析问题产生的原因。以下链接文章是比较详细的svn含义解说。欢迎参考学习。

http://wenku.baidu.com/link?url=7Yuvp8ShLwPQFnBOCvj6rtJAfg0Ypk2kfakhkYjf137cXxZx0QG_IaxFSULkOIH-vMvIFjFPjar_nGIbLyaeEBkGDb1gkYaCDOzMzgBE_Sm


问题12.在Eclipsecommit,提示Malformed network data

今天在Eclipse中提交svn项目时,遇到一个问题,就是提交更改时报 svn: Malformed network data 错误。google了一下,才知道是javaSVN的版本问题。我用的Subclipse,虽然是最新版,但是它使用的javaSVN库不是最新的。

解决办法有三个

1.不用javaSVN,而使用javaHL接口,在我的Ubuntu9.10上试了一下,安装libsvn-java是成功了,但是提示javahl的版本要1.3.x或以上,网上看了一下,基本上这种方法比较麻烦,放弃了。

2.使用最新版的javaSVN库,去svnkit(javaSVN)官方网站http://svnkit.com/download.php 下载一个Standalone Version的zip包,然后将 $eclipse/plugins/org.tigris.subversion.subclipse.core_1.0.0/lib 下的 javasvn.jar和svnjavahl.jar替换成下载的zip包中的svnkit.jar 和 svnkit-javahl.jar,文件名仍然是 javasvn.jar和svnjavahl.jar 。【我执行到这里可以用了】另外还要加一个 trilead.jar,也在zip包中,不过直接放到 lib下面还无法加载,我干脆把其中的类文件打包到 javasvn.jar 中去了。OK,重启Eclipse就可以了。

3.直接不用subclipse,改用svnkit 。不知道有没有问题,没试过。


问题13.本地使用TortoiseSVN客户端,删除本地代码后提交,提示提交失败,失败信息如下:

问题13

问题原因:返回上一级后,发现目录冲突了。

解决方法:使用Resolved解决了冲突之后再提交,就没有问题了。


问题14.本地使用TortoiseSVN客户端提交commit失败提示“Permission denied0”,如下图没有访问目录的权限。

问题14

解决方法

对应目录权限指定给操作者即可。(若该操作者不是项目人员,权限不予开放。若需开放权限,需由项目负责人提交申请。)


问题15.checkout时出错,提示“请求的名称有效,但找不到请求类型的数据”,如下图:

问题原因:路径不正确。

解决方法:使用正确的路径checkout即可。

问题15

问题16.’.’is not a working copy. Can’t open file ‘.svn\entries’:系统找不到指定的路径。

问题原因:输入的访问路径不正确。如svn://192.168.6.200/如果最后少写了“ /”,就会出现这种错误提示。


问题17.将文件checkout之后,没有出现SVN的图标,是怎么回事?

解答:有些时候在客户端Checkout文件后,SVN的系统图标也会不显示,可以执行一下“Clean up”,就会出现SVN的系统图标。


问题18.为什么添加的文件,别人看不见,版本库里也找不到?

解答:最可能的原因,就是你只操作了“Add”而没有操作“Commit”,这样只是在本地注明某个文件是预定要增加的,而没有实际添加到版本库中,要添加到版本库必须执行“Commit”。删除文件也是一样。


问题19.“Commit failed……You have to update your working copy first”提交失败需要首先执行更新操作。

解答:这个提示很明显。若要提交,先进行更新操作。一般先更新再提交就正常了。

这是因为多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导致该错误;


问题20.更新时提示文件发生冲突:“One or more files are not a conflicted state。”

解答:多人同时修改同一文件的同一部分,SVN无法自动进行合并,会导致该错误;解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。


问题21.“Commit failed;File already exists”提交失败,文件**已存在。

解答:版本管理系统在改变你的计算机上的工作副本时,是非常的小心的。在做任何事情之前,它都尽可能把您的意图写到你的计算机上的日志文件中去。但如果偶然地操作中断了(例如:突然停电了,您的计算机死机了),那么日志文件记录就可能同您最后的工作状态不一致。一种建议解决途径:先把要提交的东西拷出来放到其它目录,再更新本地文件,然后把拷出来的文件重新放回去提交。


问题22.Working copy’**’locked. Please execute the’Clean up’command.

解答:Subversion客户端在提交内容之前会在本地的工作拷贝写日志,防止其他客户端再次作操作,如果这个提交过程中发生错误,就会存在未清理的日志,解决这个问题之需要执行“清理”操作,整理你的计算机上的工作副本,清理错误的日志记录,使您可以继续操作。


问题23.执行clean up时,出现错误“Subversion reported an error while doing a cleanup!” '**' is not a working copy directory ”

解答:遇到这种情况,先删除隐藏文件夹.svn中的tmp下面的临时文件,再执行 clean up。


问题24.因为仓库与目录很多,使用TSVN每次选择目录URL of repository有很多地址,如何才清除呢?像清除浏览器中的历史那样,用什么方法呢?

解答:右键->TortoiseSVN->Settings->Saved Data,就可以清除你想要的东西了,包括URL、log、窗口大小、密码缓存等。


问题25.在SVN中选中一个目录show log时,出现了某些版本只显示版本号和(no date),没有其他信息,什么原因引起的?

解答:出现了(no date)的revision,为其他人修改了你所没有权限访问的某个目录下的文件。


问题26.提交时失败,At least one property change failed; repository is unchanged,如下图:

解答:注释信息较长,适当的减少,问题解决。

问题26

问题27.提交时,提示checkout  of……403 forbidden

“svn: CHECKOUT of '/svn/meip/!svn/ver/13833/%E5%86%85%E8%92%99%E5%8F%A4%E4%BC%81%E4%BF%A1%E9%80%9A/01.%E5%BC%80%E5%8F%91%E5%BA%93/00.%E4%BB%A3%E7%A0%81/MessgaeServer29_nm/src/com/creawor/meip/sms/server/security/GaoeControlChecker.java': 403 Forbidden (http://www.creawor.com:2051)”

问题原因:svn插件使用错误或者未安装。

解决方法:1、进入MyEclipse中 -- > windows选项-->Perferences选项-->Team选项-->SVN选项窗口,查看svn接口是否含两项。如下图。其中JavaHL为正确的svn插件客户端。若选择错误,更改即可。

2、若无JavaHL接口文件,表示svn插件未安装,安装插件后,在此处设置即可。设置完成,重启eclipse。

问题27

问题28.有权限的项目提交时提示forbidden(路径中的字母大小写问题)

问题报错:org.apache.subversion.javahl.ClientException: URL access forbidden for unknown reasonsvn: Commit failed (details follow):svn: Access to /svn/smm/!svn/act/423e5688-9469-204c-b92f-785c1c3f1e32' forbidden

org.apache.subversion.javahl.ClientException: URL access forbidden for unknown reason

svn: Commit failed (details follow):svn: Access to '/svn/smm/!svn/act/423e5688-9469-204c-b92f-785c1c3f1e32' forbidden

以上问题出现在项目提交时(eclipse中)

其时项目下载是正常的,尝试过的解决方法

1.清理账号密码重新登录,问题仍在

2.清理或刷新项目,问题仍在

3.项目大小写与版本库更改为一致,问题解决

以后项目下载要注意项目的大小写问题,以免再次出现这种情况

(在网页访问时大小写不区分,有些项目也不区分大小写,不知道是不是巧合,就是大小写的更改解决了上述问题)


问题29.资源同步时,出现以下问题

org.eclipse.team.core.TeamException: Error getting status for resource L/qxt_web/src/com/creawor/meip/auth/LoginAction.java org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded

svn: Working copy 'E:\workspace[newgd]\qxt_web\src\com\creawor\meip\auth' is too old (format 10, created by Subversion 1.6)

eclipse不编译,每次修改代码控制台都显示错误

svn:The working copy needs to be upgraded

org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded

svn: Working copy ‘E:\aliyun-spirit\spiritmap0916′ is too old (format 10, created by Subversion 1.6)

提示的意思就是要更新svn版本,引发问题的原因就是用低版本的svn客户端/插件检出的代码后,升级了svn客户端/插件,去处理之前低版本载下来的代码。右键project--Team--upgrade之后就ok了。或者在当前版本下重新检出代码


2017年3月31日更新

问题30.提交时失败,提示out of date

问题原因:文件有冲突,服务器上该文件的版本比本地版本新。

解决方法:先update,解决冲突,再commit,步骤如下:

a.先备份out of date的新文件

b.对out of date文件执行revert操作

c.再执行update操作

d.用刚才备份的新文件覆盖掉旧有的文件

e.再次执行commit,ok.


2018年10月25号更新

问题31.编码原因导致的乱码问题

解决方法:因为工具默认编码为ISO-8859-1,用window->perference->general->workspace页签中设置默认,也可以对工程右键->perperties->resource修改单个工程编码


待续……

推荐阅读更多精彩内容