Как узнать номер версии моего сервера Subversion?

292

Я хочу знать, работает ли на моем сервере Subversion 1.5.

Как я могу это выяснить?

Также было бы неплохо узнать мой номер версии клиента SVN. svn helpне помогло

Примечание. Мне не нужен номер версии моего проекта и т. Д. Этот вопрос касается самого программного обеспечения Subversion .

Питер Мортенсен
источник

Ответы:

210

Чтобы найти версию хранилища Subversion вы можете:

  1. Посмотрите на хранилище в Интернете и в нижней части страницы будет написано что-то вроде:
    «Powered by Subversion версия 1.5.2 (r32768)».
  2. Из командной строки: <вставить curl, grep oneliner здесь>

Если не отображается, просмотрите источник страницы

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

Теперь для подрывной деятельности КЛИЕНТА:

svn --version

будет достаточно

Сообщество
источник
31
Это работает, только если сервер отображает эту информацию, а некоторые серверы, такие как хостинг кода Google, - нет.
Андреа Франсия
3
Это версия сервера или версия репозитория? (они могут быть разными AFAIK)
GraemeF
7
Вы также можете посмотреть на заголовки ответа (например, с помощью firebug / net view) и найти там версию SVN
haknick
6
CollabNet также не отображает номер версии - ни визуально, ни в источнике страницы.
TenLeftFingers
5
-1: Ожидание завершения этого ответа (заполнитель «<insert curl, grep oneliner here>».) В противном случае ответ мне не пригодился, поскольку используемый мной сервер - только svn://.
Слипп Д. Томпсон
133

Давайте объединим эти ответы:

Для хранилища / сервера (оригинальный вопрос):

Если вы можете получить доступ к серверу Subversion:

  • С раннего ответа по Мануила , выполните следующую команду на сервере 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должно быть использовано на сервере. Если он запускается на клиенте, он дает номер версии клиента, а не сервера.
Крейг МакКуин,
Это хорошая коллекция. Я сделал это путем «прочитать полный ответ от доступа 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 .
Глорфиндель
70

На сервере: svnserve --version

в случае конфигурации на основе svnserve (svn: // и svn + xxx: //).

(Для полноты).

Милен А. Радев
источник
Как Джо Дж упоминает ниже, я считаю, что это просто даст вам версию клиентской программы svnserve, которая, скорее всего, будет соответствовать клиентской программе svn
Кирби
12
svnserveэто не клиентская программа, это сервер. И вы должны ввести команду выше, когда вы находитесь на сервере.
Милен А. Радев
48

Вот самый простой способ получить версию сервера SVN. HTTP работает, даже если ваш SVN-репозиторий требует HTTPS .

ОПЦИИ $ curl -X http: // my-svn-domain /
<! DOCTYPE HTML PUBLIC "- // IETF // DTD HTML 2.0 // EN">
<HTML> <HEAD> ... </ HEAD>
<Тело> ...
<адрес> Apache / 2.2.11 (Debian) DAV / 2 SVN / 1.5.6 PHP / 5.2.9-4 ... </ address>
</ body> 
</ html>
jaredjacobs
источник
1
Это то, что мне было нужно. Оцените, пожалуйста!
Бентфорд
8
Работает только при «ServerTokens Full» ( httpd.apache.org/docs/2.2/mod/core.html#servertokens ).
Милен А. Радев
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".
Джон Мигер
5
'svn --version' на сервере дает вам только версию клиента, работающую на сервере, она может не совпадать с версией сервера
PiedPiper
1
Этот сценарий также требует, чтобы ServerTokens Full был установлен на сервере 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. Это довольно часто, как вы заметили.
Кристофер
1
@ Кристофер должен читать '' wget --password = 'пароль' .. | ..; ' выше.
whaefelinger
@whaefelinger спасибо за исправление. Я обновил ответ.
Кристофер
8

Еще один вариант: если у вас Firefox (я использую 14.0.1) и веб-интерфейс SVN:

  • Откройте Инструменты-> Веб-разработчик-> Веб-консоль на странице репо
  • Обновить страницу
  • Нажмите на строку GET
  • Посмотрите в разделе Заголовки ответа в строке Server:

Там должна быть строка "SVN / 1.7.4" или аналогичная. Опять же, это, вероятно, будет работать только при наличии «ServerTokens Full», как указано выше.

Conrad
источник
Спасибо. Я только что сделал подобное в Chrome для сервера VisualSVN, открыв вкладку «Сеть» в окне «Инструменты разработчика» (нажмите F12, чтобы получить доступ к этому), а затем проверил ответ.
XåpplI'-I0llwlg'I -
Обновление: щелкните вкладку «Сеть» на панели «Инструменты» перед обновлением страницы (в настоящее время Firefox 30)
Конрад,
7

Там действительно не легко способа узнать, какая версия Subversion работает на вашем сервере, кроме как выйти на сервер и убедиться в этом.

Однако это может быть не такой большой проблемой, как вы думаете. Клиенты Subversion - это большая часть основной работы, и большинство версий клиентов Subversion могут работать практически с любой версией сервера.

Последним выпуском, где версия сервера действительно имела значение для клиента, было изменение с версии 1.4 на версию 1.5, когда было добавлено отслеживание слияния. Отслеживание слияний было значительно улучшено в версии 1.6, но это не влияет на взаимодействие между клиентом и сервером.

Давайте рассмотрим последние изменения в Subversion 1.8:

  • svn moveтеперь операция первого класса : Subversion наконец понимает, что svn moveэто не a svn copyи svn delete. Тем не менее, это то, что клиент обрабатывает и не влияет на версию сервера.
  • svn merge --reintegrateустарело : опять же, если сервер версии 1.5 или выше, это не проблема.
  • Наследование имущества : это еще одно обновление версии 1.8, но оно будет работать с любым сервером Subversion - хотя серверы Subversion с версией 1.8 будут обеспечивать более высокую производительность для наследуемых свойств.
  • Два новых наследуемых свойства - svn:global-ignoresиsvn:auto-props : увы! Что мы действительно хотели. Способ настроить эти два свойства независимо от самого файла конфигурации Subversion. Однако это проблема только клиента, поэтому опять-таки не имеет значения, какую версию сервера вы используете.
  • Кэширование памяти gnu-agent : еще одна функция только для клиентов.
  • Улучшения производительности fsfs и аутентификация в репозитории authz. Приятные функции, но они работают независимо от того, какую версию клиента вы используете.

Из всех функций только одна зависит от версии сервера 1.5 или выше (а 1.4 давно устарела. Новые функции 1.8 улучшат производительность вашей рабочей копии, но сервер версии 1.8 не работает. не нужно. Вы гораздо больше подвержены влиянию версии клиента, чем версии сервера.

Я знаю, что это не тот ответ, который вы хотели (нет официального способа узнать версию сервера), но, к счастью, версия сервера не сильно повлияла на вас.

Дэвид В.
источник
7

Попробуй это:

ssh your_user@your_server svnserve --version

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

Я надеюсь, что это помогает.

ejaenv
источник
4

Для конфигурации svn + ssh используйте ssh для запуска svnserve --version на хост-компьютере:

$ ssh user @ host svnserve --version

Необходимо выполнить команду svnserve на компьютере, который фактически служит сервером.

Гленн
источник
1
это предполагает, что вы можете SSH к серверу. Обычно сервер svn + ssh настраивается с открытым ключом в файле author_keys и command = svnserve, который автоматически запускает svnserver без опции --version.
Jrwren
2

Просто используйте веб-браузер, чтобы перейти на адрес SVN. Проверьте исходный код ( Ctrl+ U). Тогда вы найдете что-то вроде в коде HTML:

<svn version="1.6. ..." ...
n0thing
источник
2

Просмотрите хранилище с Firefox и осмотрите элемент с помощью Firebug . На вкладке NET вы можете проверить заголовок страницы. Это будет что-то вроде:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X
Джейсон Х
источник
1
Попробовал это на моем сервере Subversion и не вижу версию. Глядя на другие похожие посты, кажется, что не все серверы Subversion поддерживают этот конкретный способ определения номера версии сервера.
Джошуа
1

Для Subversion 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, где у вас нет прав доступа.

mettkea
источник
1

Вы можете подключиться к вашему серверу Subversion с помощью HTTP и найти номер версии в заголовке HTTP.

eaubin
источник
0

Если вы используете VisualSVN Server, вы можете узнать номер версии несколькими различными способами.

Используйте Диспетчер серверов VisualSVN

Выполните следующие действия, чтобы узнать версию через консоль управления:

  1. Запустите диспетчер серверов VisualSVN консоль .
  2. Смотрите версию в правом нижнем углу приборной панели.

введите описание изображения здесь

Если вы нажмете « Версия», вы также увидите версии компонентов.

введите описание изображения здесь

Проверьте файл README.txt

Выполните следующие действия, чтобы узнать версию из файла readme.txt:

  1. Запустите notepad.exe .
  2. Откройте файл % VISUALSVN_SERVER% README.txt . Первая строка показывает номер версии.

введите описание изображения здесь

bahrep
источник
-1

Следующее в командной строке должно дать вам номер версии

   svn --version
Пол Уикс
источник
11
Это только дает вам версию клиента (если вы не запускаете ее на сервере). (И даже в этом случае svn-клиент сервера не обязательно совпадает с версией svn-сервера, хотя, скорее всего, так и есть.)
cjm
12
-1 Это дает только номер клиента Subversion, который не связан с номером сервера.
Андреа Франсия
2
это для клиента. Для серверной версии svnserve --version
Раджеш
1
svn helpне помогло, так как не перечисляло параметры, начинающиеся с двух тире. Нашел свой пост через гугл при поиске моей svn версии.
Бернхард Доблер
-1

Репозиторий не обновляется автоматически, если администратор не запускает обновление svnadmin. Чтобы быть уверенным в номере версии репозитория, проверьте файл 'format'. Смотрите комментарий @ bdumitriu .

icasimpan
источник