SVN refence
SVN: How to resolve a conflict
常用命令
1 创建工程myproject1
svnadmin create /home/svn/myproject1在/home/svn目录底下, 你可以看见每个工程都对应一个目录. 目录里存放的是改工程的相关数据库.每个工程有不同的设置,也有自己独立的commit number.
2 导入目录mydir1进入myproject1
$ svn import -m "New import" /path/to/mydir1 file:///home/svn/myproject1/mydir1 Adding mydir1/file1 Adding mydir1/file2 … Transmitting file data ......... Committed revision 1.
3 检出工程
svn co file:///home/svn/myproject1或者
svn co svn+ssh://hostname/home/svn/myproject1
4 添加文件或者文件夹
svn add newfile如果要添加文件夹newdir,但是不包括newdir底下的已有文件(默认是递归添加的)
svn add --depth empty newdir
5 提交更改
svn commit -m "add newfile"
6 查看本地或者网络svn工程目录的情况
svn list http://192.168.61.79/repos/server svn list -v http://192.168.61.79/repos/server
7 查看服务器端foo.c的内容,保存到当前目录的foo.c.tmp中.
svn cat foo.c > foo.c.tmp查看foo.c在111版本时的内容
svn cat foo.c -r 111
8 检出某一版本的工程文件
svn co http://192.168.61.79/repos/server -r 4
9 改变当前已存在的工程文件到某个版本
svn update -r 4
10 删除某个文件或者目录
svn delete foo.c
11 查看当前目录或者网络上的svn工程的情况
svn -v status
12 查看工程的更新信息
svn log svn log http://192.168.61.79/repos/server
13 只更新某个文件(比如foo.c)
svn update foo.c
14 放弃foo.c中的地修改,将其恢复到服务器上的版本
svn revert foo.c
15 消除foo.c的conflict标记
svn revert foo.c
冲突解决
多人使用svn合作的时候,常常发生对文件修改的冲突.比如user1 checkout了foo.c的一个版本后,做了本地修改, 然后commit. 但是user2 在user1 commit之前也checkout 了foo.c.等到user2来commit的时候就会被告知:
svn: Commit failed (details follow): svn: File or directory 'foo.c' is out of date; try updating svn: resource out of date; try updatinguser2这个时候运行
svn up Conflict discovered in 'foo.c'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options:这是因为svn发现了conflict, 需要user2采取措施解决. user2可以采取的动作总共包括
(e) edit - change merged file in an editor (df) diff-full - show all changes made to merged file (r) resolved - accept merged version of file (dc) display-conflict - show all conflicts (ignoring merged version) (mc) mine-conflict - accept my version for all conflicts (same) (tc) theirs-conflict - accept their version for all conflicts (same) (mf) mine-full - accept my version of entire file (even non-conflicts) (tf) theirs-full - accept their version of entire file (same) (p) postpone - mark the conflict to be resolved later (l) launch - launch external tool to resolve conflict (s) show all - show this list这里我们的选择包括
- 如果接受user1的版本而放弃本地修改,选择tc或者tf. 使用tf的话会整个文件一起使用user1的版本,哪怕中间有不冲突的部分.
- 如果坚持本地修改,选择mc或者mf. mf就整个文件都使用user2的版本
- 如果想要手动修改解决冲突,就使用e (edit)
- 如果暂时不做决定,等一会再说, p (postpone)
No comments:
Post a Comment