Статьи

Искусство Git / Gerrit Commit в Eclipse

С принятием Git и Gerrit и внедрением новых лицензионных соглашений для участников (CLA) в рамках наших усилий по социальному кодированию участие в проектах Eclipse стало еще проще. Хотя это проще , но все же есть важные требования, которые необходимо соблюдать.

Мы реализовали некоторые расширения для Git и Gerrit, которые проверяют, чтобы убедиться, что записи коммитов структурированы как требуется, и отклоняют те коммиты, которые искажены.

Ниже приведен пример хорошей записи коммита:

commit 862e6ff22ad56c10df6de3385ffa4c7d02363d1d
Author: Joe Somebody <somebody@someplace.net>
Date:   Mon Jun 17 17:19:38 2013 -0700

    [410937] Auto share multiple projects in single job
    
    When multiple projects are imported together, perform all the necessary
    auto shares in a single job rather than spawning a separate job for each
    project.
    
    Signed-off-by: Joe Somebody <somebody@someplace.net>‌
    Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=410937
    Also-by: Some Otherperson <otherperson@someplace.net>

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

Для вкладов не-коммиттеров поле «Автор» в коммите должно содержать тот же адрес электронной почты, который использовался для подписи CLA. Это чувствительно к регистру. Тот же адрес электронной почты (также с учетом регистра) должен использоваться в поле «Подписано» в нижнем колонтитуле сообщения.

Местоположение Подписавшегося — важно. Он должен появиться в нижнем колонтитуле сообщения. Нижний колонтитул является последним блоком непрерывных строк текста в комментарии (см. Ошибка 412140 ). Не может быть никаких пустых строк между строкой, содержащей поле «Подписано», и концом комментария.

Существует развивающееся соглашение (не обязательное) для включения поля «Ошибка» в нижний колонтитул со ссылкой на отчет об ошибке, который соответствует фиксации (если есть). Существует еще одно соглашение о включении идентификатора ошибки в квадратные скобки в первой строке сообщения фиксации. Проекты могут решить, по какому соглашению они будут следовать; выбор одного (или обоих) из них облегчит возможную автоматизацию (например, генератор IP-журнала создаст гиперссылку).

Я рекомендую вам включить поля «Также», если коммит содержит код, созданный несколькими пользователями. Основной автор должен перейти в поле «Автор», а каждый дополнительный автор должен получить собственную запись «Также». Если не ясно, кто является основным автором, то я рекомендую энергичную игру Rock / Paper / Sissors / Lizard / Spock, чтобы разобраться в этом. В настоящее время мы ничего не делаем с полями «Кроме того», но я намерен расширить генератор журнала IP, чтобы учесть эти значения.

Плагин Gerrit и хук Git будут отклонять любые коммиты, которые не были правильно сформированы, и предоставят объяснение на консоли, как показано ниже:

The contributor must "sign-off" on the contribution.
Processing changes: refs: 1
Processing changes: refs: 1, done    
----------
Reviewing commit: commit 8a557cb70698e70de77df056b022f197700d1761 1366109485 ----sp
Authored by: Joe Somebody <somebody@someplace.net>

The author is not a committer on the project.
The author has a current Contributor License Agreement (CLA) on file.
error: The author has not "signed-off" on the contribution.
Please see http://wiki.eclipse.org/CLA 

Если вы обнаружите, что уставились на коммит, пытаясь объединить сообщение об ошибке с тем, что вы видите в сообщении коммита, внимательно посмотрите на идентификатор коммита. Git и Gerrit смотрят на все коммиты, которые вы нажимаете, и иногда в толчке появляется дополнительный коммит слияния, который вас испортит. Я думаю, что может иметь смысл просто игнорировать коммиты слияния, поскольку они не содержат IP. Если вы согласны, пожалуйста, откройте ошибку.

В вики есть больше информации об обработке коммитов Git .