2012-05-25 2 views
3

У меня есть список файлов в моей текущей рабочей копии, которые были изменены локально. Есть около 50 файлов, которые были изменены.копировать SVN измененные файлы, включая каталог, в другой каталог

Я использую следующую команду для копирования файлов, которые были изменены в subversion, в папку под названием/backup. Есть ли способ сделать это, но поддерживать каталогов, в которых они находятся? Таким образом, он будет делать что-то похожее на экспорт SVN diff файлов. Например, если я изменил файл с именем /usr/lib/SPL/RFC.php, он также скопировал бы каталог usr/lib/SPL.

cp `svn st | ack '^M' | cut -b 8-` backup 

ответ

6

Это выглядит странно, но это действительно легко копировать файлы с tar. Например.

tar -cf - $(svn st | ack '^M' | cut -b 8-) | 
tar -C /backup -xf - 
+0

Это то, что я искал, огромное спасибо. Я предполагаю, что для добавленных файлов я просто должен перезапустить, изменив аргумент, переданный в ack, на ''^A'' – crmpicco

+1

. Чтобы проверить измененные добавленные файлы _and_, я теперь делаю это: 'tar -cf - $ (svn st | ack '^ M |^A' | cut -b 8-) | tar -C/backup -xf -' – crmpicco

+2

И для этого в Windows из cygwin, заменяя обратную косую черту для перекоса: 'tar -cf - $ (svn st | grep"^[MA] "| cut -b 8- | sed -e "s/\\\/\\ // g") | tar -C ./backup -xf -' –

1

Почему бы не создать патч ваших изменений? Таким образом, у вас есть один файл, содержащий все ваши изменения, которые вы можете указать в имени - что-то вроде 2012-05-28-17-30-00-UnitTestChanges.patch, по одному в день.

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

FYI: Subversion 1.8 должны иметь checkpointing/shelving (который является то, что вы, кажется, хотят сделать), но это далеко, и могут быть добавлены только в Subversion 1.9.

Смежные вопросы