rethinking patch management with GIT / topgit
martin f krafft
madduck at debian.org
Mon Apr 12 13:59:54 UTC 2010
also sprach Thomas Koch <thomas at koch.ro> [2010.04.12.1538 +0200]:
> I started a prototype in perl yesterday, but it still needs some hours. I'm
> also new to perl so I could need a hand of a perl expert. If you've time, I'd
> also be glad to meet for a hacking session.
> Do you propose a more suitable language for this tool?
I'd use a language you know. If Perl is new to you, then you're in
for a very rough ride.
I also think Perl is for text-processing, but that's just me.
> The merge commits do not intend to replace .topdeps. The intend of the merges
> is solely to not loose commits. .topdeps is replaced by the file "branches"
> shown in my blogpost.
Okay, so no real benefit because to me it doesn't matter where the
file is stored. I was hoping that you'd encode this information into
the DAG.
> > 3. It seems to me that you are proposing to store meta information
> > in plain files in meta branches (cf. .topdeps). If at all
> > possible, I'd say we should avoid touching the worktree
> > altogether, but to design a protocol by which all the information
> > we need is kept in the Git DAG and its objects.
> The worktree won't be touched by my proposal. What makes you think
> that? All changes to the patchset's meta branches are done by the
> toolchain in the background without touching the worktree.
I was thinking the worktree of the meta branch, i.e. the branches
file.
> I've actually started my prototype by copying code from
> pristine-tar. All changes to the pristine-tar branch are made in
> a temporary directory outside the worktree.
Okay, but pristine-tar needs to store non-VCS information, so it
makes sense for that tool.
I'd really prefer to find a way to encode the information we need
for packaging in the tool itself, if at all possible.
> > 4. Rather than a meta branch, if we had a means to store and update
> > information for each branch, we could solve the problem and store
> > .topmsg, as well as the top-bases/* pointer in there.
> > A rudimentary implementation might be using Git notes, e.g.: walk
> > up the ancestry until you find a specially-formatted Git note,
> > and use that as branch meta data store. If the data change, then
> > write a new note to the top-most commit.
> I'm not up to date about GIT notes. Could you point me to a description? As
> far as I've seen, GIT notes is still experimental? Are GIT notes of existing
> commits immutable? That would be required to make sure history won't get lost
> or modified.
man git-notes
No, the notes are not immutable, it seems. The question is whether
the data to be stored therein are worth tracking.
> > 5. It occurs to me that what we want to implement somehow should
> > get rid of .top* files and top-bases/*, and instead allow us to
> > track "commits" at a much higher level. E.g. a branch creation
> > is a commit, updating feature branches is a commit (I see no
> > reason to allow updating of single feature branches
> > independently, but would say either all or none), integrating
> > feature branches is a commit. The way to represent that might be
> > using a meta hierarchy with the merge commits you suggest, but
> > which also keep ancestry.
> Sorry, but I believe you think way to abstract. What I like about
> my proposal is, that it only stores a few bytes of meta
> informations additional to a plain, regular, unspectacular GIT
> repository.
I see the benefit in that, but I am not sure we couldn't take this
further. I'll have to wait for your reference implementation though.
> > 6. One of the main issues I have with TopGit is that it's not really
> > possible to consistently tag a release with all its branches.
> > E.g. you need to tag all branches, and all top-bases at the time
> > of the TopGit tag, which appears brittle itself. If indeed we can
> > find a method where a single commit represents the entire state
> > of a tree+feature branches at a time, and one could generate all
> > kinds of patch formats from it, and even fork the tree with all
> > feature branches from this point, then that would be splendid.
> I guess so. This is one of the main design goals beside the
> ability to have multiple independent patchsets in the same
> repository.
Are you suggesting that the fork of a patchset becomes its own
patchset without shared ancestry of the original?
--
.''`. martin f. krafft <madduck at d.o> Related projects:
: :' : proud Debian developer http://debiansystem.info
`. `'` http://people.debian.org/~madduck http://vcs-pkg.org
`- Debian - when you have better things to do than fixing systems
"never attribute to malice what can be
adequately explained by incompetence."
-- mark twain
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature (see http://martin-krafft.net/gpg/)
URL: <http://lists.alioth.debian.org/pipermail/vcs-pkg-discuss/attachments/20100412/e1b5274d/attachment.pgp>
More information about the vcs-pkg-discuss
mailing list