自定义TFS检入策略:评估期间“取消选中”已检查的挂起更改

时间:2018-11-14 10:38:13

标签: c# visual-studio tfs checkin-policy

我有一个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中,这不是我想要的)。

有没有办法做到这一点?

0 个答案:

没有答案