Merge branch 'sw/git-p4-unshelve-branched-files'
[gitweb.git] / builtin / stash.c
index e0528d4cc82d1395b4a41379681440417ae23031..2a8e6d09b406345519201ef64f572197a409e7a4 100644 (file)
@@ -1,3 +1,4 @@
+#define USE_THE_INDEX_COMPATIBILITY_MACROS
 #include "builtin.h"
 #include "config.h"
 #include "parse-options.h"
@@ -432,7 +433,7 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
        if (info->has_u && restore_untracked(&info->u_tree))
                return error(_("could not restore untracked files from stash"));
 
-       init_merge_options(&o);
+       init_merge_options(&o, the_repository);
 
        o.branch1 = "Updated upstream";
        o.branch2 = "Stashed changes";
@@ -527,7 +528,7 @@ static int apply_stash(int argc, const char **argv, const char *prefix)
        return ret;
 }
 
-static int do_drop_stash(const char *prefix, struct stash_info *info, int quiet)
+static int do_drop_stash(struct stash_info *info, int quiet)
 {
        int ret;
        struct child_process cp_reflog = CHILD_PROCESS_INIT;
@@ -597,7 +598,7 @@ static int drop_stash(int argc, const char **argv, const char *prefix)
 
        assert_stash_ref(&info);
 
-       ret = do_drop_stash(prefix, &info, quiet);
+       ret = do_drop_stash(&info, quiet);
        free_stash_info(&info);
        return ret;
 }
@@ -626,7 +627,7 @@ static int pop_stash(int argc, const char **argv, const char *prefix)
                printf_ln(_("The stash entry is kept in case "
                            "you need it again."));
        else
-               ret = do_drop_stash(prefix, &info, quiet);
+               ret = do_drop_stash(&info, quiet);
 
        free_stash_info(&info);
        return ret;
@@ -663,7 +664,7 @@ static int branch_stash(int argc, const char **argv, const char *prefix)
        if (!ret)
                ret = do_apply_stash(prefix, &info, 1, 0);
        if (!ret && info.is_stash_ref)
-               ret = do_drop_stash(prefix, &info, 0);
+               ret = do_drop_stash(&info, 0);
 
        free_stash_info(&info);
 
@@ -760,6 +761,10 @@ static int show_stash(int argc, const char **argv, const char *prefix)
                free_stash_info(&info);
                usage_with_options(git_stash_show_usage, options);
        }
+       if (!rev.diffopt.output_format) {
+               rev.diffopt.output_format = DIFF_FORMAT_PATCH;
+               diff_setup_done(&rev.diffopt);
+       }
 
        rev.diffopt.flags.recursive = 1;
        setup_diff_pager(&rev.diffopt);
@@ -814,7 +819,8 @@ static int store_stash(int argc, const char **argv, const char *prefix)
                return -1;
        }
 
-       if (get_oid_with_context(argv[0], quiet ? GET_OID_QUIETLY : 0, &obj,
+       if (get_oid_with_context(the_repository,
+                                argv[0], quiet ? GET_OID_QUIETLY : 0, &obj,
                                 &dummy)) {
                if (!quiet)
                        fprintf_ln(stderr, _("Cannot update %s with %s"),
@@ -1274,7 +1280,7 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q
                        ce_path_match(&the_index, active_cache[i], ps,
                                      ps_matched);
 
-               if (report_path_error(ps_matched, ps, NULL)) {
+               if (report_path_error(ps_matched, ps)) {
                        fprintf_ln(stderr, _("Did you forget to 'git add'?"));
                        ret = -1;
                        free(ps_matched);