Автоматическое форматирование кода SVN при регистрации?

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

Код находится в С#, и мы используем TortoiseSVN.

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

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

Ответ 1

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

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

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

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

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

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

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

Ответ 2

С крюком pre-commit script, вы можете сделать это, да. Но я уверен, что вы удалите этот script после первого коммита, потому что у вас появятся большие проблемы.

Если вы изменяете данные, которые совершаются, клиент не знает об этом. Поэтому после такой фиксации, где ваш script "исправляет" форматирование файла, содержимое файла в репозитории отличается от файлов в вашей рабочей копии. Но ваша рабочая копия все еще думает, что она обновлена ​​с помощью репозитория (в конце концов, изменения только что были совершены).

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

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

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

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

Ответ 3

Я думаю, вы можете сделать это, используя привязку pre-commit в вашем репозитории.

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

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

Ответ 4

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

Ответ 5

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

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

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

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

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

Ответ 6

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

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

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

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