X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=README.git-debrebase;h=12e2a65c6bedf4840d3a5b0d896648a2e10a531c;hp=8dcb0df4d165b641d070c1b2c2bfd2be393e8e2f;hb=1152570de57130d5b32e8edfa10af1bbc892f2a0;hpb=d0a2fee062d2c79e9019fdebd96796d8b3ad6d5f diff --git a/README.git-debrebase b/README.git-debrebase index 8dcb0df4..12e2a65c 100644 --- a/README.git-debrebase +++ b/README.git-debrebase @@ -1,78 +1,48 @@ -From: Ian Jackson -To: Sean Whitton -Cc: debian-devel@lists.debian.org -Subject: Re: Feedback on 3.0 source format problems -Date: Fri, 6 Jan 2017 15:29:38 +0000 -Sean Whitton writes ("Re: Feedback on 3.0 source format problems"): -> Could you explain in general terms the difference between the -> interchange and packaging-only branches - -See modified diagram below. Are the annotations I have added (and the -name change) any help ? - -> Does the packaging-only branch contain debian/ alone? -No, it also contains a complete unmodified copy of the upstream code. -(Except that if upstream had a debian/ directory, it is completely -replaced.) Perhaps this is the wrong name. Let's try -`merging-baseline' +So it would be possible to write a `git-debrebase' tool which would +take (for example) B4, above, and be able to perform functions like: -For `3.0 (quilt)' the merging-baseline branch contains roughly what -you would get if you untarred the origs and the debian.tar.gz, and -then deleted all the patches without applying them. + * Strip pseudomerges: Rewrite the current branch so it contains no + pseudomerges, turning ...B3 into ...@-A-1-2-B3. (This should + make a note, in your .git/ somewhere, of the original branch + tip so that it can be overwritten with a pseudomerge.) -Not shown on the diagram is the commit `add patch queue to -debian/patches', which would be needed for `3.0 (quilt)'. This is -because the diagram is in terms of a sane source format, not `3.0 -(quilt)'. For use with quilty sources, there would be such a commit -(probably dgit-generated) on top of the actual upstream change -commits: + * Cleanup branch: Reorganise the current branch so that the debian/ + changes come first, turning -@-A-1-2-B3 into ...@-A-B-1-2-3. - ------/--A!----/--B3!--%--/--> interchange view - / / / with debian/ directory - % % % all upstream changes applied - / / / 3.0 (quilt) has debian/patches - / 2* 2* - / / / - 2* 2 2 - / / / - 1 1 1 `merging-baseline' branch - / / / unmodified upstream code - ---p-----p--A----p--B--C--> plus debian/ (but no debian/patches) - / / / - --#-----#-------#-----> upstream + * New upstream rebase: Start rebasing onto a new upstream version, + turning ...#..@-A-B-1-2-3 into (...#..@-A-B-|...#'-)@'-1-2. This + would be a wrapper around git-rebase, which prepares @' and then + tries to rebase 1 2 onto @'. So if you ask for an interactive + rebase @' doesn't appear in your commit list. - Key: + Note that the construction of @' cannot fail because @' simply + copies debian/ from B and and everything else from #'. (Rebasing A + and B is undesirable. We want the debian/ files to be non-rebasing + so we can `git log' and get the packaging history.) - 1,2,3 commits touching upstream files only - A,B,C commits touching debian/ only - B3 mixed commit (eg made by an NMUer) - # upstream releases + * Record pseudomerge. This is like "committing" your patch queue. + The LH parent is taken from the previously recorded tip. (We could + perhaps check that this is consistent with what we see in + debian/changelog, but that is not a sufficient check so the + recorded tip check is primary.) - -p- special merge, takes contents of debian/ from the - / previous `merging-baseline' commit and rest from upstream +Maybe some of these operations should automatically edit +debian/changelog. - -/- pseudomerge; contents are identical to - / parent lower on diagram. - % dgit-generated commit of debian/patches. - `3.0 (quilt)' only; dropped by rebase tool. - - * Maintainer's HEAD was here while they were editing, - before they said they were done, at which point their - tools generated [% and] -/- commit[s] to convert to - the fast-forwarding interchange branch. (Maybe the - tooling is simply `dgit push'.) +Sean Whitton writes ("Re: Feedback on 3.0 source format problems"): +> Does the [breakwater] branch contain debian/ alone? - ! NMUer's HEAD was here when they said `dgit push'. - Rebase branch launderer turns each ! into an - equivalent *. +No, it also contains a complete unmodified copy of the upstream code. +(Except that if upstream had a debian/ directory, it is completely +replaced.) -Ian. +For `3.0 (quilt)' the breakwater branch contains roughly what you +would get if you untarred the origs and the debian.tar.gz, and then +deleted all the patches without applying them. --- -Ian Jackson These opinions are my own. -If I emailed you from an address @fyvzl.net or @evade.org.uk, that is -a private address which bypasses my fierce spamfilter. +dgit import handling +--------------------