2012-03-17 8 views
5

Sto cercando di ottenere un elenco di file modificati da SharpSVN. Posso ottenere i dati che ho bisogno nella riga di comando come questo:Come ottenere l'elenco dei file modificati in SharpSVN (come svn diff --summarize --xml)

svn diff -r <startrev>:HEAD --summarize --xml 

Qualcuno può puntare al posto giusto nel SharpSVN labirinto di replicare questo? Idealmente, sarei in grado di ottenere una raccolta dei file modificati, ma posso analizzare un flusso se necessario.

risposta

2

c'è modo più semplice per farlo, ma ecco alcune approch diverso:

con sharpsvn utilizzare il comando Stato per retrive lo stato di tutti i file in entrambe le WorkingCopy e stato Repository e quindi confrontare tra di loro

esempio:

using (SvnClient cl = new SvnClient()) 
    cl.Status(YourPath, new SvnStatusArgs { 
    Depth = SvnDepth.Infinity, ThrowOnError = true, 
    RetrieveRemoteStatus = true, Revision = SvnRevision.Head}, 
    new EventHandler<SvnStatusEventArgs>(
     delegate(object s, SvnStatusEventArgs e) { 
      switch (e.LocalContentStatus) { 
      case SvnStatus.Normal:break; 
      case SvnStatus.None: break; 
      case SvnStatus.NotVersioned: break; 
      case SvnStatus.Added:break; 
      case SvnStatus.Missing: break; 
      case SvnStatus.Modified: break; 
      case SvnStatus.Conflicted: break; 
      default: break; 
      } 
      switch (e.RemoteContentStatus) { 
      case SvnStatus.Normal:break; 
      case SvnStatus.None: break; 
      case SvnStatus.NotVersioned: break; 
      case SvnStatus.Added:break; 
      case SvnStatus.Missing: break; 
      case SvnStatus.Modified: break; 
      case SvnStatus.Conflicted: break; 
      default: break; 
      } 
     })); 
+1

svn diff --summarize invocato in questo modo confronta due url a revisioni specifiche. Lo stato confronta la copia di lavoro con una revisione specifica. –

4

L'equivalente SharpSvn di svn diff --summarize è SvnClient.DiffSummary().

è possibile utilizzarlo come

using (var client = new SvnClient()) 
{ 
    var location = new Uri("http://my.example/repos/trunk"); 
    client.DiffSummary(new SvnUriTarget(location, 12), new SvnUriTarget(location, SvnRevision.Head), 
         delegate(object sender, SvnDiffSummaryEventArgs e) 
         { 
         // TODO: Handle result 
         }); 
} 

quando si desidera che i risultati come vengono in.

oppure è possibile utilizzare .GetDiffSummary() se si desidera accedere al risultato finale come una lista.

+0

Si noti che Subversion -1.7 supporta solo gli obiettivi Uri per il riepilogo. Sembra che questa limitazione verrà risolta in 1.8. –