X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=README.git-debrebase;h=19ddbc05863d5fa3231b8494a6d3dbacce4a0dff;hp=ba00951dc8b2aae34ce39e1e1ed740ca8cd6ff30;hb=47e5e2edc83917f5e21e00586a0907c1f641f174;hpb=ac6f8cf1df126cf79e08d431932b76cec83f443a diff --git a/README.git-debrebase b/README.git-debrebase index ba00951d..19ddbc05 100644 --- a/README.git-debrebase +++ b/README.git-debrebase @@ -1,57 +1,5 @@ -My preferred answer is that it is a constantly rebasing branch topped -with a series of pseudomerges to make it fast-forwarding. - - ------/--A!----/--B3!--%--/--> interchange view - / / / with debian/ directory - % % % all upstream changes applied - / / / 3.0 (quilt) has debian/patches - / / 3* - / / / - 2* 2* 2 - / / / - 1 1 1 `breakwater' branch, merging baseline - / / / unmodified upstream code - ---@-----@--A----@--B--C plus debian/ (but no debian/patches) - / / / no ref refers to this: we - --#-----#-------#-----> upstream reconstruct its identity by - inspecting interchange branch - Key: - - 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 - - -@- anchor merge, takes contents of debian/ from the - / previous `breakwater' commit and rest from upstream - - -/- 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'.) - - ! NMUer's HEAD was here when they said `dgit push'. - Rebase branch launderer turns each ! into an - equivalent *. - - -Looking from the tip of the interchange view, it is I think always -possible to classify these commits appropriately: pseudomerges are -fairly obvious (if all three trees are identical, we descend to the -parent with the most recent commit date). The `@' special merge is -the only non-pseudo merge and has a special form; also, it will be -generated only by our tools so can have an annotation in the commit -message. - 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: @@ -83,18 +31,6 @@ take (for example) B4, above, and be able to perform functions like: Maybe some of these operations should automatically edit debian/changelog. -Nonlinear (merging) history in the interchange branch is awkward -because it (obviously) does not preserve the patch queue. - -Nonlinear (merging) history in the `packaging-only' branch is OK, if -we could generate it. We will use the commit message annotation to -distinguish a merge of two `packaging-only' branches from the special -merge `@'. (Indeed I since upstream might copy debian/ from us, -without the annotation and knowledge of the construction order it is -not easy to reliably distinguish the two parents of a `@'. In the -most exciting edge case, upstream might `git merge' a previous -instance of our interchange view, but I think even then everything -still works.) Sean Whitton writes ("Re: Feedback on 3.0 source format problems"): > Does the [breakwater] branch contain debian/ alone?