Базар: Как экспортировать только что измененный файл какой-то конкретной ревизии?

Мне интересно, есть ли в любом случае просто экспортировать файлы, которые изменились в конкретной ревизии.
Например: у меня есть ветка с тремя файлами:

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.

Другие вопросы по тегам