Лучший способ отследить и провести рецензирование перед фиксацией
Мне было интересно, какой механизм люди использовали для обеспечения и отслеживания экспертных оценок для принятия в SVN.
Для каждого коммита я хочу иметь возможность отслеживать, были ли у людей рецензии (я не уверен, является ли хорошей идеей соблюдение правила, при котором они не могут коммитить, я чувствую, что его не следует применять так, как есть). вероятно, веская причина для коммитов без экспертной оценки), но непроверенные коммиты должны быть в состоянии отследить, чтобы перед выпуском мы могли просмотреть все эти коммиты.
5 ответов
Вы можете потребовать, чтобы каждый разработчик добавил тег комментирующего разработчика в коммит в фиксированном формате, например [REV:XYZ]. Это позволяет фильтровать историю. Как было упомянуто здесь, вы можете использовать ловушки pre-commit вашего инструмента управления версиями исходного кода, чтобы принудительно применить это, если вам нужно.
Тогда правило о том, что ни один код не может быть зафиксирован без экспертной оценки, должно быть передано всем разработчикам. Также покажите преимущества просмотра кода перед фиксацией. Первые несколько месяцев кто-то должен проверять историю коммитов на коммиты без тега рецензента. Если они найдут, спросите разработчиков, почему, если они сделали обзор и с кем. Когда не было обзора, напомните им о правиле. Если некоторые разработчики сознательно нарушают это правило несколько раз, это может привести к последствиям, но давление со стороны сверстников обычно препятствует этому.
Как правило, нет никаких оправданий для того, чтобы не делать обзор, когда действует это правило. В частности, "Но мне пришлось быстро исправить эту ошибку, чтобы доставить заказчику исправленную версию", не может быть оправданием, потому что разработчик с большей вероятностью совершит ошибки в спешке.
Этот вопрос звучит как реклама для распределенной VCS, такой как git или bzr: разработчикам необходимо иметь возможность часто вносить изменения, но только в свою собственную ветку, которая затем проверяется перед тем, как загружаться в центральный репозиторий.
Разработчики могут создавать ветки для каждого изменения (не для каждого коммита). Они могут совершать столько раз, сколько захотят в этой ветке. Однако, прежде чем изменения будут объединены в магистраль, вы можете провести рецензирование. Таким образом, ваш ствол будет содержать только проверенный код.
Вы можете сделать это с помощью разрешений, так что только избранные люди могут фиксировать транк, и они могут проверить код в порядке, прежде чем сделать это.
Некоторое время я использую контроль версий и думаю, что работать в модели ветвей (а не в магистрали) хорошо. Системы DVCS, такие как git, делают этот шаг вперед и, похоже, хорошо работают для многих людей.
Лично я часто могу посвятить себя почти 50 раз в день, так что мне бы не понравилось;)
Я знаю, что плагин Atlasian Greenhopper для jira может быть запущен как ловушка перед фиксацией, чтобы требовать ссылку jira в коммите. Если вы используете greenhopper для планирования задач разработки, вы можете принудительно установить, что все коммиты должны быть связаны с проблемой jira.
И даже если вы не используете greeenhopper, вы, вероятно, могли бы создать ловушку перед фиксацией, которая заставляет коммит комментировать, содержащий некоторый ссылочный номер отслеживания проблемы.
Это должно, вероятно, позволить вам собрать собранный набор изменений, связанный с проблемой jira, что звучит для меня как лучшая идея.
Один из способов сделать это - использовать правило коммитов в вашей команде. То есть разработчики не имеют права коммитовать свой собственный код, они должны убедить кого-то еще коммитить свой код от их имени.
Я работал над такими проектами раньше, и он работает довольно хорошо. Недостатком является то, что с Subversion это означает, что имя рецензента, а не имя разработчика, отображается в журнале. С помощью git вы можете сохранить имя разработчика, а рецензент добавляет строку "Подписано".