При разработке с SVN иногда я хочу просто откатить все свои изменения и начать все сначала, поэтому я собрал команду, чтобы отменить все файлы в моей проверке:
alias "svn-reset"="svn status | perl -nale 'print $F[1] if /^M/' | xargs svn revert"
Когда я запускаю svn status | perl -nale 'print $F[1] if /^M/' | xargs svn revert
в командной строке, код работает должным образом: все мои измененные файлы возвращаются, что подтверждается другой командой svn status
. Однако, когда я запускаю svn-reset
, я получаю вывод, подобный следующему:
$ svn-reset
Skipped 'ARRAY(0x1c2f52a0)'
Skipped 'ARRAY(0x1c2f5450)'
Skipped 'ARRAY(0x1c2f5410)'
В этом примере я проверил, что у меня в кассе три измененных файла, поэтому похоже, что проблема в том, что perl печатает неверную информацию. Тем не менее, я почти не знаю perl, и я озадачен тем, почему perl будет вести себя по-разному при использовании псевдонима bash по сравнению с ручным выполнением того же кода perl. Есть мысли?
Этот вопрос о том, почему perl ведет себя по-разному при запуске с использованием псевдонима bash. Если у кого-нибудь есть предложения по более эффективному способу автоматического возврата всех измененных файлов в SVN, мне это тоже будет интересно, но это не отвечает на мой вопрос.