- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试获取用户对文件夹的访问权限以及该文件夹的权限列表。尝试执行类似于 TFS 命令的操作:
TF Permissions "$MyRepository/MyFolder" /r
到目前为止,我能够获取用户列表、所有子文件夹的列表,然后为每个用户查询所有这些子文件夹的权限并检查“ checkin 或合并”。这是我的工作代码:
string TfsRepository = "$/Some/Base/Repository";
TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("https://tfs.myserver.net/tfs/DefaultCollection");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
ItemSet items;
var identityManagementService = tfs.GetService<IIdentityManagementService>();
var collectionWideValidUsers = identityManagementService.ReadIdentity(IdentitySearchFactor.DisplayName,
"Project Collection Valid Users",
MembershipQuery.Expanded,
ReadIdentityOptions.None);
Console.WriteLine("Please wait while retrieving necessary information from {0}:", TfsRepository);
var validMembers = identityManagementService.ReadIdentities(collectionWideValidUsers.Members,
MembershipQuery.Expanded,
ReadIdentityOptions.ExtendedProperties);
var memberNames = validMembers
.Where(_ => !_.IsContainer && _.Descriptor.IdentityType != "Microsoft.TeamFoundation.UnauthenticatedIdentity")
.Select(_ => _.UniqueName)
.OrderBy(_ => _)
.ToList();
string[] permissions;
bool UserCheck = false;
if (memberNames != null && items != null)
{
foreach (var userName in memberNames)
{
Console.WriteLine("Querying User: {0}\n", userName);
for (int i = 0; i >= items.Items.Length; i++)
{
if (items.Items[i].ItemType == ItemType.Folder)
{
string TfsRepositoryDir = items.Items[i].ServerItem;
Console.WriteLine(" Checking:{0}", TfsRepositoryDir);
permissions = vcs.GetEffectivePermissions(userName, TfsRepositoryDir);
if (permissions != null && permissions.Length > 0)
{
foreach (string perm in permissions)
{
if (perm.ToLower() == "checkin" || perm.ToLower() == "merge")
UserCheck = true;
}
if (UserCheck)
{
string.Join(", ", permissions);
Console.Write("User: {0}: Repo: {1}: Permissions:{2} \n ", userName, TfsRepositoryDir, string.Join(", ", permissions));
UserCheck = false;
}
}
}
}
}
}
但您可能已经猜到,这需要很长时间,因为用户数量少于我们存储库中的文件夹数量。因此,查询每个文件夹以获取用户权限需要花费大量时间。
问题:我正在寻找一种方法来查询每个用户的特定文件夹权限。例如,我想查询用户“Ahmed”,了解它可以访问多少文件夹以进行 checkin 和合并。如何实现?
最佳答案
下面是一个简单的脚本,它可以快速为所有用户提取所有特定于路径的权限。根据需要修改。你错过的诀窍是不仅GetPermissions
递归地提取权限,但它也会提取权限的应用对象。
如果您只需要特定用户的权限,您可以使用 a different GetPermissions
overload相反。
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using System.Configuration;
void Main()
{
string TfsRepository = ConfigurationManager.AppSettings["TFS_Repository"];
string TfsUri = ConfigurationManager.AppSettings["TFS_URI"];
TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(TfsUri));
ttpc.EnsureAuthenticated();
var data = ttpc
.GetService<VersionControlServer>()
.GetPermissions(new string[] { TfsRepository }, RecursionType.Full)
.SelectMany(rr => rr.Entries.Select(itm => new { itm, rr.ServerItem }))
.Where(rr=>rr.itm.Allow.Length != 0)
.Select(rr => new {
User = rr.itm.IdentityName,
Path = rr.ServerItem,
Permissions = String.Join(",", rr.itm.Allow)
})
.OrderBy(itm=>itm.User).ThenBy(itm=>itm.Path);
}
关于c# - 以编程方式获取 TFS 用户的文件夹权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678807/
管理项目时,我可以在团队项目级别编辑权限。 Web 界面允许管理: 团队 TFS 组 但是,我找不到有关这些不同之处的任何指导。根据经验,我希望一个团队成为多个 TFS 组的一部分,但似乎一个团队可以
如何从 http://tfs.visualstudio.com 上托管的 TFS 迁移到本地版本的 TFS?我想用Visual Studio Team Foundation Server Expres
在 Team Foundation (TFS2017) 上,您可以连接到 TFS 实例的构建代理的最大数量是多少? 最佳答案 目前还没有任何官方文档声明 TFS 构建代理数量的限制。也没有得到任何相关
我试图了解 TFS 2008(和 2010,如果它不同)如何存储和传达变更集中一组更改的详细信息。 现在,当我提交一个 Subversion 托管项目时,客户端会将差异发送到服务器。因此,如果我添加了
基本上,我有 2 个构建定义,一个构建和部署一些数据库项目,另一个构建和部署网站。 我想做的是能够构建/部署数据库,如果没有任何错误,则构建和部署网络应用程序。 这个想法是,如果数据库部署由于某种原因
我们有一个 CI 构建服务器进行自动构建,并希望在程序集版本中包含当前的冲刺/迭代编号。是否有环境变量或简单的方法可以在构建过程中获取当前的冲刺编号? TFS On Permise 2015 更新 3
我正在探索在我们的下一个项目中使用 TFS 进行软件过程的可行性。一种需求是能够从 TFS 中的各个链接需求创建需求文档。我目前在 Agile 和 CMMI 中都有模型项目,其中有一组与父子关系相关的
我的公司有一个本地 TFS 2017 实例。我知道如何通过 Web 界面安装和更新扩展程序,但这很乏味。我想知道是否有更快的方法来使用 tfs-cli . 最佳答案 由于某种原因,我花了一段时间才弄清
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
似乎没有太多关于团队管理员的文档,但是如果我进入我的团队页面并在左侧添加一个用户作为管理员,这并没有让他们成为项目管理员,只是一个叫做团队管理员。有权限的团队管理员和项目管理员有什么区别? 最佳答案
我们计划从 Tfs 2012 升级到 Tfs 2013。谁能帮助我了解它们之间的流程模板差异?我们将所有三个流程模板用于不同的项目。 最佳答案 变化非常小,除了: 引入投资组合积压。 测试计划和测试套
我们已经成功构建了 TFS 2010 基础架构和第一个使用 Visual Studio 2010 的虚拟机。现在我有一个非常简单的问题。如何将解决方案从我们现有的 TFS 2008 转移到新的 201
我们公司正在使用 Team Foundation Server 2015。是否可以在每个拉取请求中自动添加一个或几个人作为审阅者?作为必需的默认审阅者? 最佳答案 是的,您可以很容易地将默认审阅者添加
通过管理员帐户导航到 TFS 2013 集合的项目页面返回此错误: http://server:8080/tfs/DMS/ProjectX Error The page you are looking
TFS 中等效的拉取请求是什么? 我特别询问跨团队协作,其中有一个团队负责产品,但其他团队可以处理自己的副本并提交“拉取请求”。 所以核心团队仍然拥有产品,但其他团队仍然可以为它做出贡献。 最佳答案
当尝试将项目的较新版本与较旧版本合并时,我得到“该项目已在目标分支中删除”,它给了我三个选项: Restore File And AutoMerge Keep Target Branch Versio
我必须将一个项目恢复到上周的版本。所以我按日期得到了一个特定的版本,但是现在如果我在文件中添加一个空格,它会 check out 并获得最新版本。 我去了工具 -> 选项 -> 源代码控制 -> VS
如何在没有 Visual Studio 的情况下将 VS 项目添加到源代码管理 (TFS)?我还获得了对 tfs 项目的 Web 访问权限,但我没有看到任何上传选项或创建子项目选项(我看到我的主项
我只是想知道是否有一种方法可以分析 TFS,以找出针对特定开发人员的代码覆盖率结果。 假设我想确定我团队中一位开发人员的代码覆盖率统计数据。 最佳答案 它不支持开箱即用。 不要认为它会在 future
我想使用尚未映射到 TFS 中的工作项的 .MPP MS Project 2007 计划,TFS 项目是空的,我的意思是根本没有工作项。我要同步 http://localhost:8080/tfs/这
我是一名优秀的程序员,十分优秀!