SVN автоматическое форматирование кода при регистрации? - PullRequest
11 голосов
/ 19 июня 2009

Возможно ли это? Если да, то как мне это сделать?

Код написан на C #, и мы используем TortoiseSVN.

Я просто хочу автоматически форматировать код при каждой проверке.

Большое спасибо

Ответы [ 6 ]

27 голосов
/ 19 июня 2009

С помощью скрипта ловушки перед фиксацией вы можете сделать это, да. Но я уверен, что вы удалите этот скрипт после первого коммита, потому что у вас будут большие проблемы.

Если вы измените данные, которые будут зафиксированы, клиент не узнает об этом. Таким образом, после такого коммита, когда ваш скрипт «исправляет» форматирование файла, содержимое файла в хранилище отличается от файлов в вашей рабочей копии. Но ваша рабочая копия все еще думает, что она актуальна с хранилищем (в конце концов, его модификации только что зафиксированы).

Итак, при следующем обновлении вы попадете в ад - сломанная рабочая копия, недовольные пользователи, ...

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

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

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

17 голосов
/ 19 июня 2009

Ты касаешься на земле священной войны. Суета с форматированием людей требует вил и факелов.

Моя рекомендация: Не .

Не говоря уже о том, что если вы говорите на C #, а ваши разработчики используют Visual Studio, в VS есть много инструментов для автоматического форматирования. Просто введя эту закрывающую фигурную скобку и VS может / автоматически отформатирует ваш код.

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

Инструменты -> Параметры, Текстовый редактор -> C # -> Форматирование

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

Если вы одержимы этим, то крюк перед фиксацией, как говорили другие, - это путь. Если ваш сервер SVN работает в Windows, могу ли я порекомендовать CaptainHook для написания сценариев хуков? Подключаемые плагины, которые вы можете написать на любом языке .NET.

6 голосов
/ 19 июня 2009

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

6 голосов
/ 19 июня 2009

Я думаю, что вы можете сделать это, используя хук предварительной фиксации в вашем хранилище.

Редактировать Для людей, которые считают это плохой идеей (я не говорю, что это не так): организации нередко применяют определенный стиль кода или форматирование кода. Иногда эти правила могут быть довольно педантичными и строго соблюдаемыми, и хотя они обычно являются человеческими действиями, вовлеченными в это (то есть форматирование в правильный стиль перед тем, как вы что-либо делаете в репозитории), автоматизация процесса может иногда быть полезной.

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

5 голосов
/ 19 июня 2009

Очень рекомендую.

Используйте сценарий предварительной фиксации или, что еще лучше, найдите способ сделать это автоматически в вашей среде IDE (предварительная фиксация передаст измененный файл клиенту). Eclipse может автоматически форматировать при сохранении.

Обоснование этого заключается в том, что если разработчики форматируют по-разному, вы найдете файлы, которые имеют на них коммиты, где фиксация является лишь изменением форматирования, и это приведет к бесконечной путанице.

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

Я работал с cvs и java и использовал jalopy для автоматического форматирования. Мы использовали систему ветвления, поэтому она была обязательной, и она работала очень хорошо.

3 голосов
/ 19 июня 2009

Это возможно, но тоже очень, очень плохая идея.

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

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

Работает ли сервер SVN в системе Windows или Linux? А какой код-форматер вы хотите использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...