Pull to refresh

Ревью кода в mercurial

Reading time3 min
Views4.6K

hg review — полезная плюшка для mercurial'а


У git'а есть GitHub, а у Mercurial'а есть hg review. На самом деле я сравнил козу с бояном.
image
Ревью кода.

Если вы занимались поиском открытой, свободной, быстрой, маленькой, удобной и красивой системой, для проведения ревью кода, то скорее всего вы потерпели неудачу. Из существующих проектов, я смотрел ReviewBoard, но, как и все созданное крутыми компаниями, оно сложно в установке, настройке и подразумевает не совсем привычный нам сценарий поведения.

И вот появился проект, который дает нам инструмент, а как его использовать — решать нам.
Итого:
  • Post-commit review
  • Распределенная архитектура
  • Web интерфейс
  • Приятный (!) внешний вид.

image

Установка.

Установка происходит так, как всех других не встроенных расширений для mercurial:

> cd some_cool_place
> hg clone bitbucket.org/sjl/hg-review


Дописываем в наш ~/.hgrc:

[extensions]
review = [path to]/hg-review/review/

Готово.

image

Настраиваем.

Для начала скажу, что работает hg review следующим образом:
Мы должны создать некий общедоступный репозиторий, куда смогут ложить/брать код все разработчики.
Далее, мы активируем для нашего основного репозитория, поддержку ревью кода и при этом указываем наш общедоступный репозиторий для хранения всех ревью.
При работе, hg review, будет брать код для ревью с нашего основного репозиторя для разработки, а все коментарии будет ложить в репозирий для ревью.
Почему это сделано таким образом? Потому что это позволин не засорять наш основной репозиторий лишними, не нужными коммитами. Ведь при своей работе он будет генерировать определенный набор файлив и в принципе каждый коментарий мог бы вызвать коммит.
Вместо этого, при инициализации в вашем репо создастся файл .hgreview, с одной единственной строкой: указанием на репозиторий для хранения ревью. Плюс, в вашем локальном репозитории, в .hg/ будет создана директория review, которая и дудет рабочей копией этого удаленного репозиторя для ревью.
Т.е для обеспечения всей работоспособности, наш основной репо пострадает всего один раз, когда будет коммит с созданием .hgreview
Этот файл необходим для того, что бы другие разработчики не заморачивались с поддержной hg review.

image

Переходим в некий существующий репозиторий, где мы хотим делать ревью кода.
> hg review --init --remote-path [url-of-remote-public-review-repo]
Готово.
Остальным разработчикам, будет достаочно один раз выполнить:
> hg review --init
Эта команда, основываясь на информации из .hgreview создаст скрытый репозиторий и подготовит все, для работы.
Теперь для пользования системой мы будем запускать
> hg review --web
когда нам необходимо. Все нужные для функционирования системы действия можно выполнить из webинтерфейса. Добавляем коментарии, жмем «push to default» и наши коментарии попадут в общедоступный репозиторяй для ревью. Соответственно, для того, что бы забрать новые коментарии, делаем «pull from default».

Используем.

Итак, основные возможности которые нам предоставляет hg review:
  • Коментарии для changeset'ов
  • Подписи (да/нет/нейтрально) для changeset'ов
  • Самое интересное: коментарии для строчек кода из changeset'а.


Имея данные возможности, организация конкретного workflow, уже наших рук дело.
Мы можем коментировать чужой код, читать коментарии для нашего кода, синхронизировать эти изменения, с помошью web интерфейса.

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

image

Недостатки (надеюсь временные).

Пока нашли несколько недостатков, среди которых:
  • Относительно медленная работа. Для свое работы используются только просты средства (текстовые файлы, которые лучше всего поддерживаются VCS) и средства самого меркуриала, как то commit, push, pull, что очень идейно и правильно. Просто будем надеяться, что пути увеличения отзывчивости есть. Но это все не критично для раты. Я гарантирую это!
  • Можно редактировать коментарии, оставленные другим пользователем. Средст авторизации нет, так как идентификация пользователей идет на основе username из файла настроек mercurial'а. Кроме того, для совсем не хороших, предупреждение: так как mercurial придерживается принципа неизменяемости истории, удалить упоминание о редактировании коментария — не возможно. его можно отследить, если поглядеть hg log в репозитории для ревью.


Возможно поможет.

  • Если у вас не будет показываться diff изменений changeset'а, проверьте, что б у вас не был установлен diff = git в .hgrc

image
Ссылки.

Демо: review.stevelosh.com
Репозиторий: bitbucket.org/sjl/hg-review/src
Документация: sjl.bitbucket.org/hg-review
Tags:
Hubs:
+45
Comments21

Articles

Change theme settings