From: Igor Djordjevic <igor.d.djordjevic@gmail.com> To: Sergey Organov <sorganov@gmail.com>, Phillip Wood <phillip.wood@talktalk.net> Cc: phillip.wood@dunelm.org.uk, Git mailing list <git@vger.kernel.org>, Jacob Keller <jacob.keller@gmail.com>, Johannes Schindelin <Johannes.Schindelin@gmx.de>, Johannes Sixt <j6t@kdbg.org>, Junio C Hamano <gitster@pobox.com> Subject: Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear) Date: Wed, 14 Mar 2018 02:12:28 +0100 Message-ID: <3f2209e0-c560-5384-c589-3aa83615d688@gmail.com> (raw) In-Reply-To: <877eqgardi.fsf@javad.com> Hi Sergey, On 13/03/2018 17:10, Sergey Organov wrote: > > > Hi Sergey, I've been following this discussion from the sidelines, > > though I haven't had time to study all the posts in this thread in > > detail. I wonder if it would be helpful to think of rebasing a merge as > > merging the changes in the parents due to the rebase back into the > > original merge. So for a merge M with parents A B C that are rebased to > > A' B' C' the rebased merge M' would be constructed by (ignoring shell > > quoting issues) > > > > git checkout --detach M > > git merge-recursive A -- M A' > > tree=$(git write-tree) > > git merge-recursive B -- $tree B' > > tree=$(git write-tree) > > git merge-recursive C -- $tree C' > > tree=$(git write-tree) > > M'=$(git log --pretty=%B -1 M | git commit-tree -pA' -pB' -pC') > > I wonder if it's OK to exchange the order of heads in the first merge > (also dropped C for brevity): It should be, being "left" or "right" hand side ("theirs" or "ours") of the three-way merge shouldn`t matter, they`re still both equally compared to the merge-base. > git checkout --detach A' > git merge-recursive A -- A' M > tree=$(git write-tree) > git merge-recursive B -- $tree B' > tree=$(git write-tree) > M'=$(git log --pretty=%B -1 M | git commit-tree -pA' -pB') > > If so, don't the first 2 lines now read: "rebase (first parent of) M on > top of A'"? Hmm, lol, yes...? :) So basically, this: (1) git checkout --detach M git merge-recursive A -- M A' tree=$(git write-tree) ... ... is equivalent to this: (2) git checkout --detach A' git merge-recursive A -- A' M tree=$(git write-tree) ... ..., being equivalent to this: (3) git checkout --detach A' git cherry-pick -m 1 M tree=$(git write-tree) ... ..., where in all three cases that `$tree` is equivalent to U1' we discussed about so much already :) I tested it like this as well, slightly modifying previously sent out script (like this one[1]), and it still seems to be working ;) Nice! > If so, then it could be implemented so that it reduces back to regular > rebase of non-merges when applied to a single-parent commit, similar to > the method in the RFC, striking out one of advantages of the RFC. I guess so, but I think it now boils down only to what one finds easier to reason about even more. I`m just glad we got to U1' from this perspective as well, hopefully adding even more faith in the overall concept, being beaten from both ends and dropping out to be the same (minus minor implementation details). Regards, Buga [1] https://public-inbox.org/git/872944c4-ca97-9f55-a424-86d1e3299a22@gmail.com/
next prev parent reply index Thread overview: 173+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-16 13:08 Sergey Organov 2018-02-18 4:16 ` Jacob Keller 2018-02-19 5:28 ` Sergey Organov 2018-02-19 23:44 ` Igor Djordjevic 2018-02-20 12:42 ` Sergey Organov 2018-02-27 0:07 ` Johannes Schindelin 2018-02-27 5:01 ` Sergey Organov 2018-02-27 5:30 ` Jacob Keller 2018-02-27 16:21 ` Johannes Schindelin 2018-02-27 18:55 ` Igor Djordjevic 2018-02-27 19:59 ` Igor Djordjevic 2018-02-27 23:27 ` Johannes Schindelin 2018-02-28 2:12 ` Igor Djordjevic 2018-02-28 4:35 ` Igor Djordjevic 2018-02-28 6:14 ` Sergey Organov 2018-02-28 20:53 ` Igor Djordjevic 2018-02-28 5:44 ` Sergey Organov 2018-02-28 19:42 ` Igor Djordjevic 2018-02-27 23:40 ` Igor Djordjevic 2018-02-28 0:10 ` Junio C Hamano 2018-02-28 2:35 ` Igor Djordjevic 2018-02-28 5:27 ` Sergey Organov 2018-02-28 0:36 ` Jacob Keller 2018-02-28 1:33 ` Igor Djordjevic 2018-02-28 1:43 ` Igor Djordjevic 2018-02-28 5:21 ` Sergey Organov 2018-02-28 19:09 ` Igor Djordjevic 2018-03-01 5:27 ` Sergey Organov 2018-02-28 5:19 ` Sergey Organov 2018-02-28 20:25 ` Igor Djordjevic 2018-02-28 22:17 ` Igor Djordjevic 2018-03-01 5:19 ` Sergey Organov 2018-03-01 5:39 ` Sergey Organov 2018-03-02 1:16 ` Igor Djordjevic 2018-03-02 5:40 ` Sergey Organov 2018-03-02 17:45 ` Igor Djordjevic 2018-03-02 11:17 ` [RFC] Rebasing merges: a jorney to the ultimate solution(RoadClear) Phillip Wood 2018-03-02 12:36 ` Phillip Wood 2018-03-02 16:02 ` Jacob Keller 2018-03-02 23:33 ` Igor Djordjevic 2018-03-06 10:36 ` Phillip Wood 2018-03-06 18:12 ` Johannes Schindelin 2018-03-06 19:43 ` Igor Djordjevic 2018-03-07 7:26 ` Johannes Schindelin 2018-03-08 11:20 ` Phillip Wood 2018-03-08 12:16 ` Phillip Wood 2018-03-08 16:05 ` Igor Djordjevic 2018-03-11 12:00 ` Johannes Schindelin 2018-03-11 16:33 ` Igor Djordjevic 2018-03-12 10:37 ` Johannes Schindelin 2018-03-12 12:56 ` Sergey Organov 2018-03-13 0:01 ` Igor Djordjevic 2018-03-26 12:03 ` Johannes Schindelin 2018-03-27 5:08 ` Sergey Organov 2018-03-27 13:35 ` Johannes Schindelin 2018-04-02 6:07 ` Sergey Organov 2018-03-12 23:54 ` Igor Djordjevic 2018-03-13 6:25 ` Sergey Organov 2018-03-08 15:56 ` Igor Djordjevic 2018-03-11 12:08 ` Johannes Schindelin 2018-03-11 17:34 ` Igor Djordjevic 2018-03-12 10:46 ` Johannes Schindelin 2018-03-13 0:16 ` Igor Djordjevic 2018-03-26 13:07 ` Johannes Schindelin 2018-03-27 5:51 ` Sergey Organov 2018-03-27 13:49 ` Johannes Schindelin 2018-03-28 5:57 ` Sergey Organov 2018-03-30 13:41 ` Johannes Schindelin 2018-03-30 16:36 ` Sergey Organov 2018-03-28 5:57 ` Sergey Organov [not found] ` <CA+P7+xoDQ2mzhxeZPFhaY+TaSoKkQm=5AtoduHH06-VggOJ2jg@mail.gmail.com> 2018-03-28 11:29 ` Sergey Organov [not found] ` <CA+P7+xo19mHrWz9Fy-ifgCcVJM2xwzcLj7F2NvFe2LwGbaJiDQ@mail.gmail.com> 2018-03-29 5:53 ` Sergey Organov 2018-03-30 10:38 ` Johannes Schindelin 2018-03-30 12:36 ` Sergey Organov 2018-03-30 13:33 ` Johannes Schindelin 2018-03-30 15:13 ` Sergey Organov 2018-03-28 12:10 ` Sergey Organov 2018-03-08 16:07 ` Jacob Keller 2018-03-11 12:11 ` Johannes Schindelin 2018-03-11 17:46 ` Igor Djordjevic 2018-03-08 15:16 ` Igor Djordjevic 2018-03-08 16:21 ` Igor Djordjevic 2018-03-11 12:22 ` Johannes Schindelin 2018-03-14 14:24 ` Sergey Organov 2018-03-14 23:11 ` Igor Djordjevic 2018-03-15 6:00 ` Sergey Organov 2018-03-15 21:51 ` Igor Djordjevic 2018-03-17 2:08 ` Igor Djordjevic 2018-03-19 5:44 ` Sergey Organov 2018-03-19 21:35 ` Igor Djordjevic 2018-03-20 14:43 ` Sergey Organov 2018-03-26 13:47 ` Johannes Schindelin 2018-03-06 23:24 ` Junio C Hamano 2018-03-07 7:09 ` Johannes Schindelin 2018-03-07 18:20 ` Junio C Hamano 2018-03-08 7:03 ` Johannes Schindelin 2018-03-08 8:11 ` Junio C Hamano 2018-03-09 17:09 ` Johannes Schindelin 2018-03-02 16:00 ` Jacob Keller 2018-03-02 18:14 ` Igor Djordjevic 2018-03-03 17:29 ` Igor Djordjevic 2018-03-05 5:35 ` Sergey Organov 2018-03-02 11:31 ` [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear) Phillip Wood 2018-03-03 0:29 ` Igor Djordjevic 2018-03-05 5:00 ` Sergey Organov 2018-03-06 10:52 ` Phillip Wood 2018-03-06 16:56 ` Junio C Hamano 2018-03-08 7:05 ` Johannes Schindelin 2018-03-08 8:18 ` Junio C Hamano 2018-03-11 11:56 ` Johannes Schindelin 2018-03-13 18:24 ` Junio C Hamano 2018-03-26 13:17 ` Johannes Schindelin 2018-03-05 17:29 ` Johannes Schindelin 2018-03-06 23:21 ` Igor Djordjevic 2018-03-07 7:04 ` Johannes Schindelin 2018-03-06 10:45 ` Phillip Wood 2018-03-06 11:45 ` Sergey Organov 2018-03-08 16:30 ` Igor Djordjevic 2018-03-06 18:12 ` Johannes Schindelin 2018-03-07 5:08 ` Sergey Organov 2018-03-07 6:58 ` Johannes Schindelin 2018-03-07 14:34 ` Sergey Organov 2018-03-08 6:45 ` Johannes Schindelin 2018-03-12 12:31 ` Sergey Organov 2018-03-26 11:37 ` Johannes Schindelin 2018-03-27 5:11 ` Sergey Organov 2018-03-27 12:55 ` Johannes Schindelin 2018-03-28 4:32 ` Sergey Organov 2018-03-08 11:08 ` Phillip Wood 2018-03-05 17:52 ` Johannes Schindelin 2018-03-13 16:10 ` Sergey Organov 2018-03-14 1:12 ` Igor Djordjevic [this message] 2018-03-14 7:21 ` Sergey Organov 2018-03-15 0:09 ` Igor Djordjevic 2018-03-15 7:52 ` Sergey Organov 2018-03-15 23:08 ` Igor Djordjevic 2018-03-16 7:31 ` Sergey Organov 2018-03-17 3:04 ` Igor Djordjevic 2018-03-19 6:01 ` Sergey Organov 2018-03-26 14:11 ` Johannes Schindelin 2018-02-28 0:29 ` Jacob Keller 2018-02-27 11:57 ` Sergey Organov 2018-02-27 18:14 ` Junio C Hamano 2018-02-28 0:30 ` Jacob Keller 2018-02-28 5:54 ` Sergey Organov 2018-02-28 4:53 ` Sergey Organov 2018-03-06 13:26 ` [RFC v2] " Sergey Organov 2018-03-07 6:46 ` Johannes Schindelin 2018-03-07 13:27 ` Sergey Organov 2018-03-07 14:08 ` Johannes Schindelin 2018-03-07 15:16 ` Sergey Organov 2018-03-08 7:01 ` Johannes Schindelin 2018-03-12 12:42 ` Sergey Organov 2018-03-26 11:50 ` Johannes Schindelin 2018-03-08 19:58 ` Igor Djordjevic 2018-03-08 20:27 ` Igor Djordjevic 2018-03-08 22:05 ` Igor Djordjevic 2018-03-08 23:31 ` Igor Djordjevic 2018-03-11 15:47 ` Johannes Schindelin 2018-03-11 20:53 ` Igor Djordjevic 2018-03-12 10:20 ` Johannes Schindelin 2018-03-12 13:49 ` Sergey Organov 2018-03-26 12:44 ` Johannes Schindelin 2018-03-27 5:32 ` Sergey Organov 2018-03-13 0:29 ` Igor Djordjevic 2018-03-26 13:58 ` Johannes Schindelin 2018-03-12 13:07 ` Sergey Organov 2018-03-11 15:40 ` Johannes Schindelin 2018-03-11 22:04 ` Igor Djordjevic 2018-03-12 12:05 ` Sergey Organov 2018-03-26 11:33 ` Johannes Schindelin 2018-03-27 5:34 ` Sergey Organov 2018-03-12 22:41 ` Igor Djordjevic
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=3f2209e0-c560-5384-c589-3aa83615d688@gmail.com \ --to=igor.d.djordjevic@gmail.com \ --cc=Johannes.Schindelin@gmx.de \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=j6t@kdbg.org \ --cc=jacob.keller@gmail.com \ --cc=phillip.wood@dunelm.org.uk \ --cc=phillip.wood@talktalk.net \ --cc=sorganov@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org list mirror (unofficial, one of many) Archives are clonable: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git Example config snippet for mirrors Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.org/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ AGPL code for this site: git clone https://public-inbox.org/public-inbox.git