wt-status.c: remove implicit dependency on the_index
[gitweb.git] / builtin / rebase.c
index 313a8263dfc476fa7f6a8d8379fab0965ec5ca1f..b9eb9584542bc9e1851c338e03991f055b58c947 100644 (file)
@@ -251,8 +251,10 @@ static int apply_autostash(struct rebase_options *opts)
        if (!file_exists(path))
                return 0;
 
-       if (read_one(state_dir_path("autostash", opts), &autostash))
+       if (read_one(path, &autostash))
                return error(_("Could not read '%s'"), path);
+       /* Ensure that the hash is not mistaken for a number */
+       strbuf_addstr(&autostash, "^0");
        argv_array_pushl(&stash_apply.args,
                         "stash", "apply", autostash.buf, NULL);
        stash_apply.git_cmd = 1;
@@ -687,7 +689,7 @@ static int can_fast_forward(struct commit *onto, struct object_id *head_oid,
        merge_bases = get_merge_bases(onto, head);
        if (merge_bases && !merge_bases->next) {
                oidcpy(merge_base, &merge_bases->item->object.oid);
-               res = !oidcmp(merge_base, &onto->object.oid);
+               res = oideq(merge_base, &onto->object.oid);
        } else {
                oidcpy(merge_base, &null_oid);
                res = 0;
@@ -981,7 +983,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                                             &lock_file);
                rollback_lock_file(&lock_file);
 
-               if (has_unstaged_changes(1)) {
+               if (has_unstaged_changes(the_repository, 1)) {
                        puts(_("You must edit all merge conflicts and then\n"
                               "mark them as resolved using git add"));
                        exit(1);
@@ -1349,7 +1351,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                        update_index_if_able(&the_index, &lock_file);
                rollback_lock_file(&lock_file);
 
-               if (has_unstaged_changes(0) || has_uncommitted_changes(0)) {
+               if (has_unstaged_changes(the_repository, 1) ||
+                   has_uncommitted_changes(the_repository, 1)) {
                        const char *autostash =
                                state_dir_path("autostash", &options);
                        struct child_process stash = CHILD_PROCESS_INIT;
@@ -1375,7 +1378,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                        if (safe_create_leading_directories_const(autostash))
                                die(_("Could not create directory for '%s'"),
                                    options.state_dir);
-                       write_file(autostash, "%s", buf.buf);
+                       write_file(autostash, "%s", oid_to_hex(&oid));
                        printf(_("Created autostash: %s\n"), buf.buf);
                        if (reset_head(&head->object.oid, "reset --hard",
                                       NULL, 0, NULL, NULL) < 0)
@@ -1395,7 +1398,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                }
        }
 
-       if (require_clean_work_tree("rebase",
+       if (require_clean_work_tree(the_repository, "rebase",
                                    _("Please commit or stash them."), 1, 1)) {
                ret = 1;
                goto cleanup;