Персональные инструменты
 

ViewVC

Материал из CustisWiki

Перейти к: навигация, поиск

ViewVC — система онлайн-просмотра репозиториев систем версионного контроля CVS и Subversion. Ранее называлась ViewCVS.

Основные возможности

Просмотр:

  • Листингов директорий (ls) (в том числе по предыдущим версиям)
  • Журналов ревизий с комментариями, списков изменённых файлов (log)
  • Различий между версиями, в том числе в формате патча (diff)
  • Содержимого файлов
    • С подсветкой синтаксиса многих языков программирования, в том числе нашего PL/SQL препроцессируемого m4 (*.sp4)
  • Аннотаций, поиск виновного (blame/annotate)

Поиск изменений:

Поддержка:

  • Прав Subversion.
  • (Wiki4intranet-logo.svg) Прав CVSnt.
  • (Wiki4intranet-logo.svg) Корректных проверок прав в результатах поиска.
  • (Wiki4intranet-logo.svg) Мелкие доработки и исправления багов, полный список здесь.

Листинги директорий

Заходя на главную страницу ViewVC, можно увидеть список CVS- и Subversion-репозиториев, а также ссылку «Query revision history» вверху страницы. Далее можно выбрать репозиторий — вы увидите список файлов и каталогов/модулей (cvs), находящихся в нём. Аналогично, кликнув на каталог, вы увидите листинг файлов и подкаталогов в нём.

Журналы ревизий

К журналу ревизий можно перейти, выбирая файл из списка (по умолчанию открывается журнал ревизий), кликая в списке на номер ревизии рядом с каталогом, или переходя по ссылке «(modified)» в списке изменений, просматриваемом по номеру ревизии.

Различия между версиями

Diff’ы отображаются с подсветкой удалённых/добавленных/изменённых строк и некоторым количеством строк контекста. Можно просматривать различия только по отдельным файлам; удобнее всего делать это со страницы журнала ревизий — нажимая на ссылки «Diff to previous XXX» или выбирая две версии (числовых, а в случае с CVS — и именованных) и желаемый формат различий внизу страницы. А со страницы с самими различиями можно скачать патч, нажав на ссылку «Patch».

Списки изменений по ревизиям

В Subversion (не CVS) каждая фиксация изменений атомарна, а в репозиториях хранятся данные для сопоставления номера ревизии репозитория и всех изменений, в ней произошедших. Кликнув по номеру ревизии на странице журнала изменений файла, или по номеру ревизии вверху страницы со списком файлов в каталоге Subversion, вы попадаете на страницу с информацией об изменениях, произошедших в данной ревизии.

Построчное аннотирование

Аннотирование (поиск виновного): файл разбивается на строки, и напротив каждой строки выводится информация о том, кто последний её менял. Чтобы перейти на страницу с аннотацией, нужно кликнуть на ссылку annotate на странице с журналом ревизий.

Поиск изменений

На страницу поиска коммитов (изменений) можно попасть по ссылкам «Query revision history» в листингах каталогов. На странице поиска можно выбрать:

  • (Wiki4intranet-logo.svg) Текст для поиска по содержимому версионированных файлов. При поиске учитывается русская и английская морфология, поиск ведётся во всю глубину истории.
  • (Wiki4intranet-logo.svg) Репозиторий, тип репозитория.
  • Поддиректорию, путь к конкретному файлу.
  • Логин автора.
  • (Wiki4intranet-logo.svg) Номер ревизии.
  • Интервал дат.
  • Текст комментария для поиска.

Большинство параметров может содержать как точное значение, так и регулярное выражение для выбора нескольких вариантов.

Нужно отметить несколько нетривиальное поведение поля «поддиректория» при переходе на форму поиска также из некоторой поддиректории репозитория — при этом поле «поддиректория» становится относительным по отношению к поддиректории, из которой был сделан переход.

Форма поиска используется для интеграции с Bugzilla — в Bugzilla можно увидеть ссылки «Look for bug in CVS&SVN», ведущие на результаты поиска изменений с номером бага или словом «bugXXXX» в тексте.

Поиск по содержимому

(Wiki4intranet-logo.svg) Долгое время для поиска по содержимому у нас пытался жить SVNSearcher (если это можно назвать жизнью). Но — не прижился. Ибо очень медленный, очень некачественный, и генерирует очень большие индексы. В тормозах его виноват, правда, не Lucene (который вполне быстрый), а качество реализации.

А теперь наша сборка ViewVC, с помощью прикрученных к ней Tika и Sphinx’а, умеет отлично искать по содержимому Subversion.

Viewvc-logo.png + Tika.png + Sphinx.jpg

Tika — это java-библиотека для вытаскивания текста из бинарных документов. Собственно, самое вкусное, что было в составе SVNSearcher’а. Чтобы работала быстро, её можно запускать в режиме TCP-сервера.

Sphinx — в качестве движка поиска. Его realtime индексы, из которых по факту ничего нельзя удалить, а можно только добавить, идеально подходят для индексации содержимого системы контроля версий.

Для использования поиска нужно нажать Query revision history, ввести в поле «Search content» нужный текст, выбрать желаемые даты (по умолчанию поиск только за последнюю неделю), и нажать Search.

ViewVC-ContentSearch.png

RSS-ленты изменений

Кликнув на привычный значок RSS Rss14.png на странице, можно получать результаты любых поисков в формате RSS. В том числе, можно подписываться на изменения по отдельным репозиториям, каталогам, файлам — нужно просто кликнуть по значку RSS.

Патчи из выбранных изменений

(Wiki4intranet-logo.svg) ViewVC может генерировать патчи из результатов поиска изменений (ревизий). Для генерации патча перейдите по ссылке «Show a patch built from these changes», показываемой вверху страницы результатов поиска. Помните, что если результаты поиска включают в себя изменения одних и тех же файлов, сильно разнесённые во времени, патч будет включать также и все изменения, сделанные в том же файле между найденными. ViewVC старается отслеживать такие ситуации и выводить предупреждение о них в следующей форме: CAUTION: selected changes are not contiguous, patch may include differences from other commits.

Списки merge для отмены изменений

Ещё одна нетривиальная возможность страницы результатов — ссылка «Show commands which could be used to back out these changes». Перейдя по ней, вы увидите список команд merge, которые нужно выполнить в рабочей копии репозитория, чтобы попытаться отменить все изменения, выведенные на странице результатов поиска.

Ссылки



Внимание! Эта статья была создана путем автоматического реплицирования из внутренней базы знаний компании Заказные Информ Системы. Любые правки этой статьи могут быть перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».


Статья реплицируется в Wiki4IntraNet.