当我尝试从 TFS 签出文件时,我收到错误 TF14098:访问被拒绝用户 [用户名] 需要 [路径] 的 PendChange 权限。
我已将用户添加到贡献者组,但它仍然不允许他们签出文件。
有时,权限同步可能需要一些时间。
http://msdn.microsoft.com/en-us/library/ms400712.aspx#doesnottake
这是令人沮丧的愚蠢。因此,如果您遇到类似的问题,但找不到需要更改的实际权限,并且似乎无法通过 IDE 找到这些权限的设置位置,那是因为您需要通过以下方式实际访问权限右键单击项目并选择 Advanced->Security,而不是 Team->Team Project Settings/Team Project Collection Settings->Security。您也可以使用 tf 命令行执行此操作,使用 tf 特殊 tf 命令,但我对此有疑问。
如果系统已经知道您修改的用户(或 AD 安全组),则更改应该是即时的。同步只在相反的情况下发挥作用:一个安全组已经允许 PendChange,然后 Windows 管理员向该组添加了一个新用户。TFS 在下一次计划同步期间与活动目录对话之前不会知道更改。
您看到的最可能的原因是权限继承。即使用户被明确地允许一个权限,任何适用于他的拒绝 ACL 都会覆盖它。例如,在父项上设置的 ACL 可能会被继承。类似地,如果用户是两个组的成员(例如贡献者和读者),他可能会使用冲突的 ACL——而拒绝总是会获胜。
此外,继承模型在 2008 SP1 中略有改变。看:
使用 tf perm 和 tfs ui 我发现该PendChange
权限是通过在 TFS 2015 的安全选项卡中将指定的用户组 Checkout 权限授予项目的根目录来授予的。
PendChange
= 签出权限
从子分支合并到父分支时,我遇到了同样的问题。不允许项目管理员组本身的成员合并到该分支。
使用“tf perm”检查后,确保该组的该分支没有拒绝权限。
在检查了很多地方后,发现该分支中有一个删除结帐归因于开发人员。使用“在源代码管理中查找”-> 状态“-> 结帐查找找到了这个。
后来发现有权访问该分支的开发人员在离开公司之前曾试图删除该分支(作为清理的一部分)。我撤消了该更改(通过选择结帐使用撤消)和 Presto!合并开始起作用。
我仍然不确定这是怎么发生的,也不知道原因。但是对于在合并中遇到此问题的任何人,请检查一次所有结帐,如果您发现某些结帐(例如删除)很奇怪,请撤消并重试。这可能是一个原因。
就我而言,下面的这个链接运行良好
“这基本上会告诉你所有用户/组的列表并获得他们的许可。从这个列表中检查你是成员的任何组是否被 PendChange 拒绝或直接拒绝你。如果是,那么采取必要的步骤来删除它。
这里要注意的是拒绝总是优先。假设您是 TFS Admin 的成员(允许所有权限)和项目阅读器(除了 PendChange 被拒绝),那么阅读器的 PendChange 将优先,您将不被允许删除。”
更新:
对于 TFS 2012,使用“ VS2012 的开发人员命令提示符”并检查:https ://msdn.microsoft.com/en-us/library/0dsd05ft(v=vs.100).aspx
从 TFS 中的团队项目中删除读者权限,这将阻止编辑文件。
我已经在 TFS2013 中检查了这个并且工作正常。
问题解决了。
TFS UI->administer->project->manage project security->转到版本控制选项卡->选择角色。
如果用户无法签入和回滚需要提供读取和&签入和签出的权限,需要在那里允许。
在我的场景中,当我被添加到项目的管理员组时,此错误已修复。