[devel] gear-srpmimport commit ancestors

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Окт 12 08:07:18 MSD 2006


On Wed, Oct 11, 2006 at 03:48:29AM +0400, Alexey Tourbin wrote:
> Я хочу привязать rpm'ы к тарболлам (или к тагам).
> 
> 	* 3.0
> 	  * 3.0-alt1
> 	  * 3.0-alt2
> 	* 3.1
> 	  * 3.1-alt1
> 	^ ^
> 	| |
> 	| `- srpms
> 	`--- tarballs
> 
> При импорте 3.1-alt1 у него должно быть два предшественника: 3.0-alt2
> и 3.1.  Конечно, перед 3.1-alt1 можно сделать промежуточный коммит и
> влить туда 3.0-alt2, но вручную это делать слишком уморительно.
> Фактически мне нужно "всего лишь" распаковать 3.1-alt1.src.rpm и указать
> в коммите два предшественника: 3.0-alt2 и 3.1.
> 
> Какая тут машинерия?

Во!  Я понял, какая тут машинерия.  То есть научился привязывать историю
gear-srpmimport к тарболлам.  Вот что показывает gitk для perl-CGI.

Кому интересно, вот как вкратце это делать.

Допустим мы импортировали тарболлы и хотим ипортировать srpms'ы.
Мы стоим на тарболле 3.0.  Делаем бранч srpms:

$ git-checkout -b srpms 3.0

Импортируем 3.0-*.src.rpm:

$ gear-srpmimport *-3.0-*.src.rpm

Теперь, прежде чем имортировать 3.1-alt1.src.rpm, суда нужно фиктивно
слить 3.1.tar.gz.  Для этого от тарболла 3.1 нужно отпочковать временный
бранч foo и слить его в branch srpms с помощью фиктивной стратегии ours,
но при этом не делать коммита до конца.

$ git-branch foo 3.1
$ git-pull --no-commit -s ours . foo
$ git-branch -D foo

Теперь при импорте *-3.1-alt1.src.rpm у коммита будет два предка: с
одной стороны, предыдущий src.rpm, с другой стороны -- новый тарболл.

$ gear-srpmimport *-3.1-*.src.rpm

Такая вот машинерия.

Как импортировать тарболлы?  У меня для этого есть ужасный скриптик,
вот он.  Только не судите строго, works for me.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : perl-CGI.png
Тип     : image/png
Размер  : 7882 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20061012/704c2d4e/attachment-0001.png>
----------- следующая часть -----------
#!/bin/sh -e

cmd=
while getopts c:p: opt; do
	case $opt in
		c) cmd="${OPTARG:?}" ;;
		p) expr="${OPTARG:?}" ;;
		*) pod2usage --exit=2 "$0"; exit 2 ;;
	esac
done
shift "$((OPTIND-1))"

git-init-db
for tar; do
	find -not -wholename '*/.git*' -delete
	tar --strip-components=1 -xf "$tar"
	mtime=`find -not -wholename '*/.git*' -type f -printf '%T@\n' |sort -u -rn |head -1`
	[ -z "$cmd" ] || eval "$cmd"
	[ -z "$expr" ] || find -not -wholename '*/.git*' -type f -print0 |xargs -r0 \
		perl -pi -e "$expr"
	git-add .
	TZ=UTC faketime -d "1970-01-01 $mtime seconds" -- \
	git-commit -a -m "imported ${tar##*/}"
done
git-repack -a -d
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20061012/704c2d4e/attachment-0001.bin>


Подробная информация о списке рассылки Devel