tiding репозиторий Perl Subversion с PerlTidy?

Я хотел бы очистить существующий репозиторий subversion, содержащий плохо отформатированный код Perl. Поскольку я не уверен, будут ли необходимы какие-то сравнения с довольно старым кодом, в идеале я хотел бы иметь одинаковое форматирование для всех ревизий.

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

Есть ли какие-нибудь инструменты/рецепты для этого?


person darked89    schedule 29.04.2011    source источник


Ответы (2)


Что именно вы хотите сделать? Очистить все старые ревизии?

Не делай этого. Вы уничтожите свою историю, и даже если вы должны генерировать тот же Perl-скрипт (только что приведенный в порядок), вы можете в конечном итоге испортить какую-то ранее выпущенную версию. Кроме того, это не стоит усилий.

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

Конечно, если ваш Perl-код настолько плохо отформатирован, что вы хотите, чтобы все это выполнялось с аккуратным Perl, у вас больше проблем. Что мешает кому-то снова испортить код?

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

Разработчики быстро научатся использовать Perl Tidy, прежде чем проверять новый код Perl, чтобы не столкнуться с публичным смущением из-за неудачной сборки.

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

person David W.    schedule 29.04.2011
comment
Да, я хотел очистить старые ревизии, но так как я не мог найти инструментов/рецептов для этого, я начал думать, что это может быть довольно плохой идеей. Я обязательно проверю Дженкинса. Я буду распространять информацию о perltidy. - person darked89; 29.04.2011

В будущем я бы рекомендовал svn pre -commit hook к скрипту, выполняющему 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, когда вы хотите посмотреть старые версии.

person blahdiblah    schedule 29.04.2011