จะค้นหาหมายเลขเวอร์ชั่นเซิร์ฟเวอร์ Subversion ของฉันได้อย่างไร


292

ฉันต้องการทราบว่าเซิร์ฟเวอร์ของฉันใช้ Subversion 1.5 หรือไม่

ฉันจะทราบได้อย่างไร

นอกจากนี้จะเป็นการดีหากได้ทราบหมายเลขเวอร์ชันไคลเอ็นต์ SVN ของฉัน svn helpไม่ได้รับประโยชน์

หมายเหตุ:ฉันไม่ต้องการหมายเลขแก้ไขของโครงการฯลฯ คำถามนี้เกี่ยวกับซอฟต์แวร์การโค่นล้มเอง

คำตอบ:


210

หากต้องการค้นหาเวอร์ชันของการโค่นล้ม REPOSITORY คุณสามารถ:

  1. มองไปที่ที่เก็บบนเว็บและที่ด้านล่างของหน้ามันจะพูดว่า:
    "Powered by Subversion เวอร์ชั่น 1.5.2 (r32768)"
  2. จากบรรทัดคำสั่ง: <insert curl, grep oneliner here>

หากไม่ปรากฏขึ้นให้ดูแหล่งที่มาของหน้า

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

ตอนนี้สำหรับการโค่นล้มลูกค้า:

svn --version

จะพอเพียง


31
ใช้งานได้เฉพาะในกรณีที่เซิร์ฟเวอร์จะแสดงข้อมูลนี้บางเซิร์ฟเวอร์เช่น Google โค้ดโฮสติ้งไม่ทำงาน
Andrea Francia

3
นั่นคือรุ่นของเซิร์ฟเวอร์หรือรุ่นที่เก็บ? (พวกเขาต่างกัน AFAIK)
GraemeF

7
นอกจากนี้คุณยังสามารถดูส่วนหัวการตอบสนอง (โดยใช้มุมมอง firebug / net เป็นต้น) และค้นหารุ่น SVN ในนั้น
haknick

6
CollabNet ยังไม่แสดงหมายเลขรุ่น - มองเห็นได้ชัดเจนหรือในแหล่งที่มาของหน้า
TenLeftFingers

5
-1: กำลังรอคำตอบนี้ให้เสร็จ (ตัวยึด“ <insert curl, grep oneliner ที่นี่>”) คำตอบไม่เป็นประโยชน์กับฉันอย่างอื่นเนื่องจากเซิร์ฟเวอร์ที่ฉันใช้อยู่svn://- เท่านั้น
Slipp D. Thompson

133

มารวมคำตอบเหล่านี้:

สำหรับ REPOSITORY / SERVER (คำถามเดิม):

หากสามารถเข้าถึงเซิร์ฟเวอร์การโค่นล้ม:

  • จากคำตอบก่อนหน้าโดยManuelให้เรียกใช้สิ่งต่อไปนี้บนเซิร์ฟเวอร์ SVN:

    svnadmin --version
    

หากการเข้าถึง HTTP / HTTPS:

  • ดูบรรทัด "powered by Subversion" เมื่อเข้าถึงเซิร์ฟเวอร์ผ่านเบราว์เซอร์

  • เข้าถึงที่เก็บข้อมูลผ่านเบราว์เซอร์แล้วมองหาสตริงรุ่นที่ฝังอยู่ในซอร์ส HTML จากคำตอบก่อนหน้านี้โดย elviejoและjaredjacobs ในทำนองเดียวกันจาก ?? ใช้เครื่องมือนักพัฒนาของเบราว์เซอร์ของคุณ (โดยปกติCtrl+ Shift+ I) เพื่ออ่านการตอบสนองอย่างสมบูรณ์ นี่เป็นวิธีที่ง่ายที่สุด (ไม่อัตโนมัติ) ในการจัดการกับใบรับรองและการอนุญาตเบราว์เซอร์ของคุณทำเพื่อคุณ

  • ตรวจสอบแท็กการตอบสนอง (สิ่งเหล่านี้จะไม่ปรากฏในแหล่งที่มา HTML) จากคำตอบก่อนหน้านี้โดยChristopher

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

ถ้าเข้าถึง svn: // หรือ ssh + svn

หากเซิร์ฟเวอร์ 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?

หากเซิร์ฟเวอร์ SVN อื่นที่กำหนดเอง

    TBD

โปรดแก้ไขให้เสร็จสิ้นคำตอบนี้

สำหรับลูกค้า (ไม่ใช่คำถามเดิม):

svn --version

คำตอบนี้ไม่ชัดเจนที่svnserve --versionต้องใช้บนเซิร์ฟเวอร์ ถ้ามันทำงานบนไคลเอนต์มันให้หมายเลขรุ่นของไคลเอนต์ไม่ใช่เซิร์ฟเวอร์
Craig McQueen

นี่คือชุดที่ดี ฉันทำโดย "อ่านการตอบสนองทั้งหมดจากการเข้าถึง http / https" ในกรณีของฉันฉันสามารถเห็นหนึ่งบรรทัดในส่วนหัวของการตอบสนอง: <เซิร์ฟเวอร์: "Apache / 2.2.14 (Unix) DAV / 2 SVN / 1.6.9 mod_ssl / 2.2.14 OpenSSL / 0.9.8a">
Tatera

ในกรณีที่มีผู้ใช้ Visual SVN Server สองสามบรรทัดแรกของแหล่งที่มา HTML (คลิกขวาดูแหล่งที่มาของหน้า) จะระบุรุ่น SVN
Raptor

คำตอบนี้จะถูกกล่าวถึงใน Meta
Glorfindel

70

บนเซิร์ฟเวอร์: svnserve --version

ในกรณีของ svnserve-based configuration (svn: // และ svn + xxx: //)

(เพื่อความสมบูรณ์)


ดังที่โจเจกล่าวถึงด้านล่างฉันเชื่อว่านี่จะเป็นเวอร์ชั่นของโปรแกรมไคลเอนต์ svnserve ซึ่งน่าจะตรงกับโปรแกรมไคลเอนต์ svn มากที่สุด
Kirby

12
svnserveไม่ใช่โปรแกรมไคลเอนต์ แต่เป็นเซิร์ฟเวอร์ และคุณต้องพิมพ์คำสั่งด้านบนเมื่อคุณอยู่บนเซิร์ฟเวอร์
Milen A. Radev

48

นี่คือวิธีที่ง่ายที่สุดในการรับรุ่นเซิร์ฟเวอร์ SVN HTTPทำงานแม้ว่าพื้นที่เก็บข้อมูล SVN ของคุณต้องใช้HTTPS

$ curl -X OPTIONS http: // my-svn-domain /
<! DOCTYPE HTML พับลิค "- // 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>

1
นี่คือสิ่งที่ฉันต้องการ โปรดโหวต!
bentford

8
ใช้งานได้เฉพาะเมื่อ "ServerTokens Full" ( httpd.apache.org/docs/2.2/mod/core.html#servertokens )
Milen A. Radev

24

สำหรับเซิร์ฟเวอร์ที่ใช้ HTTP มีสคริปต์ Python เพื่อค้นหารุ่นเซิร์ฟเวอร์ที่: http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/server-version.py

คุณสามารถรับเวอร์ชันไคลเอ็นต์ได้

`svn --version`

5
เว้นแต่ว่าฉันเข้าใจผิดดูเหมือนว่าสคริปต์นั้นจะทำงานกับเซิร์ฟเวอร์ที่ใช้ http หรือ https เท่านั้นและไม่ใช่เซิร์ฟเวอร์ svn หรือ ssh + svn
crashmstr

ถ้ามันใช้ ssh เพียง ssh ลงในกล่องและเรียกใช้ "svn --version"
John Meagher

5
'svn --version' บนเซิร์ฟเวอร์จะให้เฉพาะเวอร์ชันไคลเอนต์ที่รันบนเซิร์ฟเวอร์มันอาจไม่จำเป็นต้องเหมือนกับเวอร์ชั่นเซิร์ฟเวอร์
PiedPiper

1
สคริปต์นั้นยังต้องใช้ ServerTokens แบบเต็มเพื่อตั้งค่าบนเซิร์ฟเวอร์ Apache มันจะล้มเหลวสำหรับเซิร์ฟเวอร์เดียวกันกับที่โซลูชั่น curl จะล้มเหลว
yam655

24

หากเวอร์ชันเซิร์ฟเวอร์ Subversion ไม่ถูกพิมพ์ในรายการ HTML จะมีอยู่ในส่วนหัว HTTP RESPONSE ที่ส่งคืนโดยเซิร์ฟเวอร์ คุณสามารถรับมันโดยใช้คำสั่งเชลล์นี้

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

หากเซิร์ฟเวอร์ SVN ต้องการให้คุณระบุชื่อผู้ใช้และรหัสผ่านให้เพิ่มwgetพารามิเตอร์--userและ--passwordคำสั่งเช่นนี้

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

4
ฉันลองตัวเลือกอื่น ๆ ทั้งหมดในหน้านี้ด้วย curl และจาก URL และนี่ก็จนถึงตัวเลือกเดียวที่ใช้งานได้สำหรับฉัน - เซิร์ฟเวอร์คือ freebsd, เซิร์ฟเวอร์ 1.6.16
ideasman42

เช่นเดียวกันนี่เป็นคำตอบเดียวที่เหมาะกับฉันในคำตอบทั้งหมดที่นี่ ฉันใช้ Firefox Live HTTP Headers และอ่านการตอบสนองของเซิร์ฟเวอร์เพราะฉันยังมีปัญหาใบรับรอง SSL ที่ฉันไม่รู้สึกอยากจะรู้ปัญหา ขอขอบคุณคริสโตเฟอร์
เคอร์บี้

1
@Kirby ฉันได้เพิ่ม--no-check--certificateพารามิเตอร์ a --userและ--passwordเพื่อจัดการกับเซิร์ฟเวอร์ที่ต้องการข้อมูลประจำตัว แต่ไม่มีใบรับรอง ssh ที่ถูกต้อง นี่เป็นเรื่องธรรมดาที่คุณสังเกตเห็น
Christopher

1
@ คริสโตเฟอร์ควรอ่าน '' wget --password = 'รหัสผ่าน' .. | .. ; ' ข้างบน.
whaefelinger

@whaefelinger ขอบคุณสำหรับการแก้ไข ฉันได้อัพเดตคำตอบแล้ว
คริสโตเฟอร์

8

อีกตัวเลือกหนึ่ง: หากคุณมี Firefox (ฉันใช้ 14.0.1) และเว็บอินเตอร์เฟส SVN:

  • เปิดเครื่องมือ -> Web Developer-> Web Consoleบนหน้า repo
  • รีเฟรชหน้า
  • คลิกที่บรรทัดGET
  • ดูในส่วน Response Headersที่บรรทัดServer:

ควรมีสตริง "SVN / 1.7.4" หรือคล้ายกัน อีกครั้งนี่อาจใช้งานได้หากคุณมี "ServerTokens Full" ตามที่กล่าวไว้ข้างต้น


ขอบคุณ ฉันเพิ่งทำสิ่งที่คล้ายกันใน Chrome สำหรับเซิร์ฟเวอร์ VisualSVN โดยเปิดแท็บเครือข่ายในหน้าต่างเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ (กด F12 เพื่อเข้าถึงสิ่งนี้) จากนั้นตรวจสอบการตอบสนอง
XåpplI'-I0llwlg'I -

อัปเดต: คลิกที่แท็บเครือข่ายในบานหน้าต่างเครื่องมือก่อนรีเฟรชหน้า (ปัจจุบันคือ Firefox 30)
คอนราด

7

ไม่มีวิธีง่าย ๆในการค้นหาเวอร์ชันของการโค่นล้มเซิร์ฟเวอร์ของคุณกำลังทำงาน - ยกเว้นการเข้าสู่เซิร์ฟเวอร์และดูด้วยตัวคุณเอง

อย่างไรก็ตามนี่อาจไม่ใช่ปัญหาใหญ่อย่างที่คุณคิด ไคลเอนต์การโค่นล้มถูกจัดการ grunt งานมากและไคลเอนต์รุ่นโค่นล้มส่วนใหญ่สามารถทำงานกับเซิร์ฟเวอร์เกือบทุกรุ่น

รุ่นล่าสุดที่รุ่นเซิร์ฟเวอร์สร้างความแตกต่างให้กับลูกค้าจริงๆคือการเปลี่ยนแปลงจากรุ่น 1.4 เป็นรุ่น 1.5 เมื่อเพิ่มการติดตามการผสาน การติดตามการผสานได้รับการปรับปรุงอย่างมากในเวอร์ชัน 1.6 แต่ไม่ได้ส่งผลกระทบต่อการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์

มาทำการเปลี่ยนแปลงล่าสุดในการโค่นล้ม 1.8:

  • svn moveอยู่ในขณะนี้การดำเนินการชั้นแรก : การโค่นล้มในที่สุดก็เข้าใจsvn moveไม่ได้เป็นและsvn copy svn deleteอย่างไรก็ตามนี่เป็นสิ่งที่ไคลเอ็นต์จัดการและไม่มีผลกับเวอร์ชันเซิร์ฟเวอร์จริง ๆ
  • svn merge --reintegrateเลิกใช้แล้ว : อีกครั้งตราบใดที่เซิร์ฟเวอร์อยู่ในรุ่น 1.5 ขึ้นไปนี่ไม่ใช่ปัญหา
  • การสืบทอดของคุณสมบัติ : นี่เป็นการอัปเดต 1.8 ใหม่ แต่จะใช้งานได้กับเซิร์ฟเวอร์การโค่นล้มใด ๆ - แม้ว่าเซิร์ฟเวอร์การโค่นล้มที่เรียกใช้ 1.8 จะให้ประสิทธิภาพที่ดีขึ้นในคุณสมบัติที่สืบทอดได้
  • สองคุณสมบัติที่สืบทอดได้ใหม่ - svn:global-ignoresและsvn:auto-props : อนิจจา! สิ่งที่เราต้องการจริงๆ วิธีการตั้งค่าคุณสมบัติทั้งสองนี้โดยไม่ขึ้นอยู่กับไฟล์การกำหนดค่าการโค่นล้ม อย่างไรก็ตามนี่เป็นปัญหาของลูกค้าเท่านั้นดังนั้นจึงไม่สำคัญว่าคุณใช้เซิร์ฟเวอร์เวอร์ชันใด
  • การแคชหน่วยความจำ gnu-agent : คุณสมบัติอื่นสำหรับไคลเอ็นต์เท่านั้น
  • การปรับปรุงประสิทธิภาพ fsfs และการตรวจสอบสิทธิ์แบบอัตโนมัติในที่เก็บข้อมูล คุณสมบัติที่ดี แต่สิ่งเหล่านี้ทำงานได้ไม่ว่าลูกค้าของคุณจะใช้เวอร์ชันใด

คุณลักษณะทั้งหมดมีเพียงหนึ่งรุ่นเท่านั้นที่ขึ้นอยู่กับรุ่นของเซิร์ฟเวอร์ที่เป็น 1.5 หรือสูงกว่า (และ 1.4 ล้าสมัยไปแล้วในขณะที่คุณสมบัติใหม่ของ 1.8 จะปรับปรุงประสิทธิภาพการทำงานของสำเนาการทำงานของคุณ ไม่จำเป็นคุณได้รับผลกระทบจากเวอร์ชันไคลเอ็นต์ของคุณมากกว่ารุ่นเซิร์ฟเวอร์ของคุณ

ฉันรู้ว่านี่ไม่ใช่คำตอบที่คุณต้องการ (ไม่มีวิธีที่เป็นทางการในการดูเวอร์ชันเซิร์ฟเวอร์) แต่โชคดีที่เวอร์ชันเซิร์ฟเวอร์ไม่ได้ส่งผลกระทบต่อคุณมากนัก


7

ลองสิ่งนี้:

ssh your_user@your_server svnserve --version

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

ฉันหวังว่ามันจะช่วย


4

สำหรับการกำหนดค่า svn + ssh ให้ใช้ ssh เพื่อรัน svnserve --version บนเครื่องโฮสต์:

$ ssh user @ host svnserve --version

มีความจำเป็นต้องเรียกใช้คำสั่ง svnserve บนเครื่องที่ให้บริการเป็นเซิร์ฟเวอร์


1
นี่ถือว่าคุณสามารถ ssh ไปยังเซิร์ฟเวอร์ เป็นเรื่องปกติที่จะกำหนดค่าเซิร์ฟเวอร์ svn + ssh ด้วยพับลิกคีย์ในไฟล์ authorized_keys และ command = svnserve ซึ่งเริ่มต้น svnserver โดยอัตโนมัติโดยไม่มีตัวเลือก --version
jrwren

2

เพียงใช้เว็บเบราว์เซอร์เพื่อไปที่ที่อยู่ SVN ตรวจสอบซอร์สโค้ด ( Ctrl+ U) จากนั้นคุณจะพบสิ่งที่ต้องการในรหัส HTML:

<svn version="1.6. ..." ...

2

เรียกเก็บกับ Firefox และตรวจสอบองค์ประกอบด้วยFirebug ภายใต้แท็บ NET คุณสามารถตรวจสอบส่วนหัวของหน้า มันจะมีสิ่งที่ชอบ:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X

1
ลองสิ่งนี้กับเซิร์ฟเวอร์การโค่นล้มของฉันและไม่เห็นรุ่น ดูโพสต์อื่น ๆ ที่คล้ายกันดูเหมือนว่าเซิร์ฟเวอร์การโค่นล้มไม่สนับสนุนวิธีการระบุหมายเลขรุ่นของเซิร์ฟเวอร์นี้โดยเฉพาะ
Joshua

1

สำหรับการโค่นล้ม 1.7 ขึ้นไปเซิร์ฟเวอร์ไม่ได้ให้ส่วนท้ายที่ระบุรุ่นของเซิร์ฟเวอร์ แต่คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อรับรุ่นจากส่วนหัวการตอบสนอง

$ 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

โปรดทราบว่าวิธีนี้ใช้ได้กับเซิร์ฟเวอร์ Subversion ที่คุณไม่ได้รับอนุญาตให้เข้าถึง


1

คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์การโค่นล้มโดยใช้HTTPและค้นหาหมายเลขรุ่นในส่วนหัว HTTP


0

หากคุณใช้เซิร์ฟเวอร์ VisualSVN คุณสามารถค้นหาหมายเลขรุ่นได้ด้วยวิธีการต่าง ๆ

ใช้ตัวจัดการเซิร์ฟเวอร์ VisualSVN

ทำตามขั้นตอนเหล่านี้เพื่อค้นหาเวอร์ชันผ่านคอนโซลการจัดการ:

  1. เริ่มคอนโซลตัวจัดการเซิร์ฟเวอร์ VisualSVN
  2. ดูเวอร์ชั่นที่มุมล่างขวาของแดชบอร์ด

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณคลิกเวอร์ชั่นคุณจะเห็นส่วนประกอบของเวอร์ชันด้วย

ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบไฟล์ README.txt

ทำตามขั้นตอนเหล่านี้เพื่อค้นหาเวอร์ชันจากไฟล์ readme.txt:

  1. เริ่มต้นnotepad.exe
  2. เปิด% README.txt% VISUALSVN_SERVERไฟล์ บรรทัดแรกแสดงหมายเลขเวอร์ชัน

ป้อนคำอธิบายรูปภาพที่นี่


-1

บรรทัดคำสั่งต่อไปนี้ควรให้หมายเลขเวอร์ชั่นแก่คุณ

   svn --version

11
ซึ่งจะให้เฉพาะเวอร์ชันของไคลเอ็นต์ (เว้นแต่คุณจะเรียกใช้บนเซิร์ฟเวอร์) (และถึงตอนนั้นไคลเอนต์ svn ของเซิร์ฟเวอร์ไม่จำเป็นต้องเป็นเวอร์ชั่นเดียวกันกับเซิร์ฟเวอร์ svn แม้ว่าจะเป็นไปได้มากที่สุด)
cjm

12
-1 สิ่งนี้ให้เฉพาะหมายเลขไคลเอนต์การโค่นล้มซึ่งไม่เกี่ยวข้องกับหมายเลขเซิร์ฟเวอร์
Andrea Francia

2
สำหรับลูกค้า สำหรับเซิร์ฟเวอร์รุ่น svnserve --version
Rajesh

1
svn helpไม่เป็นประโยชน์เนื่องจากไม่ได้ระบุพารามิเตอร์ที่ขึ้นต้นด้วยสองขีดกลาง พบโพสต์ของคุณผ่าน google เมื่อมองหารุ่น svn ของฉัน
Bernhard Döbler

-1

ที่เก็บข้อมูลไม่ได้รับการอัปเดตโดยอัตโนมัติเว้นแต่ผู้ดูแลระบบเรียกใช้ 'svnadmin อัพเกรด' เพื่อให้แน่ใจว่าหมายเลขเวอร์ชั่นของที่เก็บตรวจสอบไฟล์ 'format' ดู@ คิดเห็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.