On 9/10/06, Marco Costalba <mcostalba@xxxxxxxxx> wrote:
On 9/10/06, Junio C Hamano <junkio@xxxxxxx> wrote: > "Marco Costalba" <mcostalba@xxxxxxxxx> writes: > > > On 9/9/06, Linus Torvalds <torvalds@xxxxxxxx> wrote: > >> > >> The example is > >> > >> A <--- tip of branch > >> / \ > >> B E > >> | | > >> | F > >> | / > >> C > >> | > >> D > >> ... > >> > > > > Ok now it' clear, thanks. But anyhow I think that it should be > > possible to avoid the check and reordering on the receiver side. > > > > Suppose for a moment to split the graph drawing from the sequence > > reordering problem, suppose for a moment that receiver does do not > > draw the graph immediately. > > > > As you described, in our case git-rev-list sends the following sequence: > > A, B, C, D, E, F > > > > instead git-rev-list --topo-order would have sent something like > > A, E, F, B, C, D > > > > Now I ask, is it possible to have a sequence (without latency) like > > A, B, C, D, (-3)E, (-3)F > > > > where, in case of not topological correct revisions, git-rev-list > > gives the hint on the correct position in sequence (3 revs before in > > our case) where the revision would have been if the sequence would > > have been --topo-order ? > > When rev-list is writing E out, it does not know it is a > descendant of something it already emitted (i.e. C) because it > hasn't looked at F nor checked its parent yet. So asking for > (-3)F may be fine but I think (-3)E is just a fantasy. > Ok. What about something like this? A, B, C, D, E, (-3, 1)F where -3 is the correct position in sequence and 1 is the number of revisions before F to whom apply the -3 rule.
Suppose git-rev-list gives: A, B, H, C, D, E, F, G, I, L, M, N Suppose git-rev-list --topo-order would have sent A, B, C, D, E, F, G, H, I, L, M, N Perhaps a more general fixup syntax could be: A,B, H, C, D, E, F, G, I(6, C, D, E, F, G, H), L, M, N Where 6 is the number of previous revisions to rearrange with the corresponding correct sequence(C, D, E, F, G, H). Note that the same subset could be rearranged multiple times if it helps git-rev-list parsing, as example it should be possible to have something like: A,B, H, C, D, E, F, G, I(6, C, D, E, F, G, H), L, M(3, L, G, H), N Marco - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html