Wie finde ich die Versionsnummer meines Subversion-Servers?

292

Ich möchte wissen, ob auf meinem Server Subversion 1.5 ausgeführt wird.

Wie kann ich das herausfinden?

Wäre auch schön, meine SVN-Client-Versionsnummer zu kennen. svn helpwar nicht hilfreich.

Hinweis: Ich möchte nicht die Revisionsnummer meines Projekts usw. Diese Frage bezieht sich auf die Subversion-Software selbst.

Peter Mortensen
quelle

Antworten:

210

Um die Version der Subversion REPOSITORY zu finden, können Sie:

  1. Schauen Sie sich das Repository im Web an und am Ende der Seite wird etwa
    Folgendes angezeigt : "Powered by Subversion Version 1.5.2 (r32768)."
  2. Über die Befehlszeile: <Curl einfügen, hier Greel Oneliner>

Wenn nicht angezeigt, zeigen Sie die Quelle der Seite an

<svn version="1.6.13 (r1002816)" href="http://subversion.tigris.org/"> 

Nun zur Subversion CLIENT:

svn --version

wird genügen

Gemeinschaft
quelle
31
Dies funktioniert nur, wenn der Server diese Informationen anzeigt, einige Server wie Google Code Hosting nicht.
Andrea Francia
3
Ist das die Serverversion oder die Repository-Version? (Sie können verschiedene AFAIK sein)
GraemeF
7
Sie können sich auch die
Antwortheader
6
CollabNet zeigt auch keine Versionsnummer an - weder sichtbar noch in der Quelle der Seite.
TenLeftFingers
5
-1: Warten, bis diese Antwort fertig ist (der Platzhalter "<Curl einfügen, Grep Oneliner hier>"). Die Antwort war für mich ansonsten nicht nützlich, da der Server, den ich verwende, svn://-only ist.
Slipp D. Thompson
133

Lassen Sie uns diese Antworten zusammenführen:

Für REPOSITORY / SERVER (die ursprüngliche Frage):

Wenn Sie auf den Subversion-Server zugreifen können:

  • Führen Sie nach einer früheren Antwort von Manuel Folgendes auf dem SVN-Server aus:

    svnadmin --version
    

Wenn HTTP / HTTPS-Zugriff:

  • Beachten Sie die Zeile "powered by Subversion", wenn Sie über einen Browser auf den Server zugreifen.

  • Greifen Sie über einen Browser auf das Repository zu und suchen Sie nach der in die HTML-Quelle eingebetteten Versionszeichenfolge. Aus früheren Antworten von Elviejo und Jaredjacobs . Verwenden Sie ab ?? die Entwicklertools Ihres Browsers (normalerweise Ctrl+ Shift+ I), um die vollständige Antwort zu lesen. Dies ist auch die einfachste (nicht automatisierte) Möglichkeit, mit Zertifikaten und Autorisierungen umzugehen - Ihr Browser erledigt dies für Sie.

  • Überprüfen Sie die Antwort-Tags (diese werden in der HTML-Quelle nicht angezeigt) aus einer früheren Antwort von Christopher

    wget -S --spider 'http://svn.server.net/svn/repository' 2>&1 |
    sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p'
    

Wenn svn: // oder ssh + svn Zugriff

Wenn GoogleCode SVN-Server

    Check out the current version in a FAQ: 
    http://code.google.com/p/support/wiki/SubversionFAQ#What_version_of_Subversion_do_you_use?

Wenn ein anderer benutzerdefinierter SVN-Server

    TBD

Bitte bearbeiten Sie, um diese Antwort zu beenden

Für den KUNDEN (nicht die ursprüngliche Frage):

svn --version
Lars Nordin
quelle
Diese Antwort ist nicht klar, svnserve --versiondie auf dem Server verwendet werden muss. Wenn es auf dem Client ausgeführt wird, gibt es die Versionsnummer des Clients an, nicht den Server.
Craig McQueen
Dies ist eine gute Sammlung. Ich habe es durch "Lesen der vollständigen Antwort vom http / https-Zugriff" gemacht. In meinem Fall sehe ich eine Zeile im Antwortheader: <Server: "Apache / 2.2.14 (Unix) DAV / 2 SVN / 1.6.9 mod_ssl / 2.2.14 OpenSSL / 0.9.8a">
Tatera
Wenn jemand Visual SVN Server verwendet, geben die ersten Zeilen der HTML-Quelle (Rechtsklick, Seitenquelle anzeigen) die SVN-Version an.
Raptor
Diese Antwort wird auf Meta diskutiert .
Glorfindel
70

Auf dem Server: svnserve --version

im Falle einer svnserve-basierten Konfiguration (svn: // und svn + xxx: //).

(Zur Vollständigkeit).

Milen A. Radev
quelle
Wie Joe J weiter unten erwähnt, glaube ich, dass dies nur die Version des svnserve-Client-Programms liefert, die höchstwahrscheinlich mit dem svn-Client-Programm übereinstimmt
Kirby,
12
svnserveist kein Client-Programm, sondern der Server. Und Sie müssen den obigen Befehl eingeben, wenn Sie sich auf dem Server befinden.
Milen A. Radev
48

Hier ist der einfachste Weg, um die SVN-Serverversion zu erhalten. HTTP funktioniert auch dann, wenn Ihr SVN-Repository HTTPS benötigt .

$ curl -X OPTIONEN http: // my-svn-domain /
<! DOCTYPE HTML PUBLIC "- // IETF // DTD HTML 2.0 // DE">
<html> <head> ... </ head>
<body> ...
<Adresse> Apache / 2.2.11 (Debian) DAV / 2 SVN / 1.5.6 PHP / 5.2.9-4 ... </ Adresse>
</ body> 
</ html>
Jaredjacobs
quelle
1
Das brauchte ich. Stimmen Sie bitte ab!
Bentford
8
Funktioniert nur, wenn "ServerTokens Full" ( httpd.apache.org/docs/2.2/mod/core.html#servertokens ).
Milen A. Radev
24

Für einen HTTP-basierten Server gibt es ein Python-Skript, um die Serverversion unter folgender Adresse zu finden: http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/server-version.py

Sie können die Client-Version mit erhalten

`svn --version`
Rattenfänger
quelle
5
Sofern ich mich nicht irre, sieht es so aus, als ob das Skript nur mit http- oder https-basierten Servern funktioniert und nicht mit svn- oder ssh + svn-Servern
crashmstr
Wenn es auf ssh basiert, geben Sie einfach ssh in die Box ein und führen Sie "svn --version" aus.
John Meagher
5
'svn --version' auf dem Server gibt Ihnen nur die Clientversion an, die auf dem Server ausgeführt wird. Sie muss nicht unbedingt mit der Serverversion
PiedPiper
1
Für dieses Skript muss außerdem ServerTokens Full auf dem Apache-Server festgelegt sein. Es schlägt für dieselben Server fehl, auf denen die Curl-Lösung fehlschlägt.
Yam655
24

Wenn die Subversion-Serverversion nicht in der HTML-Liste gedruckt ist, ist sie im vom Server zurückgegebenen HTTP RESPONSE-Header verfügbar. Sie können es mit diesem Shell-Befehl erhalten

wget -S --no-check-certificate \
  --spider 'http://svn.server.net/svn/repository' 2>&1 \
  | sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p';

Wenn der SVN-Server die Angabe eines Benutzernamens und eines Kennworts erfordert, fügen Sie die wgetParameter --userund --passwordden Befehl wie folgt hinzu

wget -S --no-check-certificate \
  --user='username' --password='password' \
  --spider 'http://svn.server.net/svn/repository' 2>&1 \
  | sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p';
Christopher
quelle
4
Ich habe alle anderen Optionen auf dieser Seite ausprobiert, mit Curl und über die URL, und dies ist bis jetzt die einzige, die für mich funktioniert hat - Server ist freebsd, Server 1.6.16.
ideasman42
Ebenso ist dies die einzige Antwort, die für mich unter allen Antworten hier funktioniert hat. Ich habe Firefox Live-HTTP-Header verwendet und die Antwort des Servers gelesen, da ich auch Probleme mit SSL-Zertifikaten hatte, die ich nicht herausfinden wollte. Vielen Dank, Christopher
Kirby
1
@Kirby Ich habe einen --no-check--certificateParameter hinzugefügt , a --userund --password, um Server zu behandeln, die Anmeldeinformationen erfordern, aber kein gültiges SSH-Zertifikat haben. Dies ist ziemlich häufig, wie Sie bemerkt haben.
Christopher
1
@Christopher sollte lauten '' wget --password = 'password' .. | ..; ' über.
Whaefelinger
@whaefelinger danke für die Korrektur. Ich habe die Antwort aktualisiert.
Christopher
8

Eine weitere Option: Wenn Sie Firefox (ich verwende 14.0.1) und eine SVN-Weboberfläche haben:

  • Öffnen Sie Tools-> Web Developer-> Web Console auf einer Repo-Seite
  • Seite neu laden
  • Klicken Sie auf GET Zeile
  • Suchen Sie im Abschnitt Antwortheader in der Zeile Server :.

Dort sollte eine Zeichenfolge "SVN / 1.7.4" oder ähnliches vorhanden sein. Auch dies wird wahrscheinlich nur funktionieren, wenn Sie wie oben erwähnt "ServerTokens Full" haben.

Conrad
quelle
Vielen Dank. Ähnliches habe ich in Chrome für einen VisualSVN-Server getan, indem ich die Registerkarte Netzwerk im Fenster Entwicklertools geöffnet habe (drücken Sie F12, um darauf zuzugreifen) und dann die Antwort überprüft habe.
XåpplI'-I0llwlg'I -
Update: Klicken Sie im Bereich Extras auf die Registerkarte Netzwerk, bevor Sie die Seite aktualisieren (derzeit Firefox 30)
Conrad
7

Es ist wirklich nicht einfach Möglichkeit, herauszufinden, welche Version von Subversion auf Ihrem Server ausgeführt wird - außer auf den Server zuzugreifen und sich selbst davon zu überzeugen.

Dies ist jedoch möglicherweise kein so großes Problem, wie Sie vielleicht denken. Bei Subversion-Clients wird ein Großteil der Grunzarbeit erledigt, und die meisten Versionen der Subversion-Clients können mit fast jeder Version des Servers arbeiten.

Die letzte Version, in der die Serverversion wirklich einen Unterschied für den Client ausmachte, war der Wechsel von Version 1.4 zu Version 1.5, als Merge Tracking hinzugefügt wurde. Das Merge-Tracking wurde in Version 1.6 erheblich verbessert, dies wirkt sich jedoch nicht wirklich auf die Interaktionen zwischen Client und Server aus.

Nehmen wir die neuesten Änderungen in Subversion 1.8:

  • svn moveist jetzt eine erstklassige Operation : Subversion versteht endlich, dass das svn movekein svn copyund ist svn delete. Dies ist jedoch etwas, das der Client behandelt und das die Serverversion nicht wirklich beeinflusst.
  • svn merge --reintegrateveraltet : Auch dies ist kein Problem, solange der Server Version 1.5 oder höher ist.
  • Eigenschaftsvererbung : Dies ist ein weiteres Release-Update für Version 1.8, das jedoch mit jedem Subversion-Server funktioniert. Subversion-Server mit Version 1.8 bieten jedoch eine bessere Leistung für vererbbare Eigenschaften.
  • Zwei neue vererbbare Eigenschaften - svn:global-ignoresundsvn:auto-props : Ach! Was wir wirklich wollten. Eine Möglichkeit, diese beiden Eigenschaften einzurichten, ohne von der Subversion-Konfigurationsdatei selbst abhängig zu sein. Dies ist jedoch nur ein Client-Problem, sodass es wiederum keine Rolle spielt, welche Version des Servers Sie verwenden.
  • Gnu-Agent-Speicher-Caching : Eine weitere Funktion nur für Clients.
  • Leistungsverbesserungen von fsfs und Authentifizierung im Repository. Schöne Funktionen, aber diese funktionieren unabhängig von der verwendeten Client-Version.

Von allen Funktionen hängt nur eine davon ab, ob die Version des Servers 1.5 oder höher ist (und 1.4 ist seit einiger Zeit veraltet. Die neueren Funktionen von 1.8 verbessern die Leistung Ihrer Arbeitskopie, der Server befindet sich jedoch in Version 1.8 Sie sind von Ihrer Client-Version viel stärker betroffen als von Ihrer Server-Version.

Ich weiß, dass dies nicht die Antwort ist, die Sie wollten (keine offizielle Möglichkeit, die Serverversion anzuzeigen), aber zum Glück wirkt sich die Serverversion nicht wirklich auf Sie aus.

David W.
quelle
7

Versuche dies:

ssh your_user@your_server svnserve --version

svnserve, version 1.3.1 (r19032)
   compiled May  8 2006, 07:38:44

Ich hoffe, es hilft.

ejaenv
quelle
4

Verwenden Sie für eine svn + ssh-Konfiguration ssh, um svnserve --version auf dem Hostcomputer auszuführen:

$ ssh user @ host svnserve --version

Es ist erforderlich, den Befehl svnserve auf dem Computer auszuführen, der tatsächlich als Server dient.

Glenn
quelle
1
Dies setzt voraus, dass Sie ssh zum Server können. Es ist üblich, einen svn + ssh-Server mit einem öffentlichen Schlüssel in der Datei authorized_keys und dem Befehl = svnserve zu konfigurieren, der svnserver automatisch ohne die Option --version startet.
jrwren
2

Verwenden Sie einfach einen Webbrowser, um zur SVN-Adresse zu gelangen. Überprüfen Sie den Quellcode ( Ctrl+ U). Dann finden Sie so etwas wie im HTML-Code:

<svn version="1.6. ..." ...
Nichts
quelle
2

Durchsuchen Sie das Repository mit Firefox und überprüfen Sie das Element mit Firebug . Auf der Registerkarte NET können Sie die Kopfzeile der Seite überprüfen. Es wird so etwas haben wie:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X
Jason H.
quelle
1
Versuchte dies mit meinem Subversion-Server und sehe die Version nicht. Bei anderen Posts, die ähnlich sind, scheint es, dass nicht alle Subversion-Server diese spezielle Methode zur Bestimmung der Serverversionsnummer unterstützen.
Joshua
1

Für Subversion 1.7 und höher stellt der Server keine Fußzeile bereit, die die Serverversion angibt. Sie können jedoch den folgenden Befehl ausführen, um die Version aus den Antwortheadern abzurufen

$ curl -s -D - http://svn.server.net/svn/repository
HTTP/1.1 401 Authorization Required
Date: Wed, 09 Jan 2013 03:01:43 GMT
Server: Apache/2.2.9 (Unix) DAV/2 SVN/1.7.4

Beachten Sie, dass dies auch auf Subversion-Servern funktioniert, auf denen Sie keine Zugriffsberechtigung haben.

Mettkea
quelle
1

Sie können über HTTP eine Verbindung zu Ihrem Subversion-Server herstellen und die Versionsnummer im HTTP-Header finden.

eaubin
quelle
0

Wenn Sie VisualSVN Server verwenden, können Sie die Versionsnummer auf verschiedene Weise ermitteln.

Verwenden Sie VisualSVN Server Manager

Führen Sie die folgenden Schritte aus, um die Version über die Verwaltungskonsole zu ermitteln:

  1. Starten Sie den VisualSVN Server Manager Konsole.
  2. Siehe die Version in der unteren rechten Ecke des Dashboards.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie auf Version klicken , werden auch die Versionen der Komponenten angezeigt.

Geben Sie hier die Bildbeschreibung ein

Überprüfen Sie die Datei README.txt

Führen Sie die folgenden Schritte aus, um die Version aus der Datei readme.txt zu ermitteln:

  1. Starten Sie notepad.exe .
  2. Öffnen Sie die Datei % VISUALSVN_SERVER% README.txt . Die erste Zeile zeigt die Versionsnummer.

Geben Sie hier die Bildbeschreibung ein

bahrep
quelle
-1

Das Folgende in der Befehlszeile sollte Ihnen die Versionsnummer geben

   svn --version
Paul Wicks
quelle
11
Das gibt Ihnen nur die Version des Clients (es sei denn, Sie führen sie auf dem Server aus). (Und selbst dann ist der SVN-Client des Servers nicht unbedingt dieselbe Version wie der SVN-Server, obwohl dies höchstwahrscheinlich der
Fall
12
-1 Dies gibt nur die Subversion-Client-Nummer an, die nicht mit der Servernummer zusammenhängt.
Andrea Francia
2
Dies ist für den Kunden. Für Serverversion svnserve --version
Rajesh
1
svn helpwar nicht hilfreich, da keine Parameter aufgelistet wurden, die mit zwei Strichen beginnen. Ich habe Ihren Beitrag über Google gefunden, als ich nach meiner SVN-Version gesucht habe.
Bernhard Döbler
-1

Ein Repository wird nicht automatisch aktualisiert, es sei denn, der Administrator führt 'svnadmin upgrade' aus. Überprüfen Sie die 'Format'-Datei, um die Versionsnummer des Repositorys zu ermitteln. Siehe den Kommentar von @ bdumitriu .

icasimpan
quelle