2015-12-21 49 views
0

我知道我們可以在TFS 2013中創建自定義簽入政策,限制用戶在沒有代碼審查的情況下籤入代碼。在TFS2013簽入政策之後爲代碼評論通知創建自定義

我在我們公司有一個需求,我需要開發一些特定的文件(數據庫更新)被選中到TFS,然後發送給一組高級開發人員進行代碼審查的電子郵件通知。另外,電子郵件通知應該告訴我們什麼時候進行了最後的代碼審查以及由誰執行。

關於如何解決這個問題的任何想法。在過去,我創建了一個在簽入前檢查文件有效性的策略,我使用了PolicyBase和Evaluate方法來執行此操作,但我很困惑,一旦簽入成功,我可以捕獲哪些類/方法來放置代碼。

我沒有代碼,除了爲文件有效性寫的代碼。在登記入住政策後,我找不到任何有用的信息。或者,這可以在服務器本身上配置?

回答

0

而不是簽入策略,您可以創建偵聽器來偵聽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) }; 
     } 
    } 
}