]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin rebase: require a clean worktree
authorPratik Karki <predatoramigo@gmail.com>
Tue, 4 Sep 2018 21:27:14 +0000 (14:27 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Sep 2018 18:55:43 +0000 (11:55 -0700)
This commit reads the index of the repository for rebase and checks
whether the repository is ready for rebase.

Signed-off-by: Pratik Karki <predatoramigo@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rebase.c

index 2d3f1d65fb5e1cf7d1c6e4853ea6c4db324be4e9..afef0b00462239cc95e8de475407ad6ec2266fe7 100644 (file)
@@ -19,6 +19,7 @@
 #include "parse-options.h"
 #include "commit.h"
 #include "diff.h"
+#include "wt-status.h"
 
 static char const * const builtin_rebase_usage[] = {
        N_("git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] "
@@ -479,6 +480,15 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                        die(_("Could not resolve HEAD to a revision"));
        }
 
+       if (read_index(the_repository->index) < 0)
+               die(_("could not read index"));
+
+       if (require_clean_work_tree("rebase",
+                                   _("Please commit or stash them."), 1, 1)) {
+               ret = 1;
+               goto cleanup;
+       }
+
        /* If a hook exists, give it a chance to interrupt*/
        if (!ok_to_skip_pre_rebase &&
            run_hook_le(NULL, "pre-rebase", options.upstream_arg,
@@ -528,6 +538,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 
        ret = !!run_specific_rebase(&options);
 
+cleanup:
        strbuf_release(&revisions);
        free(options.head_name);
        return ret;