加鎖解鎖簡介
加鎖與解鎖的操作對於項目中的二進制文件,如圖片、聲音、動態庫等不可合並文件是非常有用的,可以讓這些文件防止產生惱人的沖突,但TortoiseSVN中的Get lock的其實並不能滿足需要,並不能在編輯前獲得對文件的獨占訪問,這也是本文要結合屬性來詳解文件加鎖的原因。
為了避免多個人同一時間對同一個文件改動的相互覆蓋,版本控制系統就必須有一套沖突處理機制。
對於解決沖突,有兩種處理辦法:樂觀加鎖和嚴格加鎖。
嚴格加鎖:所有簽出的文件都是只讀的,任何對文件的修改必須要獲得文件的鎖,如果其他人沒有擁有該文件的鎖,那么版本控制系統就會授權給你文件的鎖,並將文件設置為可編輯的。
樂觀加鎖:所有簽出的文件都是可讀寫的,對文件的修改不必獲得文件的鎖,當你修改完文件簽入時,會首先要求你更新本地文件,版本控制系統不會覆蓋你的本地修改,而是會讓你自己合並沖突后簽入。
SVN使用的是樂觀加鎖策略,而像TFS一類的版本控制系統允許你對加鎖策略進行選擇。
相比於嚴格加鎖,樂觀加鎖可能會有較高的產生沖突的概率,但允許團隊成員任何時間對文件進行編輯,擁有極大的協作效率。
對於像不可合並的二進制文件或想在某些文件和目錄上采取嚴格加鎖策略,SVN也提供了嚴格加鎖的辦法,就是對文件的加鎖解鎖操作。
加鎖方式
SVN加鎖可以直接在項目上進行加鎖,也可以在文件夾中進行加鎖。
(1)項目中加鎖
右擊要加鎖項目-->Subversion-->Subversion Properties-->Add-->Property Name(needs-lock)-->OK
操作圖如下:
(2)文件中加鎖
以上為樂觀枷鎖策略,存在被鎖定后其他成員依然可以在本地修改,如果我們想對某個文件或某個目錄采取嚴格加鎖策略,
更明確的說是:所有文件默認為只讀,在文件修改前需要先獲取鎖,只有其他人不擁有鎖時才可以鎖定文件並修改。
要實現嚴格加鎖,就需要使用SVN的svn:needs-lock屬性。
操作步驟:在加鎖的文件或目錄上點擊右鍵-->TortoiseSVN-->Properties屬性菜單,點擊News新建屬性,選擇Needs-lock:
默認新增needs-lock屬性,可以New添加新的屬性,點擊OK
獲取鎖
(樂觀加鎖)
(1)在項目中
右擊要獲取鎖的文件-->Subversion-->Lock
(2)在文件中
右擊加鎖文件-->TortoiseSVN-->Get Lock-->在紅框中記錄日志-->OK
釋放鎖
有兩種情況會釋放鎖:
1、選擇你想要釋放鎖定的文件,然后右鍵菜單點擊TortoiseSVN--> Release lock;
2、TortoiseSVN為了確保你不會忘記釋放鎖,在提交對話框中,總是會顯示鎖定的文件,並總是默認被選中。如果你繼續提交,選中的文件中的鎖就被移除了,就算你從沒有修改過。可以在鎖定文件的目錄上使用Commit,打開提交對話框驗證一下。
如果你不希望釋放文件的鎖,就必須取消選中它。
查看鎖狀態
在文件中右擊要查看的項目-->TortoiseSVN -> Check for modifications,
默認顯示本地修改文件,要查看所有的修改文件,再點Check Repository 這樣顯示詳細的修改信息,包括owner,lock info等。