2012-08-15 12 views
10

Vorrei produrre un elenco di unire i candidati tra due rami che include i commenti del changeset in un formato che posso copiare incollare in un messaggio di posta elettronica.Come posso ottenere i commenti del changeset con i candidati di unione da un comando della riga di comando TFS?

So che posso fare questo comando tf:

tf merge /candidate $/Branch1 $/Branch2 

che restituisce qualcosa di questo:

Changeset Author       Date 
--------- -------------------------------- ---------- 
    22282 developer1      08/09/2012 
    22354 developer2      08/14/2012 
    22361 developer2      08/14/2012 
    22365 developer2      08/14/2012 
    22381 developer3      08/15/2012 

Tuttavia, mi piacerebbe ottenere i commenti pure. La procedura Unisci fa qualcosa di simile quando si esegue un merge "Selected changesets". Ecco un esempio:

enter image description here

stavo pensando che potrei essere in grado di combinare tf merge /candidate in qualche modo con questo comando:

tf changeset /noprompt 12345 

che emette qualcosa di simile:

Changeset: 12345 
User: developer1 
Date: Thursday, August 09, 2012 5:20:01 PM 

Comment: 
    Completed various things 

Items: 
    merge, edit $/Branch1/BreakFreely.asmx.vb 
    merge, edit $/Branch1/FreelyBroken.vb 

Work Items: 
    ID Type    State Assigned To Title 
    ----- ------------------- ----- ------------ ----------------------------------------------------------------------------- 
    21406 Sprint Backlog Task Done JoDeveloper1 Fix various things 

Check-in Notes: 
    Code Reviewer: 
    Complete Lyblind 

In breve, il mio risultato desiderato è qualcosa di simile:

Changeset Author       Date  Comment 
--------- -------------------------------- ---------- -------------------------- 
    22282 developer1      08/09/2012 Fixed random stuff 
    22354 developer2      08/14/2012 Fixed specific stuff 

Cosa ne pensi?

risposta

3

Se si desidera utilizzare TFS-SDK e scrivere la propria app per console, questa operazione dovrebbe essere abbastanza semplice.
Quanto segue potrebbe servire come avvio anticipato:

using System; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 

namespace MergeCandidates 
{ 
    class Program 
    { 
     static void Main() 
     { 
      TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFSURI")); 

      var versionControl = teamProjectCollection.GetService<VersionControlServer>(); 
      var mergeCandidates = 
       versionControl.GetMergeCandidates(@"$/FromPath", 
                @"$/ToPath", RecursionType.Full); 
      foreach (var mergeCandidate in mergeCandidates) 
      { 
       Console.WriteLine(string.Format("{0} {1} {2} {3}", 
               mergeCandidate.Changeset.ChangesetId, 
               mergeCandidate.Changeset.Owner, 
               mergeCandidate.Changeset.CreationDate, 
               mergeCandidate.Changeset.Comment)); 
      } 
     } 
    } 
} 
Problemi correlati