Как реализовать /svn -history/path, как Google Code Hosting?
Когда вы публикуете репозиторий Subversion через Apache Httpd, у вас есть бонусная функция: вы можете просматривать ревизию HEAD ваших источников с помощью любого HTTP-клиента.
Например, у нас есть этот репозиторий:
http://trash-cli.googlecode.com/svn/trunk/
С любым HTTP-клиентом (например, Firefox) вы можете просматривать файлы в редакции HEAD.
Svnbook очень хорошо объясняет, как это сделать.
Но хостинг Google Code предлагает дополнительную функцию: вы можете просматривать прошлые версии. Например, вы можете просмотреть версию r10:
http://trash-cli.googlecode.com/svn-history/r10/trunk/
Вы знаете, как Google это делает? Я хочу эту функцию и в моем репозитории моей компании!:)
Спасибо
Обновление 1
Следующее поведение может помочь нам решить проблему. Если я посещу путь, который не существует в репозитории, например
http://trash-cli.googlecode.com/svn-history/r10/non-existent
Я получил следующую ошибку 404:
Не найдено
Запрошенный URL /svn/! svn/bc/10/не существует найденных на этом сервере.
Я подозреваю, что в сценарии есть правило перезаписи URL.
Обновление 2
Обратите внимание, что это не то же самое, что этот вопрос. Я хочу показать эту службу в репозитории моей компании таким образом, который удобен для пользователя таким образом, что Google Code делает, мне неинтересно, как получить старую ревизию во внешнем репозитории, у которого нет этой функции. Я использую перспективу поставщика услуг, а не перспективу пользователя. Я хочу облегчить жизнь моим коллегам.
Ответы
Ответ 1
Из примечания о выпуске subversion 1.6:
Новый публичный 'исторический' синтаксис URI HTTP для mod_dav_svn
(сервер)
mod_dav_svn
теперь поддерживает новую публикацию Синтаксис URI для изучения версии файлов или каталогов. Цель состоит в том, чтобы позволить пользователям изучать историю без использования svn, а также упростить Сторонние инструменты (например, проверка кода услуг) для непосредственной работы хранилища без использования svn библиотеки.
http://host/repos/path?[p=PEG][&r=REV]
Ответ 2
Я считаю, что базовая установка (из команды SubVersion) не поставляется с этой функцией из коробки. Я считаю, что люди создали встроенные расширения или программы поверх или в сочетании с клиентом Subversion, чтобы получить эту функцию.
Если вы запустите репозиторий, вы, вероятно, можете установить WebSVN (http://websvn.tigris.org/), чтобы получить то, что вам нужно. Я уверен, что есть другие варианты.
Ответ 3
Добавьте к URL своего репозитория что-то вроде этого:
!svn/bc/<revision_number>/
например.
http://www.example.com/svnrepository/!svn/bc/3/
Дубликат: Как просмотреть старую версию репозитория Subversion через веб-представление?
Ответ 4
Я изучил документы Apache, и я думаю, что это можно было бы решить, используя это правило в httpd.conf.
RewriteRule ^/svn-history/r([0-9]+)/(.*) /svn/!svn/bc/$1/$2
Я еще не тестировал это. Я проверю его позже.