我有一个VS2017的Check-In-Policy扩展名(使用TFS 2017),用于检查挂起的签入是否包含与给定正则表达式匹配的文件。
如果CheckedPendingChanges
中包含匹配的文件,则Evaluate
方法将返回PolicyFailure
以避免检入这些文件。
[Serializable]
public class FileWarningPolicy : PolicyBase
{
// ...
public override PolicyFailure[] Evaluate()
{
Regex regex = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (PendingCheckin.Policies.EvaluationState != PolicyEvaluationState.Evaluated) return new PolicyFailure[0];
var matchingFiles = from change in PendingCheckin.PendingChanges.CheckedPendingChanges
where change.IsEdit && regex.IsMatch(change.ServerItem)
select change;
return matchingFiles.Any()
? new [] { new PolicyFailure("some error message", this)
: new PolicyFailure[0];
}
}
这很好。但是,如果我能够简单地“取消选中”这些文件以将它们从当前检入中排除,而不将其从当前检入中剔除,则将更加舒适。
通过PendingCheckin.PendingChanges
属性,我可以访问当前的Workspace
,它具有许多下载,签入,签出,搁置等存储库项目的方法,但仅此而已取消选中/排除已检查的未决更改(仅将排除项添加到.tfignore
中,这不是我想要的)。
有没有办法做到这一点?