今天svn提交代码遇到了一个摸索了几个小时的麻烦。
由于我在写代码时有修改包名的情况,而且修改包名之前也已经提交过这部分代码。于是当我再次提交时就出现了代码冲突,由于不懂svn的merge操作,加上没有权限强制提交屡次提交失败。
我尝试先备份本地代码,然后删掉eclipse上该包所在的代码文件,然后先提交想着能把远程代码给删掉,这样再提交我本地的代码就不会冲突了(因为之前有过这样的经历,是单个文件冲突的情况,但这次是有层级的包结构,不一样),可是我提交时却提示我没有修改的东西需要提交,这是回过神来想一想确实没有这个。
比如,原先的包结构是com.liuxin.a...,而现在我把包名修改为com.liuxin.b.a... 当我删掉com.liuxin.b.a下面的文件时,再次提交,远程上确实是没有这个目录的,所以就提示我没有什么要修改。 于是乎,我就把本地删掉的代码再次拷贝回来,然后提交,第一次我先提交com.liuxin.b.a下的某一个子包的一个文件,先对比到远程文件,奇怪的事有发生了,远程文件上第一行import的还是com.liuxin.a包路径。不知道为什么会这样。反反复复试了很多遍。
再加上我写的代码好几个月没有提交,再次提交时总提示我版本冲突,更加大了解决难度。
摸索了几个小时,终于想到了提交过程中的一个提示是,我要提交的文件目录是com.liuxin.a..下的文件,这就让我很费解,我明明已经改成了com.liuxin.b.a啊,因为整包复制的,所以复制过程中一定有带有svn属性信息的文件。于是我在桌面用小乌龟有下载了一个远程代码。然后想断开svn链接,右键文件夹发现没有断开链接的选项(当然,eclipse上是有的)。百度一下(https://m.jb51.net/diannaojichu/426250.html)发现在每个包下有个隐藏的.svn文件,只要把它删了,然后刷新,就会断开链接了。那么怎么找到这个隐藏文件呢,Windows下:
组织--》布局--》菜单栏--》工具--》文件夹选项--》查看--》勾选下图即可,最后应用:
删掉要上传包下的所有子目录.svn,再次复制到原先要提交的工程中就不会说要更新版本、文件与远程目录文件冲突的情况了。因为这就相当于你新写的代码,版本是最新的,代码及目录也是新建的,所有跟谁都不冲突。
综上,1,慎用复制整包的操作,2,在eclipse修改包名很不方便,尤其是带子包的。3,如果这个模块是一个人负责最好等所有的代码都写完了再提交,这样如果出现需要修改包名的情况,不会影响提交。