版本沖突原因:
假設(shè)a,b兩個用戶都在版本號為100的時候,更新了test.txt這個文件,a用戶在修改完之后提交到服務(wù)器,這個時候test.txt的版本號已經(jīng)變成了101了。同時b用戶在版本號為100的test.txt上做修改,然后提交到服務(wù)器,由于不是在當(dāng)前最新的101版本上做的修改,所以導(dǎo)致提交失敗。
版本沖突現(xiàn)象:
沖突發(fā)生時,subversion會在當(dāng)前工作目錄保存所有的目標(biāo)文件版本【上次更新版本,當(dāng)前獲取的版本(即別人提交的本本),自己更新的版本,目標(biāo)文件】。
假設(shè)文件名是test.txt
對應(yīng)的文件名分別是:
test.txt.r100
test.txt.r101
test.txt.mine
test.txt
使用Cornerstone會在目標(biāo)文件標(biāo)記來自不同用戶的更改:
<<<<<<< .mine
你更改的代碼=======
別人更改并已經(jīng)提交到服務(wù)器的代碼>>>>>>> .r101
其中<<<<<<< .mine與=======之間表示A修改后的內(nèi)容,=======與>>>>>>>
.r101之間是版本服務(wù)器上的版本
解決沖突的方法:
和同事溝通后,如果采用自己更改的代碼則手動刪除他人的代碼和多余的符號,然后提交。
如果采用他人的代碼則刪除自己的代碼和多余的符號,然后提交。
使用終端svn不會在目標(biāo)文件標(biāo)記沖突內(nèi)容,而是會在輸入 svn up 更新命令后輸出提示信息:
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
輸入df命令可以查看沖突的內(nèi)容。
輸入mc命令是采用自己的更改。
輸入tc命令是采用他人的更改。
至此,更新完成。接下來就是提交的過程。
另外一種方法就是revert回滾:
恢復(fù)到上一次更新的代碼,相當(dāng)于放棄了本次自己更改的內(nèi)容。