Gear/ImportSeparateUpstream
< Gear
Импорт истории пакета и вынесение "апстримных" сорцов в отдельный бранч на примере пакета mutt1.5
Подготовка к твореню безобразий
Делаем песочницу:
$ cd /var/tmp $ mkdir mu $ cd mu $ mkdir s u g $ GET http://ftp.altlinux.org/pub/distributions/archive/Sisyphus/index/mutt1.5 > list
Три каталога:
- s -- src.rpm
- g -- git repo
- u -- upstream sources
В файле list у нас список всех src.rpm'ов пакета в хронологическом порядке.
Импорт пакетов
Тут всё просто:
$ cd s $ rsync -a --files-from=../list rsync.altlinux.org::archive/Sisyphus/ . Welcome to ALT Linux Team public rsync archive!
Скачали, теперь пора импортировать:
$ subst 's,^,../s/,' ../list $ cd ../g $ git-init-db defaulting to local storage area $ cat ../list| gear-srpmimport --stdin Committing initial tree 749272a5e6883ec175f1927888bef44bc8e14b78 gear-srpmimport: Imported /var/tmp/mu/s/2004/11/04/files/SRPMS/mutt1.5-1.5.6i-alt0.7.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/01/17/files/SRPMS/mutt1.5-1.5.6i-alt0.8.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/02/15/files/SRPMS/mutt1.5-1.5.8i-alt1.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/07/22/files/SRPMS/mutt1.5-1.5.9i-alt1.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/08/23/files/SRPMS/mutt1.5-1.5.10i-alt2.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/08/24/files/SRPMS/mutt1.5-1.5.10i-alt3.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2005/10/06/files/SRPMS/mutt1.5-1.5.11-alt1.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2006/03/21/files/SRPMS/mutt1.5-1.5.11-alt2.src.rpm gear-srpmimport: Imported /var/tmp/mu/s/2006/06/05/files/SRPMS/mutt1.5-1.5.11-alt3.src.rpm gear-srpmimport: Created master branch
Разбираемся с апстримом
Засовываем в репозиторий pristine sources, нам достаточно только последнего архива:
$ cd ../u $ git-init-db defaulting to local storage area $ tail -1 ../list ../s/2006/06/05/files/SRPMS/mutt1.5-1.5.11-alt3.src.rpm $ rpm -qlp ../s/2006/06/05/files/SRPMS/mutt1.5-1.5.11-alt3.src.rpm | grep .tar. mutt-1.5.11.tar.gz $ rpm2cpio ../s/2006/06/05/files/SRPMS/mutt1.5-1.5.11-alt3.src.rpm | cpio -iumd mutt-1.5.11.tar.gz 7804 blocks $ tar xf mutt-1.5.11.tar.gz $ rm -f mutt-1.5.11.tar.gz $ mv mutt-1.5.11/ mutt $ git-add \*
Для красоты делаем коммит через faketime:
$ date -r mutt +%s 1126794237 $ faketime -d '1970-01-01 1126794237 seconds' -- git-commit -a -m 'Imported mutt-1.5.11.tar.gz' Committing initial tree 6dd1630049f94411c24d2605fbcd4483b8b0007f $ faketime -d '1970-01-01 1126794237 seconds' -- git-tag -a -m 'mutt 1.5.11' mutt-1.5.11
Мы следим за апстримом
Сливаем всё вместе:
$ cd ../g $ git-fetch ../u master:upstream warning: no common commits remote: Generating pack... remote: Done counting 396 objects. remote: Deltifying 396 objects. remote: 100% (396/396) done Unpacking 396 objects remote: Total 396, written 396 (delta 70), reused 0 (delta 0) 100% (396/396) done * refs/heads/upstream: storing branch 'master' of ../u Auto-following refs/tags/mutt-1.5.11 remote: Generating pack... remote: Done counting 1 objects. remote: Deltifying 1 objects. 100% (1/1) done remote: Total 1, written 1 (delta 0), reused 0 (delta 0) Unpacking 1 objects 100% (1/1) done * refs/tags/mutt-1.5.11: storing tag 'mutt-1.5.11' of ../u $ git pull . tag mutt-1.5.11 Merging HEAD with 1e3b99641643b36b9b28459a7a10313ef3215a96 Merging: 23bbfe69bcab5db08dcc24a21c439d0dc63c056c 1.5.11-alt3 1e3b99641643b36b9b28459a7a10313ef3215a96 Imported mutt-1.5.11.tar.gz found 1 common ancestor(s): 1 virtual commit Merge made by recursive.
Voila! Теперь в бранче upstream у нас лежат оригинальные исходники. Можно обновить их при помощи gear-update-archive, приложить в master, прописать генерацию тарбола из ветки upstream и делать diff'ы между upstream и master в соответствии с документацией к gear.