#svn #refactoring #perl-tidy
#svn #рефакторинг #perl-tidy
Вопрос:
Я хотел бы очистить существующий репозиторий subversion, содержащий плохо отформатированный код Perl. Поскольку я не уверен, что потребуются какие-либо сравнения с довольно старым кодом, в идеале я хотел бы иметь одинаковое форматирование для всех ревизий.
С другой стороны, при создании нового репозитория путем проверки всех старых ревизий, переформатирования с помощью perltidy и регистрации необходимо сохранить исходные сообщения журнала.
Существуют ли какие-либо инструменты / рецепты для этого?
Ответ №1:
На будущее я бы порекомендовал использовать перехват предварительной фиксации svn для скрипта, выполняющего Test::PerlTidy, чтобы заставить всех поддерживать порядок в своем коде.
Вместо того, чтобы пытаться изменить все предыдущие коммиты, вы могли бы рассмотреть пользовательскую svn diff
команду для случаев, когда вы хотите провести сравнение со старыми версиями. Что-то вроде:
#!/bin/bash
# tidydiff.sh for tidying code before diffing
perltidy "$1" > "/tmp/$1"
perltidy "$2" > "/tmp/$2"
diff "$1" "$2"
rm "/tmp/$1" "/tmp/$2"
а затем использовать svn diff --diff-cmd=tidydiff.sh
, когда вы хотите просмотреть старые версии.
Ответ №2:
Что именно вы хотите сделать? Очистить все старые версии?
Не делайте этого. Вы уничтожите свою историю, и даже при том, что вы должны генерировать тот же сценарий Perl (только что исправленный), вы могли бы в конечном итоге использовать некоторые ранее выпущенные версии. Кроме того, это не стоит затраченных усилий.
Я бы рекомендовал вам проверить ваши текущие ревизии, запустить Perl Tidy, а затем проверить внесенные изменения. Вы не будете изменять свой старый код, но с этого момента это даст вам чистый материал для работы.
Конечно, если ваш код на Perl настолько плохо отформатирован, что вы хотите запустить все это с помощью Perl tidy, у вас возникнет больше проблем. Что мешает кому-либо снова внести беспорядок в код?
Я бы также рекомендовал вам взглянуть на Jenkins как на часть непрерывного процесса сборки. Вы не компилируете код Perl, но вы могли бы использовать Jenkins для запуска тестов, чтобы убедиться, что все новые скрипты Perl и любые модификации ваших скриптов Perl были исправлены. Если скрипт на Perl имеет неправильное форматирование, вы завершите сборку с ошибкой и отправите электронное письмо себе и разработчику.
Разработчики быстро научатся использовать Perl Tidy, прежде чем проверять новый код Perl, чтобы не столкнуться с публичным смущением из-за неудачной сборки.
Кстати, поддерживает ли остальные члены вашей команды разработчиков ваши усилия? Если нет, первое, что вам нужно сделать, это убедить их, что правильное форматирование Perl может помочь уменьшить количество ошибок, и предоставить им инструменты, которые помогут автоматизировать их усилия по форматированию.
Комментарии:
1. Да, я хотел очистить старые версии, но поскольку я не мог найти инструменты / рецепты для этого, я начал думать, что это может быть довольно плохой идеей. Я обязательно проверю Дженкинса. Я расскажу о perltidy.