diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2018-05-04 01:01:17 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-05-06 13:21:58 +0900 |
commit | d87d48b2e033e8a8d39afbe7cb5eea331bbe47a6 (patch) | |
tree | 3b774e0f02ae33eec7a874f73d863eb14434d958 /hashmap.c | |
parent | sequencer: extract helper to update active_cache_tree (diff) | |
download | tgif-d87d48b2e033e8a8d39afbe7cb5eea331bbe47a6.tar.xz |
sequencer: learn about the special "fake root commit" handling
When an interactive rebase wants to recreate a root commit, it
- first creates a new, empty root commit,
- checks it out,
- converts the next `pick` command so that it amends the empty root
commit
Introduce support in the sequencer to handle such an empty root commit,
by looking for the file <GIT_DIR>/rebase-merge/squash-onto; if it exists
and contains a commit name, the sequencer will compare the HEAD to said
root commit, and if identical, a new root commit will be created.
While converting scripted code into proper, portable C, we also do away
with the old "amend with an empty commit message, then cherry-pick
without committing, then amend again" dance and replace it with code
that uses the internal API properly to do exactly what we want: create a
new root commit.
To keep the implementation simple, we always spawn `git commit` to create
new root commits.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'hashmap.c')
0 files changed, 0 insertions, 0 deletions