Frage

Wie neueste Revisionsnummer mit SharpSvn bekommen?

War es hilfreich?

Lösung

Die am wenigsten teure Art und Weise den Kopf Revision von einem Repository abrufen ist der Info-Befehl.

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

Andere Tipps

Ich bin die neueste Version der Arbeitskopie SvnWorkingCopyClient Überprüfung:

var workingCopyClient = new SvnWorkingCopyClient();

SvnWorkingCopyVersion version;

workingCopyClient.GetVersion(workingFolder, out version);

Die neueste Version des lokalen Arbeits Repository steht dann durch

long localRev = version.End;

Für eine Remote-Repository, Verwendung

 var client = new SvnClient();

 SvnInfoEventArgs info;

 client.GetInfo(targetUri, out info);

 long remoteRev = info.Revision;

statt.

Dies ist ähnlich das svnversion Tool von der Befehlszeile zu verwenden. Hoffe, das hilft.

Ok, ich dachte, es von mir:

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

i googeln auch viel, aber die einzige Sache, die für mich arbeitet wirklich die letzte Revision zu bekommen war:

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

die anderen Lösungen kommentiert werden. Versuchen Sie selbst und den Unterschied sehen. . .

Nun, eine schnelle Google-Suche gab mir das, und es funktioniert (nur Punkt am / trunk / URI):

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

Dies ist eine sehr alte Frage, und es hat sich gut in den oberen zwei Antworten beantwortet. Dennoch gibt es in der Hoffnung, könnte es eine Hilfe zu jemandem sein, ich folgenden C # Methode zur Veranschaulichung bin Entsendung, wie nur von den Revisionsnummern nicht erhalten sowohl das Repository und der Arbeitskopie, sondern auch, wie für typische Situationen zu testen, das könnte betrachtet als Probleme, beispielsweise in einem automatisierten Build-Prozess.

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

(Dieser Code enthält ein paar Dinge, die für das Programm aus kopiert wurde, aber das sollte nicht die SharpSvn Teile schwer zu verstehen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top