Вопрос по Mercurial

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
Deo
Сообщения: 365
ОС: openSuse 12.3

Вопрос по Mercurial

Сообщение Deo »

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

Единственный пока вариант - коммитить только раз и парсить вывод hg status, но это как-то криво.
моё любимое облачко
Фхтагн! Мозг! Ням-ням! ~ Ктулху про Ленина
Спасибо сказали:
Аватара пользователя
Deo
Сообщения: 365
ОС: openSuse 12.3

Re: Вопрос по Mercurial

Сообщение Deo »

Как-то через .опу, но вот вариант:


Запускаем скрипт:
#! /bin/sh
playground = ~/AW/w/test/
skin = xxx

cd $playground

cp -R original $skin
cd $skin

hg init #создали репозиторий
hg add #добавили в него все файлы
hg ci -m "Clean" #закоммитили изменения в первую ревизию


работаем.........
Получаем список изменившихся файлов:
#! /bin/sh
playground = ~/AW/w/test/
skin = xxx
repo = ~/AW/p/templates/

cp multiline $playground/$skin
cd $playground/$skin

hg ci -A -m "Modified" #закоммитили изменения в новую ревизию

hg log -r1 --style multiline >> changes #получили изменившиеся файлы !!!!r1 - ВТОРАЯ РЕВИЗИЯ... при последующих коммитах сменить номер

rm multiline

exec<changes;
while read line
do
if [ -f $repo/$skin/$line ]; then
mkdir -p $repo/$skin/$line
rmdir $repo/$skin/$line
cp $line $repo/$skin/$line
else
echo $repo/$skin/$line
fi
done
rm changes
echo "done."


файл multiline (в директории со скриптом):

file = " {file}\n"
моё любимое облачко
Фхтагн! Мозг! Ням-ням! ~ Ктулху про Ленина
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Вопрос по Mercurial

Сообщение kamre »

Deo писал(а):
31.07.2009 17:57
Нигде не могу найти информации, как скопировать вовне файлы измененные между двумя определенными коммитами.


Код: Выделить всё

hg st --rev xxx:yyy


показывает какие файлы изменялись/удалялись/добавлялись между ревизиями xxx и yyy, ну а дальше уже выбираете что из них нужно, вытаскиваете из репозитория и копируете
Спасибо сказали: