From: Thomas Koch <thomas@koch.ro>
To: git@vger.kernel.org, vcs-pkg-discuss@lists.alioth.debian.org
Subject: rethinking patch management with GIT / topgit
Date: Sat, 20 Mar 2010 18:02:51 +0100 [thread overview]
Message-ID: <201003201802.51129.thomas@koch.ro> (raw)
Hi,
I'd like to argue, that topgit (tg) fails to fullfill it's task and propose a
different approach to the problem of patch management on top of git.
IMHO tg fails due to the following reasons:
- it's to complicate
- AFAIK nobody has solved the problem of managing different patchsets with tg
- it pollutes the patch branches with metadata (.topmsg, .topdeps)
- even after 1 1/2 years topgit isn't feature complete and development seems
to stagnate
- there also aren't best practices documented
- it quickly fills the list of branches
- it's very easy to break something
Although the above is quite a harsh judgement, I'd like to note, that tg has
had its merrit to promote one right idea: Patches should be managed in the
form of branches by the means of the underlying VCS and not as simple
patchfiles.
The new approach I'd like to propose is based on two core ideas:
1) merge commits to save history
git allows the free creation of merge commits with an arbitrary content tree.
So we can create an octupus merge combining all patch-branches while the
content of this merge can contain meta data about a patchset instead of the
content of the merged commits.
Such a merge commit thus provides a pointer to all the history of all patches
and can contain all metadata about the merged patch branches. Pushing only a
branch or tag with this commit to a central repository thus pushes all the
history of all contained patches.
2) collapse / expand branches
Managing a Debian package in stable, unstable and experimental can quickly
doom you to manage at least three different patchsets with possibly three
different roots. The list of branches grows in the douzens. Which branches
belong to which patchset? Which branches are already pushed or pulled?
It may be an advantage to see only some main branches and the branches of one
patchset I'm currently working on.
The tool I propose would manage each patchset in one branch per patchset. This
branch has two roles:
- keep the metadata of the patchset as files in the content tree
- keep pointers to the top of the patch-branches in the parent pointers of the
commit
With the help of such a patchset-metadata-branch I can:
- delete the patch-branches of one patchset while the commits are kept save
- recreate the patch-branches of one patchset
For Debian packaging one last function is needed: export a patchset as quilt
series.
Is my explanation understandable? Could this approach work or did I miss
something? Who has time to implement it (GSOC?)?
Best regards,
Thomas Koch, http://www.koch.ro
next reply other threads:[~2010-03-20 17:30 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-20 17:02 Thomas Koch [this message]
2010-03-20 17:47 ` rethinking patch management with GIT / topgit Petr Baudis
2010-03-20 18:53 ` Thomas Koch
[not found] ` <201003201953.34666.thomas-5j3myg3OO4w@public.gmane.org>
2010-03-21 20:36 ` Petr Baudis
2010-03-22 7:59 ` Thomas Koch
2010-03-22 19:30 ` Petr Baudis
2010-03-23 8:09 ` Thomas Koch
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=201003201802.51129.thomas@koch.ro \
--to=thomas@koch.ro \
--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).