У меня есть расширение Check-In-Policy для VS2017 (с использованием 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
, а это не то, что мне нужно).
Есть ли способ достичь этого?