2017-03-08 37 views
1

我將MS Team Foundation Server 2012與服務器工作區一起使用,並且本地文件位於Linux服務器上(通過Samba訪問)。從Visual Studio 2017訪問TFS。如何防止TFS本地文件被刪除/覆蓋/重命名?

當我檢查foo.txt時,TFS成功設置foo.txt爲只讀(r-xr-r--)。但是TFS不會爲存放foo.txt的目錄設置權限。因此,儘管我無法修改foo.txt,但我仍然擁有對其所在目錄的寫入權限,因此我可以刪除foo.txt或將其重命名或覆蓋它。

有沒有一種方法可以告訴TFS管理文件存儲目錄的權限(除文件本身之外)?因此,如果不首先從TFS中檢出文件,我將無法刪除/重命名/覆蓋文件(在Visual Studio之外)?如果當我檢出一個文件時,它將被存儲的目錄變爲可寫(u + w),並且當目錄中的所有文件都被簽入時,目錄將變爲只讀(ugo-w)。

作爲一個旁註,我認爲這可能是一個複雜的我有文件存儲在一個Linux機器上。但我用我的Win 7 PC上存儲的本地文件試了一下,得到了同樣的結果。 TFS將設置只讀文件屬性。但即使使用只讀屬性設置,我仍然可以刪除/覆蓋/重命名文件。我想,因爲我是我的電腦的管理員(文件屬性的安全選項卡顯示我有完全控制)。

所以我認爲這是一個通用的TFS問題。由於TFS使用只讀屬性來防止文件在TFS之外被修改爲而不被檢出,因此TFS能否阻止它們在TFS之外被刪除/覆蓋/重命名?

沒有這個,我想我有可能意外地將本地文件與存儲庫不同步,並且這看起來不是什麼好事。

+0

我試圖跳過上面的箍是因爲我將編輯Visual Studio以外的文件。但是從更多的閱讀來看,看起來像使用本地工作區而不是服務器工作區會更好。由於使用本地工作區,TFS在檢出/檢入時不會切換隻讀位。您可以隨意編輯文件,並且TFS將檢測到更改。這聽起來更接近我想要的。 – Quentin

回答

0

就像你說的本地工作區更適合你的情況。 這也適用於TFS 2012.

本地工作區會緩存每個文件的未修改版本,以便您可以編輯,比較和執行其他操作,而無需連接到服務器。就像離線工作一樣。除了在Visual Studio之外添加或刪除文件時,程序還會自動檢測這些更改。

即使您擁有存放foo.txt的目錄(如delete foo.txt)的權限,您仍然無法在沒有足夠權限的情況下檢入TFS源控件。如果你不小心刪除了文件,也很容易在本地恢復,只需重新獲取文件即可。

此外,如果您是管理員,則您的團隊成員默認爲specify which type of workspace Visual Studio creates for:本地或服務器。

看看這個優秀的博客:Server workspaces vs. local workspaces它可以幫助你清楚地瞭解兩者之間的差異。