Tiding Subversion Perl РЕПО с PerlTidy?
Я хотел бы очистить существующий репозиторий Subversion, содержащий плохо отформатированный код Perl. Поскольку я не уверен, понадобятся ли некоторые сравнения с довольно старым кодом, в идеале я хотел бы иметь одинаковое форматирование для всех ревизий.
С другой стороны, создание нового репо путем проверки всех старых ревизий, переформатирования с помощью perltidy и регистрации должно будет сохранять исходные сообщения журнала.
Есть ли инструменты / рецепты, чтобы сделать это?
2 ответа
Что именно вы хотите сделать? Очистить все старые ревизии?
Не делай этого. Вы уничтожите свою историю, и даже если вам нужно будет сгенерировать тот же самый Perl-скрипт (только что приведенный в порядок), вы можете в итоге испортить какую-то ранее выпущенную ревизию. Кроме того, это не стоит усилий.
Я бы порекомендовал вам проверить ваши текущие ревизии, запустить Perl Tidy, а затем проверить ваши изменения. Вы не измените свой старый код, но он даст вам чистые вещи для работы с этого момента.
Конечно, если ваш Perl-код настолько плохо отформатирован, что вы хотите запустить все это с помощью Perl tidy, у вас есть больше проблем. Что мешает кому-то снова напутать код?
Я также рекомендую вам взглянуть на Jenkins как часть непрерывного процесса сборки. Вы не компилируете код Perl, но вы можете использовать Jenkins для запуска тестов, чтобы убедиться, что все новые скрипты Perl и любые модификации ваших скриптов Perl были убраны. Если сценарий Perl имеет плохое форматирование, вы не сможете выполнить сборку и отправите электронное письмо себе и разработчику.
Разработчики быстро научатся использовать Perl Tidy, прежде чем проверять новый код на Perl, чтобы испытать смущение в связи с неудачной сборкой.
Кстати, остальная часть вашей команды разработчиков поддерживает ваши усилия? Если нет, первое, что вам нужно сделать, это убедить их, что хорошее форматирование Perl может помочь уменьшить количество ошибок, и дать им инструменты, которые помогут автоматизировать их усилия по форматированию.
В будущем я бы порекомендовал подключить svn pre-commit к скрипту, выполняющему 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
когда вы хотите посмотреть на старые версии.