冲突文件解决方案
目的:便于开发人员在遇到多人同时修改同一文件时进行正确的协调开发。
冲突现象:提交时提示
“cvs commit: sticky tag `1.1' for file `temp.txt' is not a branch
cvs [commit aborted]: correct above errors first!”类似提示的错误信息。
冲突原因:本地文件与服务器中文件版本不一致导致,导致这种不一致的原因就是多人修改同一文件内容,第一个人修改完成提交后,其他人将自己修改的该文件再提交,便产生了文件版本冲突。
解决冲突办法(一)
思路:根据wincvs自动生成的比较文档,进行协商修改解决冲突。
注意:有时没有出现合并的文件(可能为内容格式导致),可采取其他方法解决冲突。
操作如下:
操作:
1、文本格式文件“ ”
当提交时,发现文件冲突提示后,首先,更新该文件,更新时不要选中任何更新选项。如下图:
确定后,冲突文件进行了版本比较合并,图标变化为:“ ”。并在本地会产生一个名称为“.#文件名.本地版本”的备份文件。打开合并文件后,可以看到这个文件的两个版本对比情况,如下图:
“<<<<<<<”前为两个版本相同部分,“=======”前为本地版本修改的内容,“>>>>>>>”前为当前服务器最新版本修改的内容。根据上述提示,便于开发人员进行正确合并。建议找到提交最新版本的同事,进行口头商议确认后,修改该文件,然后提交到配置库中,从而解决冲突。
2、二进制格式文件“ ”
与1操作类似,区别是,在更新后cvs首先会产生一个名称为“.#文件名.本地版本”的备份文件,然后当前文件被更新为最新版本的文件内容。图标为“ ”。此时可参考“解决冲突办法(二)”进行相关操作。
解决冲突办法(二)
思路:将本地文件与服务器文件进行手动版本比较,从而找出相异处,进行协商合并后提交。
注意:若冲突文件没有差生合并文件建议用此方法进行。
操作:
当提交时,发现文件冲突提示后,更新该文件,更新时不要选中任何更新选项。此时该文件图标变红“ ”,无备份文件生成。这时需要我们手动进行该文件的版本比较。
首先,选中该文件后,点击Query-Diff……,如下图:
然后出现比较界面,选中Compare里的第二项,如下图:
进行本地版本与远程服务器版本进行对比。左边的信息填写远程服务器版本号确定即可,这时在命令行窗口就会出现比较信息。如下图:
开发人员可以通过比较结果进行相应协商修改后,提交相关内容。
解决冲突方法(三)
思路:利用建立分支的方法进行开发,多模块多文件同时开发,避免冲突,只在最后将分支模块合并时解决冲突。
利弊:适用于模块的两个版本同时进行开发,不适用于频繁合并的项目。
操作:
第一步、建立分支
选中需要建立分支的文件或文件夹,然后点击Modify—>Create a branch…,如图:
点击后在弹出的窗体里输出要建立的分支名称,注意分支名称的头一个字符必须为字母。如下图:
确定后,分支即建立完成。
第二步、将需要并行开发的文件或文件夹提交到分支上
选中需要提交的文件或文件夹,右键点击他们,选择commit,出现如下窗体:
选择Commit options选项卡,勾选Force revision/branch:选项后在右侧输入分支名称,确定即可。提交后可以通过图形日志方式来查看我们刚刚提交的这个文件的版本分支状态。如图:
这样便可清晰的看到文件的历史版本信息,便于采取适当的开发管理措施。