SVN 冲突

本文最后更新于:2024年9月8日 晚上

SVN 冲突

过时的文件

  • 在一个相对服务器端版本来说是旧版本的基础上进行了修改的文件,这时候如果提交则会失败!
  • 所有过时的文件都必须先执行更新操作,更新后在最新版基础上修改的文件才允许提交。
  • 更新完之后,user1对文件的修改也同步到了user2的工作副本,之后user2就可以正常提交了。

冲突的产生

  • 从服务器端更新下来的修改和本地的修改在"同文件同位置”不一致,也就是修改了同一行内容。
  • 现在两个用户同时修改了同一行,user2先提交了,这时user1更新时发现冲突。

冲突的表现

文件内部

  • hello.txt
1
2
3
4
5
6
7
hello world
<<<<<<< .mine
Thanks
||||||| .r4
=======
谢谢。
>>>>>>> .r5
  • <<<<<<<||||||| 是本地修改之后的内容
  • |||||||======= 是修改之前的内容
  • =======>>>>>>> 是服务器端修改的内容。

目录内部

  • 由于发生冲突会产生以下三个文件。
    • xxx.mine文件:发生冲突时本地文件内容。
    • xxx.r[小版本号]文件:发生冲突前文件内容。
    • xxx.r[大版本号]文件:发生冲突时服务器端文件内容。

手动解决冲突

  1. 删除冲突发生时产生的三个多余文件。
  2. 删除冲突文件内多余的符号。
  3. 把文件编辑到满意的状态。
  4. 提交。

半自动解决冲突

image-20210308132740095
  • (p):推迟,之后手动处理。
  • (df):显示全部差异。
  • (e):编辑。
  • (m):合并。
  • (s):显示全部选项。
  • 其他选项:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 跳过此冲突,稍后解决[推迟]
(p) - skip this conflict and leave it unresolved [postpone]
# 接受整个文件的传入版本[使用版本库里的文件]
(tf) - accept incoming version of entire file [theirs-full]
# 拒绝此文件的所有传入更改[使用我自己的文件]
(mf) - reject all incoming changes for this file [mine-full]
# 只接受冲突的传入更改。
(tc) - accept incoming changes only where they conflict [theirs-conflict]
# 拒绝冲突的传入更改并接受其余更改。
(mc) - reject incoming changes which conflict and accept the rest [mine-conflict]
# 接受工作副本中显示的文件。
(r) - accept the file as it appears in the working copy [working]
# 推迟所有剩余冲突。
(q) - postpone all remaining conflicts
# 在编辑器中更改合并文件。
(e) - change merged file in an editor [edit]
# 显示对合并文件所做的所有更改。
(df) - show all changes made to merged file
# 显示所有冲突(忽略合并版本)
(dc) - show all conflicts (ignoring merged version)
# 使用合并工具解决冲突。
(m) - use merge tool to resolve conflict
# 启动外部合并工具以解决冲突[启动]
(l) - launch external merge tool to resolve conflict [launch]
# 使用内置的合并工具解决冲突。
(i) - use built-in merge tool to resolve conflict
  • 按下 e 进行编辑页面。
  • 之后就是和上面一样的步骤,删除掉特殊符号,然后把文件编辑到满意的状态,之后保存退出。
  • 按下 r 标记为已解决,之后就可以再次提交了。

避免冲突

  • 尽可能在修改文件前先进行更新操作,尽量在最新版基础上修改文件内容。
  • 尽量减少多人修改同一个文件的可能性。
  • 加强团队成员之间的沟通。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!