2015-12-21 8 views
0

Я знаю, что мы можем создать собственную политику регистрации в TFS 2013, которая ограничит пользователя регистрацией кода без проверки кода.Создание пользовательской политики после регистрации в TFS2013 для уведомлений об обзоре кода

У меня есть требование в нашей компании для разработчиков, где я должен разработать что-то, где определенный файл (обновление базы данных) проверяется на TFS, а затем уведомления по электронной почте, которые будут отправляться в набор старших разработчиков для проверки кода , Кроме того, уведомление по электронной почте должно указывать, когда был выполнен последний обзор кода и кем.

Любая идея о том, как решить эту проблему. В прошлом я создал политику проверки достоверности файла перед регистрацией, я использовал метод PolicyBase и Evaluate для этого, я запутался, какой класс/метод может уловить мой код после успешного завершения регистрации.

У меня нет кода, кроме кода, который написал для действительности файла. Я не мог найти полезного сообщения после политики регистрации. Или это можно настроить на самом сервере?

ответ

0

Вместо политики Checkin вы можете создать прослушиватель для прослушивания CheckInEvent. После того, как событие будет запущено, отправьте уведомление. Эти серверные плагины реализуют ISubscriber interface, см. Сообщение this blog, как писать и отлаживать их.

Вот код из this blog показывает пример реализации кода, реагирующие на Выселение в случае, вы можете обратиться к нему:

namespace Sample.SourceControl.Server.PlugIns 
{ 
    public class CodeCheckInEventHandler : ISubscriber 
    { 
     public string Name 
     { 
      get { return "CodeCheckInEventHandler"; } 
     } 

     public SubscriberPriority Priority 
     { 
      get { return SubscriberPriority.Normal; } 
     } 

     public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out Microsoft.TeamFoundation.Common.ExceptionPropertyCollection properties) 
     { 
      statusCode = 0; 
      properties = null; 
      statusMessage = String.Empty; 
      try 
      { 
       if (notificationType == NotificationType.Notification && notificationEventArgs is WorkItemChangedEvent) 
       { 
        CheckinNotification ev = notificationEventArgs as CheckinNotification; 
        TeamFoundationApplication.Log(string.Format("New Changeset was checked in by {0}. ID: {1}, comments: {2}", ev.ChangesetOwnerName, ev.Changeset, ev.Comment), 123, System.Diagnostics.EventLogEntryType.Information); 
       } 
      } 
      catch (Exception ex) 
      { 
       TeamFoundationApplication.LogException("Sample.SourceControl.Server.PlugIns.CodeCheckInEventHandler encountered an exception", ex); 
      } 
      return EventNotificationStatus.ActionPermitted; 
     } 

     public Type[] SubscribedTypes() 
     { 
      return new Type[1] { typeof(CheckinNotification) }; 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^