描述代码冲突的问题
什么情况下,会出现代码冲突的问题呢?在做项目的过程中我们都会使用SVN对项目进行版本控制,大家同时更改同一个项目或者同一个文件时就会发生代码冲突的问题。下面,我会举一个例子来演示代码冲突的问题是如何产生的。
-
lay(开发人员)和ymm(开发人员)他俩从SVN服务器上将项目源码下载到本地的工作空间之后,有可能会同时修改同一个文件。例如,lay(开发人员)在其检出的项目(例如my_store)中新添加了一个User类。
然后,他便会试着将修改后的代码上传到SVN服务器上去。那如何将该项目上传到SVN服务器上去呢?详细步骤如下:- 第一步,右键所选中的web项目,然后选中Team这一项,再选中提交。
- 第二步,在弹出的窗口中填写提交日志,建议一定填写方便日后查询历史操作日志。
- 第三步,点击OK按钮,在弹出的窗口中输入用户名和密码。
- 第四步,点击OK按钮,就能将web项目上传到SVN服务器上去了。
- 第一步,右键所选中的web项目,然后选中Team这一项,再选中提交。
-
这时,在ymm(开发人员)这一边,他也是需要从SVN服务器上下载最新的项目源码的,那又如何下载呢?详细步骤如下:
- 第一步,右键所选中的web项目(例如my_store2),然后选中Team这一项,再选中更新。
- 第二步,在弹出的窗口中输入用户名和密码。
此时,ymm(开发人员)就能将SVN服务器上的web项目下载到本地了。
然后,他也有可能对User类进行修改,例如在User类中添加一个
private String password
属性。
接着,他便会试着将修改后的代码上传到SVN服务器上去。怎么上传,不用我说了吧!上面都讲了。 - 第一步,右键所选中的web项目(例如my_store2),然后选中Team这一项,再选中更新。
-
在lay(开发人员)这一边,他仍然需要从SVN服务器上下载最新的项目源码,至于怎么下载,不用我说了吧!上面也讲了。此时,开发人员lay和ymm拿到的都是最新的代码,他俩都有可能同时对User类进行修改,假设lay(开发人员)在User类中添加了一个
private String name
属性,此时ymm(开发人员)是不知道lay(开发人员)已经对User类进行了修改。
在ymm(开发人员)这一边,他也对User类进行了修改,即在User类中添加了一个private String sex
属性。
-
他俩都对User类修改完后,肯定会有一个人先提交,假设这个时候,lay(开发人员)改完以后,他先提交了代码。ymm(开发人员)改完以后,他也认为自己写的代码是最新的(至少在当时的他看来),他也会提交代码到服务器上去,在其提交的过程中,立马就会报错,这时代码冲突的问题便已出现了。
解决代码冲突的问题
既然代码冲突的问题已经发生了,那么接下来就要解决这个问题了。但在解决之前,我们得右键我们的项目,然后选中Team这一项,再选中更新,更新一次我们的代码。
然后,在弹出的窗口中输入用户名和密码。
这时,会发现我们冲突的文件出现了别的副本,并且代码也会有别的内容显示。
到底如何解决代码冲突的问题呢?大家可以尝试着按照下面还算比较详细的步骤来解决。
- 第一步,在有冲突的文件上右键,然后选中Team这一项,再选中编辑冲突。
- 第二步,在弹出的窗口中,会以对比的方式将本地内容与冲突内容显示出来,其中左侧为本地内容(本地内容是可以修改的),右侧为冲突内容。
然后,根据需要和实际情况将本地内容更正(即对两个文件进行合并,以左边的那个为准),这个过程很可能需要牵涉冲突的两位开发人员进行必要的沟通。
- 第三步,将本地内容更正后,按Ctrl+S进行保存,回到我们之前的代码文件,会发现多出来的内容也消失了。
- 第四步,冲突解决完之后,在冲突文件上点右键,然后选中Team这一项,再选中标记为解决。
- 第五步,在弹出的窗口中,选择第一个选项(Conflicts have been resolved in the file.)。
- 第六步,点击OK按钮,这时可以发现那几个多出来的副本已经消失,并且之前冲突的文件右下角也变成了
*
号,这意味着可以提交代码了。
- 第七步,再次尝试提交代码到服务器上去,这时便不会报错了,并且之前冲突的文件右下角也变成了金色圆柱体的符号。