All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2 0/1] Teach the builtin rebase about the builtin interactive rebase
Date: Wed, 29 Aug 2018 07:31:15 -0700 (PDT)	[thread overview]
Message-ID: <pull.23.v2.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.23.git.gitgitgadget@gmail.com>

The builtin rebase and the builtin interactive rebase have been developed
independently, on purpose: Google Summer of Code rules specifically state
that students have to work on independent projects, they cannot collaborate
on the same project.

The reason is probably the very fine tradition in academia to prohibit
teamwork, which makes grading easier (at the expense of not exactly
preparing the students for the real world, unless they want to stay in
academia).

One fallout is that the rebase-in-c and rebase-i-in-c patches cause no merge
conflicts but a royal number of tests in the test suite to fail.

It is easy to explain why: rebase-in-c was developed under the assumption
that all rebase backends are implemented in Unix shell script and can be
sourced via . git-rebase--<backend>, which is no longer true with 
rebase-i-in-c, where git-rebase--interactive is a hard-linked builtin.

This patch fixes that.

Note: while this patch targets pk/rebase-in-c-6-final, it will not work
correctly without ag/rebase-i-in-c. So my suggestion is to rewrite the 
pk/rebas-in-c-6-final branch by first merging ag/rebase-i-in-c, then
applying this here patch, and only then cherry-pick "rebase: default to
using the builtin rebase".

Changes since v1:

 * replaced the too-terse commit message by a copy-edited version of this
   cover letter (leaving out only the rant about disallowing teamwork).

Johannes Schindelin (1):
  builtin rebase: prepare for builtin rebase -i

 builtin/rebase.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)


base-commit: ae497a044508ebaac1794dcdd7ad04f8685686b2
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-23%2Fdscho%2Frebase-in-c-6-final-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-23/dscho/rebase-in-c-6-final-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/23

Range-diff vs v1:

 1:  29d49819fa ! 1:  5403014be7 builtin rebase: prepare for builtin rebase -i
     @@ -2,8 +2,21 @@
      
          builtin rebase: prepare for builtin rebase -i
      
     -    It is no longer a shell script, so we need to call it in a different way
     -    than the other backends.
     +    The builtin rebase and the builtin interactive rebase have been
     +    developed independently, on purpose: Google Summer of Code rules
     +    specifically state that students have to work on independent projects,
     +    they cannot collaborate on the same project.
     +
     +    One fallout is that the rebase-in-c and rebase-i-in-c patches cause no
     +    merge conflicts but a royal number of tests in the test suite to fail.
     +
     +    It is easy to explain why: rebase-in-c was developed under the
     +    assumption that all rebase backends are implemented in Unix shell script
     +    and can be sourced via `. git-rebase--<backend>`, which is no longer
     +    true with rebase-i-in-c, where git-rebase--interactive is a hard-linked
     +    builtin.
     +
     +    This patch fixes that.
      
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      

-- 
gitgitgadget

  parent reply	other threads:[~2018-08-29 14:31 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-22 21:35 [PATCH 0/1] Teach the builtin rebase about the builtin interactive rebase Johannes Schindelin via GitGitGadget
2018-08-22 21:35 ` [PATCH 1/1] builtin rebase: prepare for builtin rebase -i Johannes Schindelin via GitGitGadget
2018-08-22 21:50 ` [PATCH 0/1] Teach the builtin rebase about the builtin interactive rebase Junio C Hamano
2018-08-23  2:48 ` Jonathan Nieder
2018-08-25 23:46   ` Johannes Schindelin
2018-08-27 17:48     ` Junio C Hamano
2018-08-28 12:53       ` Johannes Schindelin
2018-08-28 15:34         ` Junio C Hamano
2018-08-29 13:24           ` Johannes Schindelin
2018-08-28 17:17         ` Jonathan Nieder
2018-08-29 14:29           ` Johannes Schindelin
2018-08-29 14:31 ` Johannes Schindelin via GitGitGadget [this message]
2018-08-29 14:31   ` [PATCH v2 1/1] builtin rebase: prepare for builtin rebase -i Johannes Schindelin via GitGitGadget
2018-08-29 22:40     ` Junio C Hamano
2018-08-30 11:03       ` Johannes Schindelin
2018-08-30 20:09         ` Jeff King
2018-08-31 20:38           ` Johannes Schindelin
2018-08-31 20:48             ` Jeff King
2018-10-05 15:54   ` [PATCH v3 0/1] Teach the builtin rebase about the builtin interactive rebase Johannes Schindelin via GitGitGadget
2018-10-05 15:54     ` [PATCH v3 1/1] builtin rebase: prepare for builtin rebase -i Johannes Schindelin via GitGitGadget
2018-10-06 23:50     ` [PATCH v3 0/1] Teach the builtin rebase about the builtin interactive rebase Junio C Hamano
2018-10-12  7:59       ` Johannes Schindelin

Reply instructions:

You may reply publicly 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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.23.v2.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.