summaryrefslogtreecommitdiff
path: root/hashmap.c
diff options
context:
space:
mode:
authorLibravatar Johannes Schindelin <johannes.schindelin@gmx.de>2018-05-04 01:01:17 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-05-06 13:21:58 +0900
commitd87d48b2e033e8a8d39afbe7cb5eea331bbe47a6 (patch)
tree3b774e0f02ae33eec7a874f73d863eb14434d958 /hashmap.c
parentsequencer: extract helper to update active_cache_tree (diff)
downloadtgif-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