3 git-debrebase(1) command line
5 dgit-maint-debrebase(7)
6 someone should set branch.<name>.mergeOptions to include --ff-only ?
8 clean up remains of README
10 arrange for dgit to automatically stitch on push
14 git-debrebase blah [implies start] strips pseudomerge(s)
16 commit / git-debrebase / etc.
19 hook: call git-debrebase prep-push dgit push does not update remote
20 or something, must add patches at least
22 commit / git-debrebase / etc. strips patches
25 hook: call git-debrebase prep-push dgit push DOES update remote
27 commit / git-debrebase / etc. strips last pm, but arranges
28 that remade pm will incorporate it
30 ========================================
34 refs/ffq-prev/REF relates to refs/REF
36 When we strip a pm, we need to maybe record it (or something) as the
41 with no recorded ffq-prev
43 ffq-prev is our current tip
45 obviously it is safe to say we will overwrite this
46 we do check whether there are not-included changes in the remotes
47 because if the new ffq-prev is not ff from the remotes
48 the later pushes will fail
50 this model tends to keep ad-hoc commits made on our
51 tip branch before we did rebase start, in the
52 `interchange view' and also in the rebase stack.
54 also we can explicitly preserve with
57 It is always safe to rewind ffq-prev: all
58 that does is overwrite _less_ stuff.
60 in any case putative ffq-prev must be ff from remote.
61 Otherwise when we push it will not be ff, even though we have
62 made pseudomerge to overwrite ffq-prev. So if we spot
63 this, report an error. see above
65 with a recorded ffq-prev
67 we may need to advance ffq-prev, to allow us to generate
68 future pseudomerges that will be pushable
70 advancing ffq-prev is dangerous, since it might
71 effectively cancel the commits that will-ovewrite is advanced
74 ??? advance it to merge-base( current remote, current tip )
75 if possible (see above), - ie to current remote, subject
76 to the condition that that is an ancestor of current tip
78 currently this is not implemented
80 better maybe to detect divergence ? but it is rather late
83 We check we are ff from remotes before recording new ffq-prev
85 ---------- now follows much the same info in different words ----------
87 N. git-debrebase [--noop-ok] record-ffq-prev
89 does what is described above
91 2. git-debrebase [--noop-ok] stitch
93 makes pseudomerge with ffq-prev
96 we will teach dgit to do
100 following parts are not implemented and maybe aren't the
101 best subcommand names etc.
103 3. git-debrebase push
105 like git push only does stitch first
106 ??? command line parsing!
108 4. git-debrebase release
110 stiches, finalises changelog, signs tags, pushes everything
111 for the future, when there is some automatic builder
113 ========================================
117 what about dgit view branch ?
118 ideally, would make pseudomerge over dgit view
119 would need to check that dgit view is actually dgit view of
121 failing that first push will need --overwrite
122 that is what is currently implemented
124 ========================================
126 how to handle divergence and merges (if not detected soon enough)
129 if merge, look at branches before merge
130 generate new combined branch
131 pseudomerge to overwrite merge
133 current avaiable strategies:
135 maybe launder foreign branch
137 if foreign branch is nmuish, can rebase it onto ours
139 could merge breakwaters (use analyse to find them)
140 merge breakwaters (assuming same upstream)
141 manually construct new patch queue by inspection of
142 the other two patch queues
144 instead of manually constructing patch queue, could use
145 gbp pq export and git merge the patch queues
146 (ie work with interdiffs)
148 if upstreams are different and one is ahead
149 simply treat that as "ours" and
150 do the work to import changes from the other
152 if upstreams have diverged, can
153 resolve somehow to make new upstream
154 do new-upstream on each branch separately
155 now reduced to previously "solved" problem
157 in future, auto patch queue merge algorithm
158 determine next patch to apply
159 there are three versions o..O, l..L, r..R
160 we have already constructed m (previous patch or merged breakwater)
161 try using vector calculus in the implied cube and compute
162 multiple ways to check consistency ?
164 ========================================
166 For downstreams of Debian, sketch of git-ffqrebase
168 # git-ffqrebase start [BASE]
169 # # records previous HEAD so it can be overwritten
170 # # records base for future git-ffqrebase
171 # git-ffqrebase set-base BASE
172 # git-ffqrebase <git-rebase options>
173 # git-ffqrebase finish
174 # git-ffqrebase status [BRANCH]