我正在使用Subversion進行版本控制。防止用戶覆蓋svn中的對方工作
我經常看到提交相互覆蓋的實例。在git中,這是被阻止的,因爲如果您的本地回購已過期,則無法推送。顛覆中是否有類似的機制?
例如
Bob用svn update更新他的工作副本。他繼續在幾天內對文件A進行一些更改。與此同時,Alice更新她的工作副本,並對文件A進行小改動,然後在同一天提交。
大約一天之後,Bob提交他的更改 - 這將不包括Alice對文件A的更改 - 覆蓋和刪除Alice的更改。當鮑勃作出承諾時,他沒有任何警告,沒有衝突或任何跡象表明他需要先更新,因爲回購已經改變。
Bob不會故意觸摸Alice更改的任何代碼行,但是因爲他的工作副本在提交時沒有包含Alice的代碼,結果是repo只有Bob的更改,而Alice的消息已經消失。
雖然Alice和Bob都有到位的過程,這意味着他們應該使用svn更新他們提交之前,似乎(鮑勃),其SVN不強制這一點,鮑勃經常忘記。
我們該如何預防?
[編輯]感謝所有到目前爲止已經涉水的人。看起來你們都在說同一件事 - 我所描述的事情不可能發生。不幸的是,我對svn的經驗,使用不同的客戶端,以及幾年來不同版本的svn(開啓和關閉)與上面描述的完全一樣。看起來有一個基本的東西,我錯過了svn,以防止當你的工作副本不同步時提交代碼 - 發生了太多次,我相信svn可以阻止它,儘管這裏有所有答案。所以有些東西是棘手的 - 我需要找出什麼 - 有沒有人對如何描述感知效果有任何建議(沒有鮑勃有意刪除愛麗絲的代碼,然後向世界撒謊)?
PS:我是鮑勃。
這是任何版本控制工具的基礎。在你的例子中,當鮑勃在幾個月後提交他的更改(已經由Alice提交同一文件)時,Bob必須得到「過期」錯誤,這將強制Bob更新工作副本。其他提交將不被允許。 – 2014-09-22 12:43:52
我同意,這是一個基本要求,但svn沒有發生。我們談論的只是Bob更新和Bob提交之間的1或2次提交。 – Hippyjim 2014-09-22 12:46:41
>>大約一天之後,Bob提交他的更改 - 這將不包括Alice對文件A的更改 - 覆蓋和刪除Alice的更改。「這不會發生在svn中。一種可能性是,當鮑勃更新工作副本時,艾麗絲的變化也來自他的工作副本,而鮑勃則刪除了艾麗絲的代碼。 :) – 2014-09-22 12:56:24