Базар: Как экспортировать только что измененный файл какой-то конкретной ревизии?
Мне интересно, есть ли в любом случае просто экспортировать файлы, которые изменились в конкретной ревизии.
Например: у меня есть ветка с тремя файлами:
file.php
file.js
file.css
Просто file.js
изменился в последнем коммите.
Как пользоваться export
команда просто экспортировать измененный файл (file.js
) и не допускать экспорта других.
Есть ли плагин или внешняя 3-я часть?
1 ответ
С помощью bzr export
Вы можете указать один каталог для экспорта, но не отдельные файлы.
В качестве альтернативы вы можете получить содержимое файла в какой-то прошлой ревизии, например так:
bzr cat -r REV path/to/file > file.rREV
Вы можете получить список измененных файлов в прошлой версии с помощью одной строки:
bzr diff -c REV | grep ^===
Чтобы завершить это, вот полный однострочный текст, который делает именно то, что вы просили: экспортировать только измененные файлы некоторой конкретной версии REV в каталог с именем EX:
bzr diff -cREV | grep '^=== modified file ' | sed -e "s/[^']*//" -e "s/'//g" |\
while read fname; do echo $fname; mkdir -p EX/"$(dirname "$fname")";\
bzr cat -rREV "$fname" > EX/"$fname"; done
Он перебирает измененные файлы в ревизии REV, подготавливает каталог экспорта EX со всеми родительскими каталогами, необходимыми для сохранения файла, сохраняя путь, и, наконец, получает файл с bzr cat
и записывает его в правильном относительном пути внутри EX.