Jak znaleźć numer wersji mojego serwera Subversion?

292

Chcę wiedzieć, czy na moim serwerze działa Subversion 1.5.

Jak mogę się tego dowiedzieć?

Byłoby również miło poznać numer wersji mojego klienta SVN. svn helpnie było pomocne.

Uwaga: nie chcę numeru wersji mojego projektu itp. To pytanie dotyczy samego oprogramowania Subversion .

Peter Mortensen
źródło

Odpowiedzi:

210

Aby znaleźć wersję Subversion REPOSITORY, możesz:

  1. Zajrzyj do repozytorium w Internecie, a na dole strony powie coś takiego:
    „Obsługiwane przez Subversion w wersji 1.5.2 (r32768)”.
  2. Z wiersza poleceń: <wstaw curl, grep oneliner tutaj>

Jeśli nie jest wyświetlany, wyświetl źródło strony

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

Teraz dla subwersji KLIENT:

svn --version

wystarczy

Społeczność
źródło
31
Działa to tylko wtedy, gdy serwer wyświetli te informacje, niektóre serwery takie jak hosting kodu Google nie.
Andrea Francia,
3
Czy to wersja serwera, czy wersja repozytorium? (mogą być różne AFAIK)
GraemeF
7
Możesz także spojrzeć na nagłówki odpowiedzi (używając np.
Firebug
6
CollabNet również nie wyświetla numeru wersji - ani widocznie, ani w źródle strony.
TenLeftFingers
5
-1: Oczekiwanie na zakończenie tej odpowiedzi (symbol zastępczy „<wstaw curl, grep oneliner tutaj>”). Odpowiedź nie była dla mnie przydatna, ponieważ serwer, którego używam, jest svn://tylko.
Slipp D. Thompson,
133

Połączmy te odpowiedzi:

W przypadku REPOSITORY / SERVER (pierwotne pytanie):

Jeśli można uzyskać dostęp do serwera Subversion:

  • Z wcześniejszej odpowiedzi przez Manuel , uruchom następujące operacje na serwerze SVN:

    svnadmin --version
    

Jeśli dostęp HTTP / HTTPS:

  • Zobacz wiersz „powered by Subversion” podczas uzyskiwania dostępu do serwera za pośrednictwem przeglądarki.

  • Uzyskaj dostęp do repozytorium za pośrednictwem przeglądarki, a następnie wyszukaj ciąg wersji osadzony w źródle HTML. Z wcześniejszych odpowiedzi elviejo i jaredjacobs . Podobnie, od ??, użyj narzędzi programistycznych przeglądarki (zwykle Ctrl+ Shift+ I), aby przeczytać pełną odpowiedź. Jest to również najłatwiejszy (niezautomatyzowany) sposób postępowania z certyfikatami i autoryzacją - przeglądarka robi to za Ciebie.

  • Sprawdź tagi odpowiedzi (nie zostały one pokazane w kodzie HTML), z wcześniejszej odpowiedzi przez Christophera

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

Jeśli dostęp svn: // lub ssh + svn

Jeśli serwery GoogleCode SVN

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

Jeśli inne niestandardowe serwery SVN

    TBD

Edytuj, aby zakończyć tę odpowiedź

W przypadku KLIENTA (nie oryginalne pytanie):

svn --version
Lars Nordin
źródło
Ta odpowiedź nie jest jasna, że svnserve --versionnależy jej użyć na serwerze. Jeśli jest uruchamiany na kliencie, podaje numer wersji klienta, a nie serwera.
Craig McQueen,
To dobra kolekcja. Zrobiłem to poprzez „przeczytanie pełnej odpowiedzi z dostępu http / https”. W moim przypadku widzę jeden wiersz w nagłówku odpowiedzi: <Serwer: „Apache / 2.2.14 (Unix) DAV / 2 SVN / 1.6.9 mod_ssl / 2.2.14 OpenSSL / 0.9.8a”>
Tatera
Jeśli ktoś używa Visual SVN Server, kilka pierwszych wierszy źródła HTML (kliknij prawym przyciskiem myszy, zobacz Źródło strony) wskaże wersję SVN.
Raptor
Ta odpowiedź jest dyskutowana na Meta .
Glorfindel,
70

Na serwerze: svnserve --version

w przypadku konfiguracji opartej na svnserve (svn: // i svn + xxx: //).

(Dla pełności).

Milen A. Radev
źródło
Jak wspomina Joe J poniżej, uważam, że da ci to tylko wersję programu klienckiego svnserve, która najprawdopodobniej będzie pasować do programu klienckiego svn
Kirby
12
svnserveto nie jest program kliencki, to serwer. I musisz wpisać powyższe polecenie, gdy jesteś na serwerze.
Milen A. Radev
48

Oto najprostszy sposób na uzyskanie wersji serwera SVN. HTTP działa, nawet jeśli twoje repozytorium SVN wymaga HTTPS .

$ curl -X OPCJE http: // moja-svn-domena /
<! DOCTYPE HTML PUBLIC ”- // IETF // DTD HTML 2.0 // EN”>
<html> <head> ... </head>
<body> ...
<adres> Apache / 2.2.11 (Debian) DAV / 2 SVN / 1.5.6 PHP / 5.2.9-4 ... </address>
</body> 
</html>
jaredjacobs
źródło
1
Właśnie tego potrzebowałem. Głosuj proszę!
Bentford,
8
Działa tylko, gdy „ServerTokens Full” ( httpd.apache.org/docs/2.2/mod/core.html#servertokens ).
Milen A. Radev,
24

W przypadku serwera opartego na HTTP istnieje skrypt w języku Python, który znajduje wersję serwera pod adresem : http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/server-version.py

Możesz pobrać wersję klienta za pomocą

`svn --version`
PiedPiper
źródło
5
Chyba że się mylę, to wygląda na to, że skrypt działa tylko z HTTP lub HTTPS serwerów opartych, a nie svn + ssh lub serwery SVN
crashmstr
Jeśli jest oparty na ssh, po prostu ssh do pudełka i uruchom „svn --version”.
John Meagher,
5
„svn --version” na serwerze daje tylko wersję klienta działającą na serwerze, niekoniecznie musi być taka sama jak wersja serwera
PiedPiper 26.09.08
1
Ten skrypt wymaga również ustawienia ServerTokens Full na serwerze Apache. Nie powiedzie się na tych samych serwerach, na których zawiedzie rozwiązanie curl.
yam655
24

Jeśli wersja serwera Subversion nie jest wydrukowana na liście HTML, jest dostępna w nagłówku HTTP RESPONSE zwróconym przez serwer. Możesz go uzyskać za pomocą tego polecenia powłoki

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

Jeśli serwer SVN wymaga podania nazwy użytkownika i hasła, dodaj wgetparametry --useri --passworddo polecenia w ten sposób

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';
Krzysztof
źródło
4
Wypróbowałem wszystkie inne opcje na tej stronie, z zawijaniem i z adresu URL, i jak na razie to jedyna, która działała dla mnie - serwer to freebsd, serwer 1.6.16.
ideasman42
Podobnie jest to jedyna odpowiedź, która zadziałała dla mnie spośród wszystkich odpowiedzi tutaj. Użyłem nagłówków HTTP Live Firefox i przeczytałem odpowiedź serwera, ponieważ miałem również problemy z certyfikatem ssl, których nie miałem ochoty rozwiązać. Dziękuję, Christopher
Kirby,
1
@ Kirby Dodałem --no-check--certificateparametr a --useroraz --passworddo obsługi serwerów, które wymagają poświadczeń, ale nie mają ważnego certyfikatu ssh. Jest to dość powszechne, jak zauważyłeś.
Christopher
1
@Christopher powinien przeczytać '' wget --password = 'hasło' .. | ..; ” powyżej.
whaefelinger
@whaefelinger dzięki za korektę. Zaktualizowałem odpowiedź.
Christopher
8

Jeszcze jedna opcja: jeśli masz Firefox (używam 14.0.1) i interfejs sieciowy SVN:

  • Otwórz Narzędzia-> Web Developer-> Konsola internetowa na stronie repo
  • Odśwież stronę
  • Kliknij linię GET
  • Zajrzyj do sekcji Nagłówki odpowiedzi w wierszu Serwer:

Powinien tam być ciąg „SVN / 1.7.4” lub podobny. Ponownie, prawdopodobnie będzie to działać tylko wtedy, gdy masz „ServerTokens Full”, jak wspomniano powyżej.

Conrad
źródło
Dzięki. Zrobiłem podobnie w Chrome dla serwera VisualSVN, otwierając kartę Sieć w oknie Narzędzi programisty (naciśnij F12, aby uzyskać dostęp do tego), a następnie sprawdzając odpowiedź.
XåpplI'-I0llwlg'I -
Aktualizacja: kliknij kartę Sieć w panelu Narzędzia przed odświeżeniem strony (obecnie Firefox 30)
Conrad
7

Naprawdę nie ma łatwego sposobu, aby dowiedzieć się, która wersja Subversion działa na twoim serwerze - z wyjątkiem dostania się na serwer i przekonania się sam.

Jednak może to nie być tak duży problem, jak mogłoby się wydawać. Klienci Subversion są w dużej mierze obsługiwani, a większość wersji klientów Subversion może współpracować z prawie każdą wersją serwera.

Ostatnią wersją, w której wersja serwera naprawdę zmieniła klienta, była zmiana z wersji 1.4 na wersję 1.5, gdy dodano śledzenie scalania. W wersji 1.6 znacznie poprawiono śledzenie korespondencji seryjnej, ale tak naprawdę nie wpływa to na interakcje między klientem a serwerem.

Weźmy najnowsze zmiany w Subversion 1.8:

  • svn movejest teraz operacją pierwszej klasy : Subversion w końcu rozumie, że svn movenie jest a svn copyi svn delete. Jest to jednak coś, co klient obsługuje i tak naprawdę nie wpływa na wersję serwera.
  • svn merge --reintegrateprzestarzałe : Ponownie, dopóki serwer jest w wersji 1.5 lub nowszej, nie stanowi to problemu.
  • Dziedziczenie właściwości : Jest to kolejna aktualizacja wersji 1.8, ale będzie działać z każdym serwerem Subversion - chociaż serwery Subversion z uruchomioną wersją 1.8 zapewnią lepszą wydajność w zakresie dziedziczonych właściwości.
  • Dwie nowe dziedziczne właściwości - svn:global-ignoresisvn:auto-props : Niestety! Czego naprawdę chcieliśmy. Sposób ustawienia tych dwóch właściwości bez uzależnienia od samego pliku konfiguracyjnego Subversion. Jest to jednak problem tylko dla klienta, więc ponownie nie ma znaczenia, jakiej wersji serwera używasz.
  • buforowanie pamięci gnu-agent : kolejna funkcja dostępna tylko dla klienta.
  • Ulepszenia wydajności fsfs i uwierzytelnianie w repozytorium authz. Ładne funkcje, ale działają one niezależnie od używanej wersji klienta.

Ze wszystkich funkcji tylko jedna zależy od wersji serwera w wersji 1.5 lub nowszej (a 1.4 była już przestarzała od dłuższego czasu. Nowsze funkcje 1.8 poprawią wydajność kopii roboczej, ale serwer w wersji 1.8 nie jest jest to konieczne. Twoja wersja klienta bardziej niż wersja serwera wpływa na ciebie.

Wiem, że nie jest to odpowiedź, której chciałeś (nie ma oficjalnego sposobu, aby zobaczyć wersję serwera), ale na szczęście wersja serwera tak naprawdę na ciebie nie wpływa.

David W.
źródło
7

Spróbuj tego:

ssh your_user@your_server svnserve --version

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

Mam nadzieję, że to pomoże.

ejaenv
źródło
4

W przypadku konfiguracji svn + ssh użyj ssh, aby uruchomić svnserve --version na komputerze hosta:

$ ssh użytkownik @ host svnserve --version

Konieczne jest uruchomienie komendy svnserve na komputerze, który faktycznie służy jako serwer.

Glenn
źródło
1
zakłada to, że możesz ssh na serwer. Często konfiguruje się serwer svn + ssh z kluczem publicznym w pliku Author_keys i command = svnserve, który automatycznie uruchamia svnserver bez opcji --version.
jrwren,
2

Wystarczy użyć przeglądarki internetowej, aby przejść do adresu SVN. Sprawdź kod źródłowy ( Ctrl+ U). Następnie znajdziesz coś takiego jak w kodzie HTML:

<svn version="1.6. ..." ...
Nic
źródło
2

Przeglądaj repozytorium za pomocą przeglądarki Firefox i sprawdź element za pomocą Firebug . Na karcie NET możesz sprawdzić nagłówek strony. Będzie miał coś takiego:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X
Jason H.
źródło
1
Próbowałem tego na moim serwerze subversion i nie widzę wersji. Patrząc na podobne posty, wygląda na to, że nie wszystkie serwery subversion obsługują ten konkretny sposób określania numeru wersji serwera.
Joshua,
1

W przypadku Subversion 1.7 i nowszych serwer nie zawiera stopki wskazującej wersję serwera. Ale możesz uruchomić następujące polecenie, aby uzyskać wersję z nagłówków odpowiedzi

$ 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

Pamiętaj, że działa to również na serwerach Subversion, na których nie masz uprawnień dostępu.

mettkea
źródło
1

Możesz połączyć się z serwerem Subversion za pomocą protokołu HTTP i znaleźć numer wersji w nagłówku HTTP.

eaubin
źródło
0

Jeśli używasz VisualSVN Server, możesz znaleźć numer wersji na kilka różnych sposobów.

Użyj Menedżera serwera VisualSVN

Wykonaj następujące kroki, aby znaleźć wersję za pomocą konsoli zarządzania:

  1. Uruchom Menedżera serwera VisualSVN konsolę .
  2. Zobacz wersję w prawym dolnym rogu pulpitu nawigacyjnego.

wprowadź opis zdjęcia tutaj

Jeśli klikniesz Wersja , zobaczysz również wersje składników.

wprowadź opis zdjęcia tutaj

Sprawdź plik README.txt

Wykonaj następujące kroki, aby znaleźć wersję z pliku readme.txt:

  1. Uruchom notepad.exe .
  2. Otwórz plik % VISUALSVN_SERVER% README.txt . Pierwszy wiersz pokazuje numer wersji.

wprowadź opis zdjęcia tutaj

bahrep
źródło
-1

W wierszu polecenia powinien znajdować się numer wersji

   svn --version
Paul Wicks
źródło
11
To daje tylko wersję klienta (chyba że uruchomisz ją na serwerze). (I nawet wtedy klient svn serwera niekoniecznie musi mieć tę samą wersję co serwer svn, chociaż najprawdopodobniej tak jest.)
cjm
12
-1 To daje tylko numer klienta subversion, który nie jest związany z numerem serwera.
Andrea Francia,
2
to jest dla klienta. Dla wersji serwerowej svnserve --version
Rajesh
1
svn helpnie było pomocne, ponieważ nie wyświetlało parametrów zaczynających się od dwóch myślników. Znalazłem swój post przez google, kiedy szukałem mojej wersji svn.
Bernhard Döbler,
-1

Repozytorium nie jest aktualizowane automatycznie, chyba że administrator uruchomi aktualizację svnadmin. Aby upewnić się o numerze wersji repozytorium, sprawdź plik „format”. Zobacz komentarz @ bdumitriu .

icasimpan
źródło