2016-03-24 12 views

cevap

1

Bu, TFS uyarısı ile gerçekleştirilemez. Her check-in bir uyarıyı tetikleyecektir. TFS uyarısı ile, yalnızca belirtilen bir klasör altındaki diğer kullanıcıların check-in'leri için bir e-posta bildirimi almaya ayarlayabilirsiniz (örneğin, &/Main) Tüm check-in mesajlarını almak istiyorsanız, çok fazla postaların

İhtiyacınız olanı elde etmek için TFS API kullanmalısınız. Her check-in TFS'de bir değişiklik oluşturacağından. Bu nedenle, yalnızca bir defaya mahsus değişim bilgisini listelemeniz gerekir. Patrick söylediği gibi

var tfsUrl = "http://myTfsServer:8080/tfs/defaultcollection"; 
var sourceControlRootPath = "$/MyTeamProject"; 
var tfsConnection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUrl)); 
var vcs = tfsConnection.GetService<VersionControlServer>(); 

var changeSets = vcs.QueryHistory(sourceControlRootPath, RecursionType.Full); 

foreach (var c in changeSets) 
{ 
    var changeSet = vcs.GetChangeset(c.ChangesetId); 
    foreach (var change in changeSet.Changes) 
    { 
     // All sorts of data in here 
    } 

} 
+0

Evet sağol. Aslında bunu denedim. Versioncontrolclient.query history() ile çalıştım. Yine, belirli bir tarihi geçerek değişim setlerini alamıyorum. Tüm değişim kümelerini ve belirli bir tarihi kontrol etmem gerekiyordu. Bunu versioncontrolserver'da elde etmek için herhangi bir seçenek var mı? – Karthick

4

bu elde edilemez: Bir CreationDate özellikleri (. Alır veya bu Changeset yaratılması tarihi belirler)

bir proje kapsamında tüm değişiklik kümesi bilgi listelemek için bir örnek vardır TFS uyarıları. Böylece TFS api check in olayını kullanabilirsiniz.

ISubscriber arabirimine bir göz atın.

Bir sınıf kitaplığı projesi oluşturun. Projeyi derlemek

public class CheckinEventHandler : ISubscriber 
{ 
     public string Name 
     { 
      get { return "CheckinEventHandler"; } 
     } 

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

     public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, 
                out string statusMessage, out ExceptionPropertyCollection properties) 
     { 

      statusCode = 0; 
      properties = null; 
      statusMessage = String.Empty; 

      if (notificationType == NotificationType.Notification && notificationEventArgs is CheckinEvent) 
       { 
        //Write info in file 

       } 
     } 

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

gibi bir olay işleyicisi sınıf şeyler yazın ve C dll yerleştirin: \ Application Tier \ Web Hizmetleri \ Program Files \ Microsoft Team Foundation Server 2010 \ bin \ Eklentiler

yılında ProcessEvent yöntemi, herhangi bir dosya türünde checkin hakkında bilgi yazar. Bunu bir metin dosyasında yazabilirsiniz. Bir gün boyunca aynı dosyadaki tüm bilgileri ekleyin. Yöntem daha sonra programlı dosyayı silmek doğrudur döndürürse

 public bool SendMail() 
     { 
      try 
      { 
       MailMessage mail = new MailMessage(); 
       mail.To.Add("some emailId"); 

       mail.From = new MailAddress("some emailId"); 
       mail.Subject = "Checkin Info"; 
       mail.Body =//Assign content of the text file here 
       mail.IsBodyHtml = false; 

       SmtpClient smtp = new SmtpClient(); 
       smtp.Host = //e.g. "smtp.gmail.com" 
       smtp.Credentials = new System.Net.NetworkCredential 
        ("userId", "password"); 

       smtp.EnableSsl = false; 

       smtp.Send(mail); 
       return true; 
      } 
      catch (Exception e) 
      { 
       return false; 
      } 
     } 

:

Sonra böyle bir e-posta memuru programı şey yaratmak.

Bu programı, her gün TaskSchedular kullanarak sabit bir zamanda çalışacak şekilde zamanlayabilirsiniz.

Her gün sadece bir e-posta alacağınız bu şekilde, herhangi bir check-in işlemini de kaçırmayacaksınız.

İlgili konular