Pregunta

Como llegar reciente número de revisión utilizando SharpSVN?

¿Fue útil?

Solución

La forma menos costosa de recuperar la revisión de cabecera de un repositorio es el comando Info.

using(SvnClient client = new SvnClient())
{
   SvnInfoEventArgs info;
   Uri repos = new Uri("http://my.server/svn/repos");

   client.GetInfo(repos, out info);

   Console.WriteLine(string.Format("The last revision of {0} is {1}", repos, info.Revision));
}

Otros consejos

Estoy comprobando la última versión de la copia de trabajo utilizando SvnWorkingCopyClient:

var workingCopyClient = new SvnWorkingCopyClient();

SvnWorkingCopyVersion version;

workingCopyClient.GetVersion(workingFolder, out version);

La última versión del repositorio de trabajo local está entonces disponible a través

long localRev = version.End;

Para un repositorio remoto, el uso

 var client = new SvnClient();

 SvnInfoEventArgs info;

 client.GetInfo(targetUri, out info);

 long remoteRev = info.Revision;

en su lugar.

Esto es similar al uso de la herramienta svnversion desde la línea de comandos. Espero que esto ayude.

Ok, pensé que por mí mismo:

SvnInfoEventArgs statuses;
client.GetInfo("svn://repo.address", out statuses);
int LastRevision = statuses.LastChangeRevision;

i en Google también mucho, pero la sola cosa que se trabaja para que consiga realmente la última revisión fue:

public static long GetRevision(String target)
    {
        SvnClient client = new SvnClient();

        //SvnInfoEventArgs info;
        //client.GetInfo(SvnTarget.FromString(target), out info); //Specify the repository root as Uri
        //return info.Revision
        //return info.LastChangeRevision

        Collection<SvnLogEventArgs> info = new Collection<SvnLogEventArgs>();
        client.GetLog(target, out info);
        return info[0].Revision;
    }

las otras soluciones están comentadas. Probar por su cuenta y ver la diferencia. . .

Bueno, una rápida búsqueda en Google me dio eso, y funciona (solo apuntar al / del tronco / URI):

http://sharpsvn.open.collab.net /ds/viewMessage.do?dsForumId=728&dsMessageId=89318

Esta es una pregunta muy antigua, y se ha respondido bien en las dos primeras respuestas. Sin embargo, con la esperanza de que podría ser de alguna ayuda para que alguien les dejo el siguiente método C # para ilustrar cómo no sólo para obtener los números de revisión tanto del repositorio y la copia de trabajo, sino también la forma de probar para las situaciones más comunes que pueden ser considerados como problemas, por ejemplo en un proceso de generación automatizada.

  /// <summary>
  /// Method to get the Subversion revision number for the top folder of the build collection, 
  /// assuming these files were checked-out from Merlinia's Subversion repository. This also 
  /// checks that the working copy is up-to-date. (This does require that a connection to the 
  /// Subversion repository is possible, and that it is running.)
  /// 
  /// One minor problem is that SharpSvn is available in 32-bit or 64-bit DLLs, so the program 
  /// needs to target one or the other platform, not "Any CPU".
  /// 
  /// On error an exception is thrown; caller must be prepared to catch it.
  /// </summary>
  /// <returns>Subversion repository revision number</returns>
  private int GetSvnRevisionNumber()
  {
     try
     {
        // Get the latest revision number from the Subversion repository
        SvnInfoEventArgs svnInfoEventArgs;
        using (SvnClient svnClient = new SvnClient())
        {
           svnClient.GetInfo(new Uri("svn://99.99.99.99/Merlinia/Trunk"), out svnInfoEventArgs);
        }

        // Get the current revision numbers from the working copy that is the "build collection"
        SvnWorkingCopyVersion svnWorkingCopyVersion;
        using (SvnWorkingCopyClient svnWorkingCopyClient = new SvnWorkingCopyClient())
        {
           svnWorkingCopyClient.GetVersion(_collectionFolder, out svnWorkingCopyVersion);
        }

        // Check the build collection has not been modified since last commit or update
        if (svnWorkingCopyVersion.Modified)
        {
           throw new MerliniaException(0x3af34e1u, 
                  "Build collection has been modified since last repository commit or update.");
        }

        // Check the build collection is up-to-date relative to the repository
        if (svnInfoEventArgs.Revision != svnWorkingCopyVersion.Start)
        {
           throw new MerliniaException(0x3af502eu, 
             "Build collection not up-to-date, its revisions = {0}-{1}, repository = {2}.",
             svnWorkingCopyVersion.Start, svnWorkingCopyVersion.End, svnInfoEventArgs.Revision);
        }

        return (int)svnInfoEventArgs.Revision;
     }
     catch (Exception e)
     {
        _fLog.Error(0x3af242au, e);
        throw;
     }
  }

(Este código hace incluir un par de cosas específicas para el programa fue copiado, pero eso no debería hacer que las partes SharpSvn difícil de entender.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top