2012-03-17 8 views
5

Estoy tratando de obtener una lista de archivos modificados de SharpSVN. Puedo obtener los datos que necesito en la línea de comando como este:Cómo obtener la lista de archivos modificados en SharpSVN (como svn diff --summarize --xml)

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

Puede alguien que me señale el lugar correcto en el laberinto SharpSVN replicar esto? Idealmente, podría obtener una colección de los archivos modificados, pero puedo analizar una secuencia si es necesario.

Respuesta

2

hay forma más sencilla de hacer eso, pero aquí es un poco de approch diferente:

con sharpsvn utilice el comando Estado retrive el estado de todos los archivos en tanto WorkingCopy y estado del repositorio y luego comparar entre ellos

ejemplo:

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 invocado de este modo compara dos urls en revisiones específicas. El estado compara la copia de trabajo con una revisión específica. –

4

El equivalente SharpSvn de svn diff --summarize es SvnClient.DiffSummary().

Usted puede usarlo como

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 
         }); 
} 

cuando se desea que los resultados a medida que llegan.

o puede utilizar .GetDiffSummary() si desea acceder al resultado final como una lista.

+0

Tenga en cuenta que Subversion -1.7 solo admite los objetivos URI para resumir. Parece que esta limitación se eliminará en 1.8. –

Cuestiones relacionadas