簡體   English   中英

有沒有辦法在鎖定該文件之前強制更新 SVN 文件?

[英]Is there a way to force an SVN file update before locking that file?

問題:當二進制文件被鎖定時,SVN 有沒有辦法強制更新文件? 這似乎解決了我們在下面遇到的問題,通過強制鎖定操作在編輯之前將文件更新到最新版本。

背景:作為一名電氣工程師,我在工作中使用 SVN (TortoiseSVN) 進行版本控制。 我們在 SVN 中的許多文件都是二進制設計文件,如果存在沖突,則無法合並。 在這些二進制設計文件中,我們設置了“svn:needs-lock”屬性。

問題:我們遇到過一些案例,其中兩名工程師(Eng A 和 Eng B)在同一修訂版(修訂版 1000)中檢出了二進制文件(文件 1)。 Eng A 鎖定文件 1,進行編輯,然后提交文件 1,這意味着 Eng A 現在擁有修訂版 1001 的文件 1。

現在 Eng B 想要對文件 1 進行編輯。但是,即使 SVN 存儲庫中的最新更改是 Revision 1001,他仍然在 Revision 1000 上。Eng B 鎖定文件 1,進行編輯,然后提交更改,現在是在修訂版 1002。

這里的問題是,當 Eng B 提交時,他的編輯不是基於 Eng A 在 Revision 1001 的更改,而是基於他的“過時” Revision 1000。這導致 Eng A 在 Revision 1001 的更改被刪除。

不幸的是,在大多數用例中,僅使用svn:needs-lock屬性是行不通的。 這是因為 svn 會嘗試使用文件系統級別的權限來使文件只讀。 然后由二進制文件的應用程序通知用戶文件是否處於只讀狀態。 但大多數現代應用程序只是簡單地刪除只讀標簽並開始覆蓋。 您可以在 此處閱讀更多有關為什么不以硬方式實施它的 信息 這里的信息顯示了鎖定策略的顛覆的“更軟”方法。

我曾嘗試使用pre-lockpost-lock hook 腳本實現更嚴格的鎖定策略。 但是從管理的角度來看,維護起來太費時了。

對於至少較小的團隊(10-15)來說,在沒有管理員頭疼的情況下創造了奇跡,是pre-lock post-lock通知。 每當有人鎖定路徑時,就會向組中的人發送通知,告知該文件已鎖定,並使用鎖定路徑的用戶名,提醒用戶不要鎖定或更新他們。 當鎖被釋放時,另一個通知被發送到組,通知鎖可以被獲取。

這種非常簡單的鎖定和解鎖通信將工作覆蓋率降低到幾乎為 0。仍然有一些新來者在沒有檢查文件是否被鎖定的情況下開始工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM