svn更新及提交顺序问题
这个原因我本来是打字给你举例说的,但发现但太多太罗嗦了
所以我又删掉了,直接告诉你,怎么操作是合理的吧
每次提交代码前,先更新你本机的svn代码;
提交代码时,只提交自己自己修改过的代码文件,其它没改动的文件,不要提交;默认情况下svn只会提交当前变动过的文件,但我也遇到过有些同事没事干,提交前没更新代码,然后提交时选中了自己没修改的文件,一起提交,结果导致svn服务器上的代码被污染了而其他人在不明真相的时候,又更新了自己的代码库,结果悲剧发生了,他之前做的工作白做了,被那个无聊的人一次无聊的提交给清掉了
每次更新时,大概看一下更新日志,看看是不是有人跟你在维护同一个文件或同一个文件的同一处代码片段这个一定要注意
偶尔是会出现这个错误,可以尝试执行一下清理(cleanup)然后再update,或则直接从服务器上把这个文件单独取下来放入本地文件夹。
SVN更新多目录文件的简便方法 :1、开发端通过svn的记录(比方说commit)导出要跟新的部署清单。
2、测试会拿到XXXlst文件(就是txt文件改了后缀)和一个命令文件(其实就是一个txt文件,写了一个命令,然后后缀改成bat)。
3、命令为rar批量抽取文件命令:rar a changefilesrar @XXXlst。该命令可以在DOC下执行,或按照2生成bat文件,双击即可。
4、如果找不到该命令,再环境变量的path里添加Winrar的安装路径。
不会覆盖的。
如果远程代码变更与你本地的修改没有冲突,就不会有什么问题,如果远程代码与你的修改有冲突是不会直接覆盖你本地的修改的。
它会问你怎么去处理冲突,是采用本地的还是远程的。所以一般不用担心会被覆盖。
svn比较cvs来说,有个好处是多个人可以同时对同一个文件进行修改,并同时提交。
服务器会自动记录这些变动。
如果碰巧两个任修改的是同一行代码,那么svn会用颜色分别标注出每个人的修改。
两种方法:
1重新定位,将服务器地址根据当时是内网还是外网relocate成相应的地址,不管小乌龟或者Eclipse都支持。
2如果你的SVN工具不支持或者重新定位不成功,又或者不想每次都切换,那么可用用个笨办法,用外网地址新建一个SVN工作路径,重新check out代码,以后都使用这个地址,前提是确保此地址在内网也能成功访问并且不会经常更改。
希望能帮到你。
一、先分别了解下还原和更新各自的作用。
还原,将本地副本目录中所选文件或目录进行还原,以撤销本地副本目录的修改。
更新,将本地副本目录中所选文件或目录进行更新,以将本地副本目录与SVN库中最新版本进行同步。
二、先还原再更新中的先还原并不是一个必要操作。这取决于你是否遵照SVN使用规范,将代码修改目录和本地副本目录分开。且是否有在本地副本手动进行无用修改(对整套代码来说)。
所以,如果你的本地副本中有任何有用修改,则不能进行还原,应先考虑修改是否需要提交上库;如包含无用修改,则需先将本地副本全量还原再进行更新。
这里又涉及了是符合规范的代码修改目录和本地副本分开;还是单纯只有一个本地副本,修改也在本地副本中修改。如果是分开,那么基本不会用到还原操作,可以直接更新,但是还原操作也可以放心用,在碰到问题时也可以先还原再更新;如果只有一个,那就不能轻易用还原操作,因为还原操作很可能将你刚修改好的代码还原掉。
用dos命令进入项目文件夹,运行svn cleanup;不要直接右键点击找cleanup选项。
SVN更新(SVN Update)及如何解决冲突文件
SVN update:
更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。
冲突文件的解决
1、对于每个冲突的文件Subversion在你的目录下放置了三个文件:如下:
2、 为什么会产生冲突呢?
原因很简单就是因为不同的人,同时修改了同一个文件的同一个地方,这时候,他提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成如上3个文件。
3、解决方案如下:
1) 首先我们可以看下1txt代码如下:
2) 然后我去掉多余的代码,1txt变成这样:
3)进行提交,还是提交不了,如下所示:
4)为什么?因为冲突会产生上面的三个文件,有上面3个文件存在肯定提交不了,这三个文件代码及解释如下:
4、新的解决方案:
前面说过 <<<<<<< mine …… =======
……之间的代码是我未产生冲突之前修改的代码,
======= ………>>>>>>> r16 这中间……的代码是别人与我冲突代码的部分,从上面的代码可以看到 aaaaaaaaa是我同事新增的 ,00000是我后增加的。
1)使用revert(回滚)操作,该操作表示用户放弃自己的更新代码,然后直接提交,这个时候你的代码就会使服务器上最新的代码,即A用户提交的新代码,你的代码不会被提交,如下所示:
2)点击ok按钮后 可以看到其他三个文件都自动删掉了,1txt代码变成如下代码:
也就是a用户提交的代码,我自己更新的代码需要自己动手复制进去即可提交commit。
0条评论