Bagaimana menemukan nomor versi server Subversion saya?

292

Saya ingin tahu apakah server saya menjalankan Subversion 1.5.

Bagaimana saya bisa mengetahuinya?

Juga menyenangkan mengetahui nomor versi klien SVN saya. svn helpbelum membantu.

Catatan: Saya tidak ingin nomor revisi proyek saya , dll. Pertanyaan ini tentang perangkat lunak Subversion itu sendiri.

Peter Mortensen
sumber

Jawaban:

210

Untuk menemukan versi REPOSITORY subversi, Anda dapat:

  1. Lihatlah repositori di web dan di bagian bawah halaman itu akan
    tertulis sesuatu seperti: "Didukung oleh Subversion versi 1.5.2 (r32768)."
  2. Dari baris perintah: <masukkan curl, grep oneliner di sini>

Jika tidak ditampilkan, lihat sumber halaman

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

Sekarang untuk KLIEN subversi:

svn --version

akan cukup

Komunitas
sumber
31
Ini hanya berfungsi jika server akan menampilkan informasi ini, beberapa server seperti hosting kode google tidak.
Andrea Francia
3
Apakah itu versi server, atau versi repositori? (mereka bisa berbeda AFAIK)
GraemeF
7
Anda juga dapat melihat header respons (menggunakan pembakar / tampilan net untuk misalnya.) Dan menemukan versi SVN di sana
haknick
6
CollabNet juga tidak menampilkan nomor versi - baik yang tampak maupun di sumber halaman.
TenLeftFingers
5
-1: Menunggu jawaban ini selesai ("<insert curl, grep oneliner here>".) Jawaban tidak berguna sebaliknya bagi saya, karena server yang saya gunakan adalah svn://-hanya.
Slipp D. Thompson
133

Mari kita gabungkan tanggapan ini:

Untuk REPOSITORY / SERVER (pertanyaan awal):

Jika dapat mengakses server Subversion:

  • Dari jawaban sebelumnya oleh Manuel , jalankan yang berikut di server SVN:

    svnadmin --version
    

Jika HTTP / HTTPS mengakses:

  • Lihat baris "diberdayakan oleh Subversion" ketika mengakses server melalui browser.

  • Akses repositori melalui browser dan kemudian cari string versi yang tertanam dalam sumber HTML. Dari jawaban sebelumnya oleh elviejo dan jaredjacobs . Demikian pula, dari ??, gunakan alat pengembang browser Anda (biasanya Ctrl+ Shift+ I) untuk membaca respon penuh. Ini juga cara termudah (tidak otomatis) untuk berurusan dengan sertifikat dan otorisasi - browser Anda melakukannya untuk Anda.

  • Periksa tag respons (ini tidak diperlihatkan dalam sumber HTML), dari jawaban sebelumnya oleh Christopher

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

Jika svn: // atau ssh + svn akses

Jika server 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?

Jika server SVN kustom lain

    TBD

Harap edit untuk menyelesaikan jawaban ini

Untuk CLIENT (bukan pertanyaan awal):

svn --version
Lars Nordin
sumber
Jawaban ini tidak jelas yang svnserve --versionharus digunakan di server. Jika dijalankan pada klien, itu memberikan nomor versi klien, bukan server.
Craig McQueen
Ini koleksi yang bagus. Saya membuatnya dengan cara "membaca respons penuh dari akses http / https". Dalam kasus saya, saya dapat melihat satu baris dalam tajuk respons: <Server: "Apache / 2.2.14 (Unix) DAV / 2 SVN / 1.6.9 mod_ssl / 2.2.14 OpenSSL / 0.9.8a">
Tatera
Jika seseorang menggunakan Visual SVN Server, beberapa baris pertama sumber HTML (klik kanan, lihat Sumber Halaman) akan menunjukkan versi SVN.
Raptor
Jawaban ini sedang dibahas di Meta .
Glorfindel
70

Di server: svnserve --version

dalam hal konfigurasi berbasis svnserve (svn: // dan svn + xxx: //).

(Untuk kelengkapan).

Milen A. Radev
sumber
Seperti yang Joe J sebutkan di bawah ini, saya percaya ini hanya akan memberi Anda versi program klien svnserve yang kemungkinan besar akan cocok dengan program klien svn
Kirby
12
svnservebukan program klien, ini servernya. Dan Anda harus mengetikkan perintah di atas saat Anda berada di server.
Milen A. Radev
48

Inilah cara paling sederhana untuk mendapatkan versi server SVN. HTTP berfungsi bahkan jika repositori SVN Anda membutuhkan HTTPS .

$ curl -X OPSI http: // my-svn-domain /
<! DOCTYPE HTML PUBLIC "- // IETF // DTD HTML 2.0 // EN">
<html> <head> ... </head>
<body> ...
<address> Apache / 2.2.11 (Debian) DAV / 2 SVN / 1.5.6 PHP / 5.2.9-4 ... </address>
</body> 
</html>
jaredjacobs
sumber
1
Inilah yang saya butuhkan. Silakan memilih!
bentford
8
Hanya berfungsi ketika "ServerTokens Penuh" ( httpd.apache.org/docs/2.2/mod/core.html#servertokens ).
Milen A. Radev
24

Untuk server berbasis HTTP ada skrip Python untuk menemukan versi server di: http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/server-version.py

Anda bisa mendapatkan versi klien dengan

`svn --version`
PiedPiper
sumber
5
Kecuali saya salah, sepertinya skrip itu hanya berfungsi dengan server berbasis http atau https, dan bukan server svn atau ssh + svn
crashmstr
Jika ssh berdasarkan hanya ssh ke dalam kotak dan jalankan "svn --versi".
John Meagher
5
'svn --versi' di server hanya memberi Anda versi klien yang berjalan di server, mungkin belum tentu sama dengan versi server
PiedPiper
1
Script itu juga memerlukan ServerTokens Full untuk diatur di server Apache. Ini akan gagal untuk server yang sama bahwa solusi curl akan gagal.
yam655
24

Jika versi server Subversion tidak dicetak dalam daftar HTML, itu tersedia di header HTTP RESPONSE yang dikembalikan oleh server. Anda bisa mendapatkannya menggunakan perintah shell ini

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

Jika server SVN mengharuskan Anda memberikan nama pengguna dan kata sandi, tambahkan wgetparameter --userdan --passwordke perintah seperti ini

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
sumber
4
Saya mencoba semua opsi lain di halaman ini, dengan curl dan dari URL dan sejauh ini satu-satunya yang bekerja untuk saya - server adalah freebsd, server 1.6.16.
ideasman42
Demikian juga ini adalah satu-satunya jawaban yang bekerja untuk saya di antara semua jawaban di sini. Saya menggunakan Firefox Live HTTP Header dan untuk membaca respons dari server karena saya juga mengalami masalah sertifikat ssl yang saya tidak merasa kesulitan untuk mencari tahu. Terima kasih, Christopher
Kirby
1
@ Kirby Saya telah menambahkan --no-check--certificateparameter, --userdan --passworduntuk menangani server yang membutuhkan kredensial tetapi tidak memiliki sertifikat ssh yang valid. Ini cukup umum seperti yang Anda catat.
Christopher
1
@Christopher seharusnya membaca '' wget --password = 'password' .. | ..; ' atas.
whaefelinger
@wefefinger terima kasih atas koreksinya. Saya sudah memperbarui jawabannya.
Christopher
8

Satu lagi opsi: Jika Anda memiliki Firefox (Saya menggunakan 14.0.1) dan antarmuka web SVN:

  • Buka Alat-> Pengembang Web-> Konsol Web pada halaman repo
  • Segarkan halaman
  • Klik pada garis GET
  • Lihat di Respon Header di bagian Server: baris

Seharusnya ada string "SVN / 1.7.4" atau serupa di sana. Sekali lagi, ini mungkin hanya akan berfungsi jika Anda memiliki "ServerTokens Full" seperti yang disebutkan di atas.

Conrad
sumber
Terima kasih. Saya baru saja melakukan hal serupa di Chrome untuk server VisualSVN dengan membuka tab Jaringan di jendela Alat Pengembang (tekan F12 untuk mengakses ini), dan kemudian memeriksa responsnya.
XåpplI'-I0llwlg'I -
Pembaruan: klik pada tab Jaringan di panel Alat sebelum menyegarkan halaman (saat ini Firefox 30)
Conrad
7

Sebenarnya tidak ada cara mudah untuk mengetahui versi Subversion yang dijalankan oleh server Anda - kecuali untuk masuk ke server dan melihatnya sendiri.

Namun, ini mungkin bukan masalah besar seperti yang Anda pikirkan. Klien Subversion adalah sebagian besar pekerjaan kasar ditangani, dan sebagian besar versi klien Subversion dapat bekerja dengan hampir semua versi server.

Rilis terakhir di mana versi server benar-benar membuat perbedaan bagi klien adalah perubahan dari rilis 1.4 menjadi rilis 1.5 ketika penggabungan pelacakan ditambahkan. Pelacakan gabungan telah sangat ditingkatkan di versi 1.6, tetapi itu tidak benar-benar mempengaruhi interaksi antara klien dan server.

Mari kita ambil perubahan terbaru di Subversion 1.8:

  • svn movesekarang merupakan operasi kelas pertama : Subversion akhirnya mengerti bahwa svn moveini bukan svn copydan svn delete. Namun, ini adalah sesuatu yang ditangani klien dan tidak benar-benar mempengaruhi versi server.
  • svn merge --reintegrateusang : Sekali lagi, selama server berada pada versi 1.5 atau lebih besar ini bukan masalah.
  • Warisan Properti : Ini adalah pembaruan rilis 1,8 lainnya, tetapi ini akan bekerja dengan server Subversion apa pun - meskipun server Subversion yang menjalankan 1,8 akan memberikan kinerja yang lebih baik pada properti yang dapat diwarisi.
  • Dua properti turunan baru - svn:global-ignoresdansvn:auto-props : Alas! Apa yang benar-benar kita inginkan. Cara men-setup dua properti ini tanpa tergantung pada file konfigurasi Subversion itu sendiri. Namun, ini hanya masalah klien, jadi sekali lagi tidak masalah versi server yang Anda gunakan.
  • caching memori gnu-agent : Fitur khusus klien lainnya.
  • peningkatan kinerja fsfs dan otentikasi in-repositori authz. Fitur yang bagus, tetapi ini berfungsi tidak peduli apa versi klien yang Anda gunakan.

Dari semua fitur, hanya satu yang tergantung pada versi server yang 1,5 atau lebih besar (dan 1,4 telah usang cukup lama. Fitur yang lebih baru 1,8 akan meningkatkan kinerja copy pekerjaan Anda, tetapi server yang berada pada revisi 1,8 tidak diperlukan. Anda jauh lebih terpengaruh oleh versi klien Anda daripada versi server Anda.

Saya tahu ini bukan jawaban yang Anda inginkan (tidak ada cara resmi untuk melihat versi server), tetapi untungnya versi server tidak terlalu mempengaruhi Anda.

David W.
sumber
7

Coba ini:

ssh your_user@your_server svnserve --version

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

Saya harap ini membantu.

ejaenv
sumber
4

Untuk konfigurasi svn + ssh, gunakan ssh untuk menjalankan svnserve --versi di mesin host:

$ ssh user @ host svnserve --version

Hal ini diperlukan untuk menjalankan perintah svnserve pada mesin yang sebenarnya berfungsi sebagai server.

Glenn
sumber
1
ini mengasumsikan Anda dapat ssh ke server. Adalah umum untuk mengkonfigurasi svn + ssh server dengan kunci publik dalam file otor_keys dan perintah = svnserve yang secara otomatis memulai svnserver tanpa opsi --version.
jrwren
2

Cukup gunakan browser web untuk pergi ke alamat SVN. Periksa kode sumber ( Ctrl+ U). Maka Anda akan menemukan sesuatu seperti dalam kode HTML:

<svn version="1.6. ..." ...
Tidak ada apapun
sumber
2

Jelajahi repositori dengan Firefox dan periksa elemen dengan Firebug . Di bawah tab NET, Anda dapat memeriksa Header halaman. Ini akan memiliki sesuatu seperti:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X
Jason H
sumber
1
Sudah mencoba ini dengan server subversi saya dan tidak melihat versinya. Melihat posting lain yang serupa kedengarannya seperti tidak semua server subversi mendukung cara tertentu untuk menentukan nomor versi server.
Joshua
1

Untuk Subversion 1.7 dan di atasnya, server tidak menyediakan catatan kaki yang menunjukkan versi server. Tetapi Anda dapat menjalankan perintah berikut untuk mendapatkan versi dari header respons

$ 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

Perhatikan bahwa ini juga berfungsi pada server Subversion di mana Anda tidak memiliki izin untuk mengakses.

mettkea
sumber
1

Anda dapat terhubung ke server Subversion Anda menggunakan HTTP dan menemukan nomor versi di header HTTP.

eaubin
sumber
0

Jika Anda menggunakan VisualSVN Server, Anda dapat mengetahui nomor versi dengan beberapa cara berbeda.

Gunakan VisualSVN Server Manager

Ikuti langkah-langkah ini untuk mengetahui versi melalui konsol manajemen:

  1. Mulai konsol Server Manajer VisualSVN .
  2. Lihat Versi di sudut kanan bawah dasbor.

masukkan deskripsi gambar di sini

Jika Anda mengklik Versi Anda juga akan melihat versi komponen.

masukkan deskripsi gambar di sini

Periksa file README.txt

Ikuti langkah-langkah ini untuk mengetahui versi dari file readme.txt:

  1. Mulai notepad.exe .
  2. Buka file % VISUALSVN_SERVER% README.txt . Baris pertama menunjukkan nomor versi.

masukkan deskripsi gambar di sini

bahrep
sumber
-1

Yang berikut pada baris perintah harus memberi Anda nomor versi

   svn --version
Paul Wicks
sumber
11
Itu hanya memberi Anda versi klien (kecuali jika Anda menjalankannya di server). (Dan bahkan kemudian, klien svn server belum tentu versi yang sama dengan server svn, meskipun kemungkinan besar adalah.)
cjm
12
-1 Ini hanya memberikan nomor klien subversi yang tidak terkait dengan nomor server.
Andrea Francia
2
ini untuk klien Untuk versi server svnserve --version
Rajesh
1
svn helptidak membantu karena tidak mencantumkan parameter yang dimulai dengan dua tanda hubung. Menemukan posting Anda melalui google ketika mencari versi svn saya.
Bernhard Döbler
-1

Repositori tidak diperbarui secara otomatis kecuali administrator menjalankan 'svnadmin upgrade'. Untuk memastikan nomor versi repositori, periksa file 'format'. Lihat komentar @ bdumitriu .

simpanse
sumber