2017-03-08 38 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它可以帮助你清楚地了解两者之间的差异。