TFS显示其他人的锁,而不是结帐

时间:2014-09-30 14:17:28

标签: tfs

在Source Control Explorer中,有“用户”列。所以从理论上讲,我应该可以看到其他人正在等待编辑,对吧?然而,我只看到有人锁定文件。那是服务器端设置吗?

编辑:最终,我想以编程方式检测结帐。但是现在,UI会这样做。我尝试了tf status,尝试了“按状态查找”。这些都没有显示任何结帐。

测试结账由我(即同一用户)从另一台机器进行。

EDIT2:它是TFS 2013,从2012年初开始升级。

2 个答案:

答案 0 :(得分:2)

如果你正在使用TFS 2012或更高版本,那么你可能有一个本地工作区 - 它被设置为默认值。

本地工作空间是一场噩梦,因为它们对服务器是不可见的,并且允许用户编辑他们喜欢的任何内容(这会导致任何不可合并的文件出现大量问题,如二进制数据,解决方案/项目,资源resx文件,位图等。 doc或.xls等)你无法判断是否有其他人正在编辑它以试图避免这些问题。它们还意味着您在本地驱动器上有两份副本,这可能会导致空间问题。作为管理员,您无法执行任何操作来管理它们,因为它们不存在于服务器上。这意味着你必须绕过每个人的PC来手动修复出错的东西。所有这些都是为了节省用户必须签出文件(如果他们在VS中编辑它们就会自动发生),然后再进行编辑!

确定这是否是问题的原因,和/或解决它:

在客户端PC上

在源代码管理窗口中,点击顶部的工作区下拉列表,然后选择Workspaces...,选择并Edit您的工作区,然后点击Advanced按钮 - 这将允许访问到此工作空间的服务器/本地工作空间选项。

如果你想修理它,是的,你必须去建筑物中的每台电脑并做这件事来改变它。

在服务器上

要阻止将来的用户创建本地工作区,您需要将服务器配置为将所有新工作区默认为服务器工作区。请注意,这不会影响任何现有工作区,只会影响新工作区的默认工作区。

在VS菜单上,进入Team>团队项目收藏设置>源控制。在显示的对话框的Workspace Settings标签上,选择LocalServer

请注意,如果用户选择,他们仍然可以将工作区切换到本地工作区,问题将重新开始。作为管理员,你无法阻止他们。

答案 1 :(得分:1)

“打开Visual Studio>点击文件>源代码管理>在源代码管理中查找>状态 选择“显示所有签出”或“显示签出的文件”(按用户筛选更改) 点击查找“

http://geekswithblogs.net/MikeParks/archive/2009/09/16/tfs---view-all-pending-changes-for-all-users.aspx

另一种使用.net(完整source

的方法
using(var tfsPc=new TfsTeamProjectCollection(tfsUri))

    {
        var vcs=tfsPc.GetService<Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer>();

        var srcRoot=vcs.GetItem(srcpath);


        var pendings=vcs.QueryPendingSets(new[]{srcRoot.ServerItem}, RecursionType.Full,null,null).AsEnumerable();
        if(onlyLocks)
            pendings=pendings.Where(pq=>pq.PendingChanges.Any(pc=>pc.IsLock));
        if(minDate.HasValue)
            pendings=pendings.Where(pq => pq.PendingChanges.Any( pc => pc.CreationDate > minDate.Value));
        var pendingQuery=pendings
            .OrderByDescending(p=>p.PendingChanges.Max(d=>d.CreationDate));
        pendingQuery.Dump("pending");   


    }

similar to above, but join the ActiveDirectory to get a user's name