+#define USE_THE_INDEX_COMPATIBILITY_MACROS
#include "builtin.h"
#include "config.h"
#include "parse-options.h"
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";
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;
assert_stash_ref(&info);
- ret = do_drop_stash(prefix, &info, quiet);
+ ret = do_drop_stash(&info, quiet);
free_stash_info(&info);
return ret;
}
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;
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);
static int show_stash(int argc, const char **argv, const char *prefix)
{
int i;
- int opts = 0;
int ret = 0;
struct stash_info info;
struct rev_info rev;
struct argv_array stash_args = ARGV_ARRAY_INIT;
+ struct argv_array revision_args = ARGV_ARRAY_INIT;
struct option options[] = {
OPT_END()
};
git_config(git_diff_ui_config, NULL);
init_revisions(&rev, prefix);
+ argv_array_push(&revision_args, argv[0]);
for (i = 1; i < argc; i++) {
if (argv[i][0] != '-')
argv_array_push(&stash_args, argv[i]);
else
- opts++;
+ argv_array_push(&revision_args, argv[i]);
}
ret = get_stash_info(&info, stash_args.argc, stash_args.argv);
* The config settings are applied only if there are not passed
* any options.
*/
- if (!opts) {
+ if (revision_args.argc == 1) {
git_config(git_stash_config, NULL);
if (show_stat)
rev.diffopt.output_format = DIFF_FORMAT_DIFFSTAT;
}
}
- argc = setup_revisions(argc, argv, &rev, NULL);
+ argc = setup_revisions(revision_args.argc, revision_args.argv, &rev, NULL);
if (argc > 1) {
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);
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"),
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);