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).