Project

General

Profile

Использование инструмента ReviewBoard

Настройка Mercurial для работы с RBTools

Описание наборов изменений

RBTools подразумевает, что вы используете формат Mercurial для составления набора изменений (diff). Проверьте, что у вас не используется формат Git, т.е. отсутствуют следующие строчки в .hgrc:

[diff]
git=1

Обеспечение доступа к репозиторию без ввода пароля

RBTools подразумевает, что для выполнения операций с репозиторием ему не надо будет вводить имя пользователя и пароль.

Рекомендуется всегда указывать имя пользователя в копии репозитория, с которой вы взаимодействуете. Т.е. в конфигурационном файле Mercurial для текущего репозитория путь должен иметь форму:

[paths]
default = https://user@yar.fruct.org/repos/hg/repository

Вместо user у вас должно находиться имя пользователя.

Решить эту задачу сохранения пароля можно двумя способами:

  • Указать пароль в конфигурационном файле.
  • Использовать расширение Mercurial Keyring.

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

Внимание: Расширение Mercurial Keyring может работать нестабильно. Если с его помощью не получается организовать хранение пароля, тогда следует использовать вариант с хранением пароля в конфигурационном файле.

Настройка расширения Mercurial Keyring

Настройка расширения описана в официальной документации: http://mercurial.selenic.com/wiki/KeyringExtension.
Краткие шаги по установке данного окружения в Debian Stretch:

sudo apt-get install mercurial-keyring

Затем необходимо добавить расширение mercurial_keyring в конфигурацию Mercurial.
Удостоверьтесь, что в списке расширений присутствует соответствующая запись:

[extensions]
mercurial_keyring =

После выполнения данных операций необходимо несколько раз выполнить взаимодействие с целевым репозиторием, чтобы расширение смогло сохранить пароль в хранилище. При первом взаимодействии (выполнении pull или push) с вас спроят пароль. При следующих взаимодействиях с этим репозиторием пароль уже должен браться из хранилища.

Если вас всё-равно просят ввести пароль, то расширение не работает корректно.
Если после выполнения команды пароль не спрашивается, но результат вызова hg возвращает ненулевое значение, то расширение работает некорректно.
Если приложение установлено некорректно, то необходимо самостоятельно разобраться в причинах данной проблемы и устранить её, либо использовать альтернативный подход.

Хранение пароля для доступа к репозиторию в конфигурационном файле

Необходимо понимать, что в данном случае любой человек, имеющий доступ к файловой системе, может прочитать конфигурационный файл и узнать из него пароль от вашей учётной записи.
Добавьте следующую секцию в ваш конфигурационный файл Mercurial:

[auth]
yarfruct.prefix = yar.fruct.org/repos
yarfruct.user = USER
yarfruct.password = PASSWORD
yarfruct.schemes = https

Вместо USER и PASSWORD необходимо указать ваши имя пользователя и пароль, которые используются для доступа к репозиторию.

Установка и настройка RBTools

Отправка изменений на Review

Предположим, что вы сделали 4 набора изменений 168 169 170 171 для решения задачи 15235 в трекере. Для того, чтобы отправить их на сервер ReviewBoard необходимо выполнить следующие действия:

hg push
rbt post --bugs-closed 15235 -o 167 171

Обратите внимание , что в качестве базовой необходимо указать номер ревизии, относительно которой был сделан первый комит из серии. В текущем случае в качестве первой ревизии следует указать 167.

Отправка изменений на ReviewBoard

Схема отправки

ReviewBoard <- Автор : Запрос на рецензию
ReviewBoard -> Рецензент : Чтение
ReviewBoard <- Рецензент : Задача на рецензирование
alt without plugin
  ReviewBoard -> Автор : Чтение задачи
  Redmine <- Автор : Создание задачи
else with plugin
  ReviewBoard -[#green]-> Redmine : Создание задачи
end

ReviewBoard <- Автор : Закрытие запроса

  1. Автор создаёт отправляет запрос на ревью кода в систему ReviewBoard.
  2. Рецензент просматривает данный запрос и оставляет комментарии к нему на ReviewBoard.
  3. Автор запроса просматривает комментарии и создает в соответствии с ними задачи в Redmine (В будущем планируется создание плагина для ReviewBoard, который будет автоматически создавать задачи в Redmine для каждого комментария).
  4. После создания задач в Redmine по комментариям к запросу на ревью и исправлению этих задач автор запроса на ревью закрывает созданный им запрос.

Некоторые дополнительные правила работы с ReviewBoard

  • Если рецензенты считают качество кода в запросе допустимым, то они выставляют данному запросу Ship it!
  • Если все рецензенты поставили запросу Ship it!, то закрывать запрос имеют право только мега-менеджеры (И.В. Парамонов и А.М. Васильев) после просмотра данного запроса.