ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Sergey Vlasov <vsu@altlinux.ru>
To: devel@lists.altlinux.org
Subject: Re: [devel] gear -- создание тарбола из другого branch
Date: Tue, 26 Sep 2006 18:25:53 +0400
Message-ID: <20060926142553.GF18551@master.mivlgu.local> (raw)
In-Reply-To: <20060926170136.16b315ae@localhost.localdomain>

[-- Attachment #1: Type: text/plain, Size: 4938 bytes --]

On Tue, Sep 26, 2006 at 05:01:36PM +0400, Alex V. Myltsev wrote:
> On Tue, 26 Sep 2006 15:49:04 +0400
> Sergey Vlasov wrote:
> 
> > branch1 - это имя, которое gear-release в момент запуска преобразует в
> > sha1?  В таком случае, даже если .gear-tags лежит в репозитории, это
> > само по себе ничего не значит, так как неизвестно, на что указывала
> > ссылка с указанным именем в момент запуска gear-release,
> > следовательно, действия мантейнера невозможно повторить
> > ...  Разве что модифицировать .gear-tags в этом дереве, добавив туда
> > реально использованные sha1 пришитых бранчей.
> Ну ситуация же не становится лучше, если sha1 хранить в .gear-tags или
> ещё где-то. Всё равно непонятно, откуда эти sha1 появились.

Если в .gear-tags хранится sha1 коммита, у этого коммита есть какая-то
история.  Понятно, что можно закоммитить неизвестно откуда взятые файлы с
бесполезным сообщением и заведомо ложной информацией об авторе, но эту
проблему вряд ли можно решить техническими средствами.

Если имеется только sha1 от дерева, действительно непонятно, откуда оно
появилось.

> Я предлагаю хранить sha1 прямо в деревьях, родными механизмами git.

sha1 каких объектов - tree или commit?  Для нормальной работы нужен
commit; искать commit по tree никуда не годится.

> > > * Создаёт новый коммит1, который ссылается на новосозданное дерево,
> > > а родителем числит прошлый release commit. Создаёт новый коммит2,
> > >   который ссылается на новосозданное дерево, но не имеет родителей.
> > Откуда берётся прошлый release commit?
> Хм. Они вроде все лежат в refs/releases/?

И какой из них последний?

> > У коммит1, если уж делать его в таком виде, нужно вторым родителем
> > ставить текущий коммит
> Нет, родителем у него должен быть только прошлый release commit.

Так делать нельзя.  Тот коммит, который идёт на сборку, должен иметь
ссылки на полную историю пакета, и этой истории должно быть достаточно для
нормального продолжения работы над пакетом (возможно, совершенно другим
мантейнером).  Если release commit будет содержать только склеенное дерево
исходников без явных ссылок на те коммиты, из которых это дерево было
собрано, продолжить работу на базе этого коммита будет проблематично (при
отсутствии явных ссылок рабочий коммит, из которого делался релиз, не
попадёт в кэширующий репозиторий Сизифа, а останется только в персональном
репозитории мантейнера, и вполне может оттуда пропасть).

> Тогда дифф между релизами будет настоящим диффом, со всеми исходниками.

git-diff release^1 release выдаст этот дифф независимо от того, есть у
коммита ещё родители или нет.  Вот в gitk, если явно не запросить,
получится diff --cc.

> А вот информацию о всех сшитых вместе коммитах надо где-то хранить в
> релизе, это правда. Иначе нельзя будет проверить наследственность.

Проверять наследственность для сшитых коммитов, вероятно, как раз не
нужно, поскольку мантейнер вполне может в очередном релизе что-то
выбросить, и не стоит заставлять его в таком случае делать fake merge.
Вполне достаточно, чтобы release commit происходил от аналогичного коммита
предыдущего релиза.

Хотя при такой схеме, которая описана здесь, получается, что надо
проверять наследственность не только для release commit, но и для рабочего
коммита, из которого делается релиз (иначе можно не глядя пришить к
предыдущему релизу что попало).

> > > если .gear-tags непуст, то gear не найдёт в нём path* и отвалится.
> > >   Это напоминание сборщику, что HEAD требует применения
> > > gear-release.
> > Это неудобно - как минимум, нужен wrapper, позволяющий вызвать gear
> > одной командой (либо поддержка в самом gear).
> Поддержка в самом gear должна отсутствовать по определению. Из этого
> commit-ish не собирается однозначно пакет; значит, gear на него
> применять нельзя.

Либо нужно использовать схему, при которой пакет собирается однозначно.

> Wrapper можно сделать, но он, разумеется, не будет обеспечивать
> воспроизводимости.
>  
> > это должен быть не gear-release, а что-то другое.
> ОК.

Как минимум, подписывать каждую тестовую сборку - это перебор.

> > при отсутствии связей между коммитами все объекты всегда передаются
> > полностью
> Беда. Я надеялся, что если дерево уже есть, то его заново не передают.
> Тогда, конечно, bare отпадает.

Протокол git определяет только общие коммиты, получение списка нужных
tree/blob происходит уже на более поздней стадии, до которой при
отсутствии общих коммитов нужная информация уже не доходит.

> > Кроме того, имея подобный коммит, никак не связанный с остальной
> > историей, невозможно получить изменения исходников относительно
> > оригинальной версии
> Ну, это и сейчас, с историей, непонятно как делать. Где она,
> оригинальная версия?

При наличии истории есть хотя бы какая-то возможность что-то найти.  При
отсутствии нормальных связей до истории можно просто не добраться.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2006-09-26 14:25 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-21 19:20 Денис Смирнов
2006-09-22  5:57 ` Alexey Tourbin
2006-09-22 10:44   ` Денис Смирнов
2006-09-22 23:37     ` Dmitry V. Levin
2006-09-23  8:40       ` Денис Смирнов
2006-09-23  8:48         ` Dmitry V. Levin
2006-09-23  9:19           ` Денис Смирнов
2006-09-23 14:07             ` Dmitry V. Levin
2006-09-23 15:23               ` Sergey Vlasov
2006-09-23 15:54                 ` Dmitry V. Levin
2006-09-23 16:04                   ` Aleksey Avdeev
2006-09-23 16:16                     ` Dmitry V. Levin
2006-09-23 16:38                       ` Michael Shigorin
2006-09-23 16:51                   ` Sergey Vlasov
2006-09-23 19:28                     ` Dmitry V. Levin
2006-09-23 19:36                       ` Денис Смирнов
2006-09-23 19:43                         ` Dmitry V. Levin
2006-09-23 19:57                       ` Sergey Vlasov
2006-09-23 22:56                       ` Michael Shigorin
2006-09-26 19:01                       ` Sergey Vlasov
2006-09-30 19:30                         ` Sergey Vlasov
2006-10-03 22:11                           ` Dmitry V. Levin
2006-10-15 16:08                             ` Sergey Vlasov
2006-10-15 22:21                               ` Dmitry V. Levin
2006-10-18 22:55                                 ` Dmitry V. Levin
2006-09-23 22:55                     ` [devel] uranus Michael Shigorin
2006-09-25  5:24                       ` Sergey Pinaev
2006-09-24 19:14                   ` [devel] gear -- создание тарбола из другого branch Sergey Vlasov
2006-09-25 18:06                     ` Sergey Vlasov
2006-09-25 20:01                       ` Dmitry V. Levin
2006-09-26 17:34                       ` Alexey I. Froloff
2006-09-26 18:21                         ` Alexey I. Froloff
2006-09-25  8:09                   ` Anton Farygin
2006-09-25 13:31                     ` Sergey Vlasov
2006-09-25 20:06                       ` Dmitry V. Levin
2006-09-26  8:42                         ` Sergey Vlasov
2006-09-26 22:50                           ` Dmitry V. Levin
2006-09-26 10:14                     ` Alex V. Myltsev
2006-09-26 10:43                       ` Alex V. Myltsev
2006-09-26 11:49                       ` Sergey Vlasov
2006-09-26 13:01                         ` Alex V. Myltsev
2006-09-26 14:25                           ` Sergey Vlasov [this message]
2006-09-26 14:52                             ` Alexey I. Froloff
2006-09-26 15:19                               ` Sergey Vlasov
2006-09-23 15:28               ` Денис Смирнов
2006-10-02 23:32     ` Alexey Tourbin
2006-10-03  7:54       ` Денис Смирнов
2006-10-03  8:05         ` Alexey Tourbin
2006-10-03 11:19           ` Денис Смирнов
2006-10-03 11:25             ` Pavlov Konstantin
2006-10-03 14:36               ` Денис Смирнов
2006-10-03 14:46                 ` Pavlov Konstantin
2006-10-03 22:25                   ` Dmitry V. Levin
2006-10-04  8:02                     ` Денис Смирнов

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060926142553.GF18551@master.mivlgu.local \
    --to=vsu@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git