git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Koch <thomas@koch.ro>
To: vcs-pkg-discuss@lists.alioth.debian.org
Cc: git@vger.kernel.org, debian-devel@lists.debian.org
Subject: elegant(?) debian topgit workflow?
Date: Wed, 16 Dec 2009 11:13:38 +0100	[thread overview]
Message-ID: <200912161113.38396.thomas@koch.ro> (raw)

CC (FYI) to git and debian-devel. see http://vcs-pkg.org

Hi,

would you be so kind to review my workflow proposal?

branches
--------

upstream
debian/*, fixes/*, features/* - topgit branches based on upstream
patches - the hero
master - contains the debian/ dir and is the branch we build from

All topgit branches are integrated in the patches branch, which is afterwards 
merged into master. The magic is, that the integration is not a regular merge, 
but a handcrafted merge and commit with quilt and git plumbing.

workflow
--------

Every merge starts with reseting "patches" to the state of upstream:

#> git checkout upstream
(for the first time: git checkout -b patches, otherwise:)
#> git symbolic-ref HEAD refs/heads/patches

Now we're on branch patches with the working tree and index in the pristine 
state of upstream. We can now integrate the topgit branches:

#> tg export --quilt debian/patches \
 -b debian/use-debian-java-libraries,debian/disable-tests-that-break-on-buildd

#> quilt push -a
#> git add debian/
#> rm -rf .pc
#> git add -u

Now let's create the commit and specify, which topgit branches were manually 
merged:

#> TREE=$(git write-tree)

#> COMMIT=$(git commit-tree $TREE \
     -p debian/use-debian-java-libraries \
     -p debian/disable-tests-that-break-on-buildd)

#> git update-ref refs/heads/patches $COMMIT

Now I can happily merge patches into master.

advantages
----------

- The commits of all ever merged topgit branches are preserved, even after tg 
delete

- easy to understand, non cluttered history

- Easy to retire topgit branches

- Easy to work on old package versions(?): just make a branch from master at 
desired version, eventually also branch patches branch to work on old patches

- The quilt patches are used and therefore tested in the same way, as dpkg-
source uses them in version 3

- Integrates with git-buildpackage

- Doesn't need anything, that topgit hasn't ATM

Todo
----

discuss, test, script

Best regards,

Thomas Koch, http://www.koch.ro

             reply	other threads:[~2009-12-16 10:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-16 10:13 Thomas Koch [this message]
2009-12-24 15:14 ` elegant(?) debian topgit workflow? Felipe Contreras
2009-12-24 16:34   ` David Greaves

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=200912161113.38396.thomas@koch.ro \
    --to=thomas@koch.ro \
    --cc=debian-devel@lists.debian.org \
    --cc=git@vger.kernel.org \
    --cc=vcs-pkg-discuss@lists.alioth.debian.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).