Skip to content
  • yohoho hahhahah's avatar
    rebase: start implementing it as a builtin · 55071ea2
    yohoho hahhahah authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    This commit imitates the strategy that was used to convert the
    difftool to a builtin. We start by renaming the shell script
    `git-rebase.sh` to `git-legacy-rebase.sh` and introduce a
    `builtin/rebase.c` that simply executes the shell script version,
    unless the config setting `rebase.useBuiltin` is set to `true`.
    
    The motivation behind this is to rewrite all the functionality of the
    shell script version in the aforementioned `rebase.c`, one by one and
    be able to conveniently test new features by configuring
    `rebase.useBuiltin`.
    
    In the original difftool conversion, if sane_execvp() that attempts to
    run the legacy scripted version returned with non-negative status, the
    command silently exited without doing anything with success, but
    sane_execvp() should not return with non-negative status in the first
    place, so we use die() to notice such an abnormal case.
    
    We intentionally avoid reading the config directly to avoid
    messing up the GIT_* environment variables when we need to fall back to
    exec()ing the shell script. The test of builtin rebase can be done by
    `git -c rebase.useBuiltin=true rebase ...`
    
    Signed-off-by: default avatarPratik Karki <predatoramigo@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    55071ea2