1、使用svn很长时间,但是一直使用都没有去梳理过svn是什么,怎么样使用,只会简单的svn 添加文件,删除文件,co,ci,up
现在简单的整理一下
使用svn的模式有两种
1、Lock-Modify-Unlock
加锁-修改-解锁 别人在修改
这种方式很显然不适合团队协作
2、Copy-Modify-Merge
从库中拷贝一份,自己修改,然后合并,每次拷贝一份就相当于自己有一个独立的working copy
说下svn 的常用命令:
1、命令很多,常用的页就那么几个
2、
svn add 把本地添加的文件纳入svn管理目录下
svn co 拷贝一个working ,就是把代码弄到本地
svn revert 撤销本地的修改
svn up 从库中更新与本地不一样的,当两个人在同一个分支上开发的时候,ci之前需要up一下
svn ci -m "svn log...." 把代码提交到库中
svn log svn日志
svn export 类似于svn co 但是svn export不带任何的版本信息
svn resolved path(aa/aa.php) 当出现冲突的时候,改完戳图之后执行此命令
3、当up或者ci的时候代码有可能会出现冲突
出现冲突会出现提示信息
sd show diff 展示diff信息
tc their conflict
mc their conflict
postpone 稍后解决冲突
edit 编辑冲突文件
一般情况下选择postpone然后找相应人员一起解决冲突
比如说冲突文件为aa.js
在这个文件下会有aa.js.rxx,aa.js.rxxx.aa.js.mine
用编辑器打开aa.js 会看到
<<<<<<<.mine
这中间都是你的代码
============
别人的代码,就是这些代码冲突了
>>>>>>>>>>>>.rxxx
<<<<<<< .mine var aa= $(this).tbattr('downnowurl'); console.log(aa); $('.j_down_now').bind('click',function () { var downNowUrl = $(this).tbattr('downnowurl'); ======= $('.j_down_now').bind('click', function(){ var downNowUrl = $.unescapeHTML($(this).tbattr('downnowurl'));//为何不通过js传递? >>>>>>> .r398463
解决冲突之后,在执行resolved命令然后ci就ok了
svn resolved path/xxx/aa.js
4、当然用3的方式是可以解决冲突,不过太麻烦和容易出错了
一般用SVN提交冲突的时候会给出几个选项,其中p代表推迟,tc代表冲突解决方式是已最新的为准,mc已我本地为准
一般会选择p,这时候本地回多几个问题件,right-version....,left.....,working,等源文件中带有<<<<<< =====这些冲突信息,解决方式是我们选择compare工具比对right和left,已right为准,合并完冲突之后,删除working 源文件和left文件,并且修改right文件的后缀名