Как реализовать путь / svn-history /, как это делает Google Code Hosting? - PullRequest
9 голосов
/ 26 марта 2009

Когда вы публикуете хранилище Subversion через Apache Httpd, вы получаете бонусную функцию: вы можете просматривать ревизию HEAD ваших источников с помощью любого HTTP-клиента.

Например, у нас есть этот репозиторий:

http://trash-cli.googlecode.com/svn/trunk/

С любым HTTP-клиентом (например, Firefox) вы можете просматривать файлы в версии HEAD. Svnbook очень хорошо объясняет, как это сделать.

Но Google Code Hosting предлагает дополнительную функцию: вы также можете просмотреть прошлые версии. Например, вы можете просмотреть ревизию 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. Меня не интересует, как получить старую ревизию во внешнем репозитории, у которого нет этой функции. Я использую точку зрения поставщика услуг, а не точку зрения пользователя. Я хочу облегчить жизнь своим коллегам.

Ответы [ 4 ]

13 голосов
/ 27 марта 2009

Из примечаний к выпуску Subversion 1.6 :

Новый публичный «исторический» синтаксис HTTP URI для mod_dav_svn (сервер)

mod_dav_svn теперь поддерживает новую общедоступную Синтаксис URI для изучения старых версии файлов или каталогов. намерение здесь состоит в том, чтобы позволить пользователям изучить историю без использования SVN клиент, и сделать его проще для Инструменты сторонних производителей (например, обзор кода) услуги) работать напрямую против репозитории без использования SVN библиотеки.

http://host/repos/path?[p=PEG][&r=REV]

0 голосов
/ 26 марта 2009

Добавьте что-то подобное к URL вашего хранилища:

!svn/bc/<revision_number>/

Е.Г.

http://www.example.com/svnrepository/!svn/bc/3/

Дубликат: Как просмотреть старую версию репозитория Subversion в веб-представлении?

0 голосов
/ 26 марта 2009

Я изучил документы Apache и думаю, что это можно решить с помощью этого правила в httpd.conf.

RewriteRule ^/svn-history/r([0-9]+)/(.*) /svn/!svn/bc/$1/$2

Я еще не проверял это. Я проверю это позже.

0 голосов
/ 26 марта 2009

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

Если вы запустите репозиторий, вы, вероятно, сможете установить WebSVN (http://websvn.tigris.org/), чтобы получить то, что вам нужно. Я уверен, что есть и другие варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...