我使用MS Team Foundation Server 2012和服务器工作区,本地文件位于Linux服务器上(通过Samba访问)。从Visual Studio 2017访问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将设置只读文件属性。但即使设置了只读属性,我仍然可以删除/覆盖/重命名文件。我想因为我是我PC的管理员(文件属性的安全选项卡显示我完全可以控制)。
所以我认为这是一个通用的TFS问题。由于TFS使用只读属性来防止文件在TFS之外被修改而不被检出,TFS是否有一种好方法可以防止它们在TFS之外被删除/覆盖/重命名?
如果没有这个,我认为我的本地文件有可能意外地与存储库不同步,这似乎不是一件好事。
答案 0 :(得分:1)
正如您所说本地工作区更适合您的情况。 这也适用于TFS 2012。
本地工作空间缓存每个文件的未修改版本,使您无需连接到服务器即可编辑,比较和执行其他操作。就像离线工作一样。此外,当您在Visual Studio之外添加或删除文件时,程序会自动检测这些更改。
即使您拥有存储foo.txt的目录的权限,例如delete foo.txt,您仍然无法在没有足够权限的情况下检入TFS源控制。如果您不小心删除了该文件,也很容易在本地恢复,只需再次获取文件。
此外,如果您是管理员,默认情况下您可以specify which type of workspace Visual Studio creates for您的团队成员:本地或服务器。
看看这个优秀的博客:Server workspaces vs. local workspaces,它可以帮助您清楚地理解两者之间的差异。