3 git-debrebase(5) data model
4 git-debrebase(1) command line
6 dgit-maint-debrebase(7)
7 someone should set branch.<name>.mergeOptions to include --ff-only ?
9 clean up remains of README
11 arrange for dgit to automatically stitch on push
15 git-debrebase blah [implies start] strips pseudomerge(s)
17 commit / git-debrebase / etc.
20 hook: call git-debrebase prep-push dgit push does not update remote
21 or something, must add patches at least
23 commit / git-debrebase / etc. strips patches
26 hook: call git-debrebase prep-push dgit push DOES update remote
28 commit / git-debrebase / etc. strips last pm, but arranges
29 that remade pm will incorporate it
31 ========================================
35 refs/ffq-prev/REF relates to refs/REF
37 When we strip a pm, we need to maybe record it (or something) as the
42 with no recorded ffq-prev
44 ffq-prev is our current tip
46 obviously it is safe to say we will overwrite this
47 we do check whether there are not-included changes in the remotes
48 because if the new ffq-prev is not ff from the remotes
49 the later pushes will fail
51 this model tends to keep ad-hoc commits made on our
52 tip branch before we did rebase start, in the
53 `interchange view' and also in the rebase stack.
55 also we can explicitly preserve with
58 It is always safe to rewind ffq-prev: all
59 that does is overwrite _less_ stuff.
61 in any case putative ffq-prev must be ff from remote.
62 Otherwise when we push it will not be ff, even though we have
63 made pseudomerge to overwrite ffq-prev. So if we spot
64 this, report an error. see above
66 with a recorded ffq-prev
68 we may need to advance ffq-prev, to allow us to generate
69 future pseudomerges that will be pushable
71 advancing ffq-prev is dangerous, since it might
72 effectively cancel the commits that will-ovewrite is advanced
75 ??? advance it to merge-base( current remote, current tip )
76 if possible (see above), - ie to current remote, subject
77 to the condition that that is an ancestor of current tip
79 currently this is not implemented
81 better maybe to detect divergence ? but it is rather late
84 We check we are ff from remotes before recording new ffq-prev
86 ---------- now follows much the same info in different words ----------
88 1. git-debrebase [-i etc.]
92 if is already a ffq-prev, fine, do no more
95 check our origin branch exists and we are ff from it
98 check our other might-be-pushed to branches
99 check we are ff from them
102 set ffq-prev to something which is ff from
105 we use our tip, as discussed above
106 (optionally, can use some other commit which is ff
107 from all of the above, eg one of them)
109 N. git-debrebase [--noop-ok] record-ffq-prev
111 does what is described above
113 2. git-debrebase [--noop-ok] stitch
115 makes pseudomerge with ffq-prev
118 we will teach dgit to do
122 following parts are not implemented and maybe aren't the
123 best subcommand names etc.
125 3. git-debrebase push
127 like git push only does stitch first
128 ??? command line parsing!
130 4. git-debrebase release
132 stiches, finalises changelog, signs tags, pushes everything
133 for the future, when there is some automatic builder
135 ========================================
139 what about dgit view branch ?
140 ideally, would make pseudomerge over dgit view
141 would need to check that dgit view is actually dgit view of
143 failing that first push will need --overwrite
144 that is what is currently implemented
146 ========================================
148 how to handle divergence and merges (if not detected soon enough)
151 if merge, look at branches before merge
152 generate new combined branch
153 pseudomerge to overwrite merge
155 current avaiable strategies:
157 maybe launder foreign branch
159 if foreign branch is nmuish, can rebase it onto ours
161 could merge breakwaters (use analyse to find them)
162 merge breakwaters (assuming same upstream)
163 manually construct new patch queue by inspection of
164 the other two patch queues
166 instead of manually constructing patch queue, could use
167 gbp pq export and git merge the patch queues
168 (ie work with interdiffs)
170 if upstreams are different and one is ahead
171 simply treat that as "ours" and
172 do the work to import changes from the other
174 if upstreams have diverged, can
175 resolve somehow to make new upstream
176 do new-upstream on each branch separately
177 now reduced to previously "solved" problem
179 in future, auto patch queue merge algorithm
180 determine next patch to apply
181 there are three versions o..O, l..L, r..R
182 we have already constructed m (previous patch or merged breakwater)
183 try using vector calculus in the implied cube and compute
184 multiple ways to check consistency ?
186 ========================================
188 For downstreams of Debian, sketch of git-ffqrebase
190 # git-ffqrebase start [BASE]
191 # # records previous HEAD so it can be overwritten
192 # # records base for future git-ffqrebase
193 # git-ffqrebase set-base BASE
194 # git-ffqrebase <git-rebase options>
195 # git-ffqrebase finish
196 # git-ffqrebase status [BRANCH]