-From: Ian Jackson <ijackson@chiark.greenend.org.uk>
-To: Sean Whitton <spwhitton@spwhitton.name>
-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 <ijackson@chiark.greenend.org.uk> 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
+--------------------