ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Pavel Wolneykien <manowar@altlinux.org>
To: "ALT Linux Team development discussions" <devel@lists.altlinux.org>
Subject: Re: [devel] diff in .gear-rules
Date: Fri, 17 Oct 2008 18:45:45 +0400
Message-ID: <20081017184545.29280@dinkum-thinkum.spb.altlinux.org> (raw)
In-Reply-To: Your message of Fri, 17 Oct 2008 15:54:39 +0400 <20081017155439.1091da29.bga@altlinux.org>


Grigory Batalov <bga@altlinux.org> wrote:
> Можно ли заставить директиву diff из .gear-rules игнорировать появление
> новых файлов? Т.е. вместо "diff -ruN" запускать "diff -ru".
> И если нельзя, то как сделать, чтобы было можно? =)

  Пользуясь случаем, хочу поделиться опытом, как я вчера
бэкпортировал xlock.

  Значит дело было так. 

                                * * *

  Жил был репозиторий и было у него 3 бранча:

  upstream
  add-icons
  pam.d

  В первом лежали исходные файлы заморские, с tux.org взятые, версии
5.27. В втором иконки расписные, разных размеров. А в третьем файлы
конфигурационные большой важности.

  И было у Апстрима два сына:

  -- upstream
   |-- fix-install-mode
   |-- pam-integration

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

  И настало время сборки и пришёл тогда Повелитель.

  * master
    upstream
      fix-install-mode
      pam-integration
    add-icons
    pam.d

  Расставил он теги по бранчам, обозначив тем самым кому на сборку
приходить. 

  upstream v5.27
    fix-install-mode imode-5.27
    pam-integration pam-integ-1.0
  add-icons icons-1.0
  pam.d pam.d-1.0

  И взял он тогда Шестерни могучие и приказал им:

  tar.gz: v@version@:xlockmore
  tar.gz: icons-1.0:icons name=@name@-@version@-icons
  tar: pam.d-1.0:pam.d name=@name@-@version@-pam.d
  diff: v@version@:xlockmore imode-5.27:xlockmore name=install-mode.patch
  diff: v@version@:xlockmore pam-integ-1.0:xlockmore name=pam-integration.patch

  Словом "@version@" значение "5.27" обозначив.

  Заскрежетали Шестерни и остановились, сказав: "Tag is not an ancestor
of current HEAD".

  Взял тогда Повелитель и соединил всех кого отметил вместе, и заключил в
себе:

  * master: v5.27--icons-1.0--pam.d-1.0--imode-5.27--pam-integ-1.0--HEAD

  Завертелись тогда Шестерни и собрался пакет новёхонький, пропатченный.

  Прошёл день, два и захотелось собрать пакет старый, надёжный, но тоже
на манер нового пропатченный. И появился тогда в репозитории новый
бранч в который были записаны исходные файлы старые, проверенные:

  * branch-4.0 v5.22
    master
    upstream v5.27
      fix-install-mode imode-5.27
      pam-integration pam-integ-1.0
    add-icons icons-1.0
    pam.d pam.d-1.0

  И задумал Четвёртый как Повелитель, всё в себе объединить. Сначала
взял он "icons-1.0" и "pam.d-1.0", и возрадовался уже, так всё у него
шло хорошо! Но вот пришёл к нему "imode-5.27" и захлестнула бедного
Четвёртого волна изменений конфликтных, и сгинул он под ней!

  И решено тогда было на помощь премудрость машинную призвать. И снова
появился Четвёртый, но не сам по себе, а как потомок Апстрима:

  master
  upstream v5.27
    fix-install-mode imode-5.27
    pam-integration pam-integ-1.0
    * branch-4.0
  add-icons icons-1.0
  pam.d pam.d-1.0

  Имел новый Четвёртый слабость к версиям старым, надёжным. Поэтому
заменил он множество новых файлов, доставшихся ему от отца, старыми,
понизив версию дистрибутива до 5.22, о чём провозгласил, тег установив с
аннотацией в красочной рамке.

  * branch-4.0 v5.22.

  Дальше нужно ему было в себе всех своих братьев и друзей объединить, к
сборке готовясь. Сначала как и прежде, взял он "icons-1.0" и
"pam.d-1.0", которые влились в него без возражений. И вот подошёл
"imode-5.27", но будучи братом кровным Четвёртого, только отличие своё
от отца ему передал, сработала премудрость машинная! Четвёртый обозначил
этот знаменательный момент тегом "v5.22-p0". Другой его брат,
"pam-integ-1.0" так же поступить хотел, и лишь небольшой конфликт у них
возник. Поспорили братья немного и помирились, свою дружбу другим тегом
отметив: "v5.22-p1". Так Четвёртый, подобно Повелителю, объединил в себе
всех для сборки отобранных:

  * branch-4.0: v5.27--(v5.22)--icons-1.0--pam.d-1.0--imode-5.27(v5.22-p0)--pam-integ-1.0(v5.22-p1)--HEAD

  И взял он Шестерни могучие и приказал им:

  tar.gz: v@version@:xlockmore
  tar.gz: icons-1.0:icons name=@name@-@version@-icons
  tar: pam.d-1.0:pam.d name=@name@-@version@-pam.d
  diff: v@version@:xlockmore v@version@-p0:xlockmore name=install-mode.patch
  diff: v@version@-p0:xlockmore v@version@-p1:xlockmore name=pam-integration.patch

  Словом "@version@" значение "5.22" обозначив.

  И завертелись Шестерни, и последовательно между собой теги сравнивая,
патчей наделали. И не было в тех патчах ничего лишнего, и накатились они
славно. И собрался пакет, хоть и старый, но надёжный, с новыми заплатами.

  С тех пор так и повелось. Если какому сыну захотелось пакет собрать,
он братьев своих к себе на пир созывает, с каждым спорит, но неизменно
мириться и тег устанавливает. Шестерни потом с этих тегов патчи творят,
последовательно их между собой сравнивая. И выходят у них пакеты
славные. А чужаку со стороны так пакет не в жизнь не собрать!


                                * * *

  Вот собственно и всё. Не уверен что это универсальный и вообще верный
рецепт, но я вчера использовал именно его. Результат можно увидеть в
/people/manowar/xlockmore.git. Поддержку и конструктивную критику приму
с радостью!

  Павел.

  parent reply	other threads:[~2008-10-17 14:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-17 11:54 Grigory Batalov
2008-10-17 14:26 ` Andrey Rahmatullin
2008-10-17 20:45   ` Grigory Batalov
2008-10-17 20:55     ` Dmitry V. Levin
2008-10-17 21:13       ` Grigory Batalov
2008-10-17 14:45 ` Pavel Wolneykien [this message]
2008-10-17 20:08   ` Konstantin Baev

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=20081017184545.29280@dinkum-thinkum.spb.altlinux.org \
    --to=manowar@altlinux.org \
    --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