Egit: предотвратить коммит, если он не отформатирован правильно

Компания, в которой я работаю, дала мне проект по переносу их Java-проекта из CVS в Git. По нескольким причинам они не хотят использовать другой инструмент, кроме Eclipse. Так что мы застряли с EGit.

Я знаю, что можно настроить Eclipse для форматирования кода. Но кажется, что нет ничего, что могло бы помешать кому-то использовать свой собственный способ форматирования кода.

Поэтому мой вопрос : возможно ли отказаться от коммита с EGit, если код отформатирован неправильно? Причина этого вопроса в том, что мы хотим избежать конфликтов из-за формата кода, который был действительно большой проблемой в CVS.

Спасибо

3 ответа

Решение

Я рекомендую установить средство форматирования и действие сохранения, чтобы отформатировать код в качестве конкретной конфигурации проекта. Затем отслеживание .settings каталог в Git.

Поскольку он настроен в проекте и в управлении версиями, разработчикам не нужно настраивать Eclipse самостоятельно, это происходит автоматически.

Мы сделали это с несколькими проектами, и если вы сделаете это с самого начала, у вас никогда не будет никакого плохо отформатированного кода или обсуждений по этому поводу.

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

(Кстати, рекомендуемая опция в форматере - Никогда не объединять уже перенесенные строки, потому что иногда форматер будет делать странные переносы. Этот параметр позволяет контролировать перенос.)

Альтернативой проверке кода во время фиксации является сценарий, в котором геррит используется в качестве системы проверки. Разработчики будут передавать свой код на Gerrit, а не прямо в Git-репозиторий. Gerrit может затем запустить задание на сборку на сервере Jenkins/ Hudson, и это задание может запустить CheckStyle или любой другой инструмент проверки формата, который вы предпочитаете.

После успешной проверки Jenkins может также проверить изменение и объединить его с репозиторием git (большинство проектов предпочитают, чтобы Jenkins проверял только правильность кода, и человеку все еще нужно проверять код позже). Коммиты, не прошедшие проверку, останутся в зародыше (и письмо отправится разработчику).

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

Если вы знаете способ определить, правильно ли отформатирован код, вы можете реализовать это в предварительной фиксации хука

Этот крючок должен быть помещен в.git / hooks

git поставляется с примером, называемым pre-commit.sample, он либо находится в каталоге hooks, либо вы можете найти его в /usr/share/git-core/templates/hooks/ (в Ubuntu).

Другие вопросы по тегам