2014-03-13 42 views
2

最近切換的作業,並與它切換源代碼控制從TFS SVN,這對我來說是新的。VisualSVN - 禁用自動簽出

在TFS中,有一個選項可以在開始輸入文件時禁用文件的自動簽出。它在默認情況下被啓用,許多用戶喜歡這種行爲,但我更願意確定在提交之前更改了哪些內容。個人的東西。

默認爲VisualSVN自動簽出。有沒有類似的選項可以關閉它?我似乎無法找到設置。

+2

在提交前始終檢查您的更改,當您這樣做時,您可以準確查看服務器上將更改的內容。 – crashmstr

+0

如果有幫助,您可以接受和/或提高回答。謝謝! – bahrep

回答

3

據我看,SVN和TFS世界中的「自動檢出」術語具有不同的含義。

在Subversion中,簽出與svn checkout操作相關,該操作從存儲庫獲取工作副本。在TFS中,它看起來像某種程度上與自動鎖定機制有關。

如果您希望在Visual Studio中開始修改文件(安裝有VisualSVN擴展模塊)時自動鎖定文件,請參閱知識庫文章"Lock-Modify-Unlock Model with VisualSVN"。我還建議閱讀SVNBook章節"Locking"

一般來說,您可以在文件上設置svn:needs-lock屬性。該屬性指示客戶端在編輯之前必須鎖定哪些文件。將svn:need-lock應用於文件後,該文件將獲得只讀屬性。編輯之前,文件必須由用戶明確鎖定。提交後,鎖定被默認釋放。

+0

唯一的麻煩是 - 這適用於所有人,我認爲OP只是想在「VSS模式」下運行,在這種模式下所有文件都是隻讀的(而其他人則使用通常的modify-commit-merge模型) – gbjbaanb

+1

作爲說明:對於Subversion,通常只需要在合併兩個更改無效的二進制文件(例如數據庫文件)時進行鎖定。在這種情況下,您應該仍然可以手動鎖定文件。 – crashmstr

+1

感謝您的信息。但只是爲了清楚起見 - 這與其他人在做什麼無關,只是我。我只是不喜歡源代碼控制自動檢查我瀏覽的文件,只是因爲我抽動了我的鍵盤。我抽動了很多:) –

2

簡短的回答:我不認爲你可以做到這一點,而不會變得非常不受歡迎。

我想你應該對SVN是如何工作的,尤其是versioning models

在你的環境中,每個人都希望能夠在本地修改任何文件,然後送他們更改服務器SVN redbook的描述讀了,必要時將變更與同事​​的變更合併。如果2個人始終沒有更改相同的文件,這種方法運行良好,這是大多數開發商的典型情況。

舊的TFS/VSS模型簽出一個文件來處理它現在已經過時了 - 更'樂觀'的方法,你認爲你擁有獨佔訪問的效率更高。 (像往常一樣,如果出現問題就容易請求原諒,而不是每次都要求允許)

您的主要問題是您無法混合使用這些模型 - 如果您的同事使用合併模型,那麼您也必須這樣做。您無法鎖定文件,並希望它們能夠隨時更改任何文件。

現在,有一些技巧可以用來防止自己修改你從未想過的文件 - 我不確定VisualSVN,但TortoiseSVN(真棒工具)可以運行client hooks - 也就是說你可以編寫一個程序在每一個程序上運行結帳,該程序可以像設置每個文件的只讀標誌一樣簡單。對於你來說這是不是神是另一回事。

就我個人而言,無論你喜歡什麼,我都會習慣變化的想法。如果意外編輯文件,您可以看到更改指示符(AnkhSVN將文件圖標變爲橙色以顯示更改的文件),並且可以輕鬆「還原」您不想進行的更改。另外SVN可以讓你很容易地看到差異,尤其是在提交時 - 雙擊提交對話框中的文件。無需工具即可開展工作(因爲我在嘗試編輯文件時發現TFS持續不斷地對我進行測試)所帶來的生產力收益是巨大的。SVN工具非常好,可以讓你「請求原諒」,所以你現在不需要用蹩腳的舊TFS方式運行,現在你已經升級到了更好的東西。

另一個優點是,這適用於不在一個Visual Studio項目文件,如果你有過這是VS之外編輯(例如,所生成的WCF客戶存根),那麼你會明白如何SVN項目文件作品 - 永遠不會再做一次完整的提交,並且發現TFS已經方便地決定您更改的文件沒有被更改,因此不需要承諾!