[devel] gear -- создание тарбола из другого branch

Alex V. Myltsev =?iso-8859-1?q?avm_=CE=C1_altlinux=2Eru?=
Вт Сен 26 14:14:25 MSD 2006


On Mon, 25 Sep 2006 12:09:04 +0400
Anton Farygin wrote:
> Т.е. - вопрос, как скачивать сорцы определённых версий пакетов ?

У меня есть такое представление о том, как должен работать gear-release:

* Читает .gear-tags, в котором написано:
	branch1 path1
	branch2 path2
	...
* Из каждого бранча извлекает tree id посредством git-rev-parse и
  git-cat-file.
* Создаёт новое дерево следующим путём:
	{
		git-ls-tree HEAD
		for (tree, path) in .gear-tags:
			echo "040000 tree $tree $path"
	} >git-mktree
  То есть пришивает к текущему дереву деревья из нужных бранчей под
  нужными именами.
* Создаёт новый коммит1, который ссылается на новосозданное дерево, а
  родителем числит прошлый release commit. Создаёт новый коммит2,
  который ссылается на новосозданное дерево, но не имеет родителей.
* Создаёт и подписывает два тэга: release-$version с коммитом1 и
  release-$version-bare с коммитом2.

Теперь
- на новосозданные тэги можно применять gear в неизменённом виде.
- если .gear-tags пуст, то gear можно применять и на HEAD; если 
  .gear-tags непуст, то gear не найдёт в нём path* и отвалится.
  Это напоминание сборщику, что HEAD требует применения gear-release.
- наследственность тэгов вида release-$version по-прежнему можно
  проверять при входе в Сизиф, если считать, что майнтейнеры честны,
  хотя, может быть, забывчивы. (Если майнтейнеры нечестны, то проверка
  наследственности не помогает в любом случае.)
- тэги release-*-bare можно использовать, если нужно скачать все
  исходники какой-то версии, и только их. Специальной поддержки со
  стороны git не требуется. Соответствие $release и $release-bare
  проверяется тривиально.

(Прим.: HEAD всюду можно заменить на любой tree-ish.)



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