]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/log.c
Merge branch 'en/remerge-diff'
[thirdparty/git.git] / builtin / log.c
index 942c07ece6e4415791cda996cceb194937069e23..093d0d26553aa88b0d36601d6b7e622a04a9e3bf 100644 (file)
@@ -35,6 +35,7 @@
 #include "repository.h"
 #include "commit-reach.h"
 #include "range-diff.h"
+#include "tmp-objdir.h"
 
 #define MAIL_DEFAULT_WRAP 72
 #define COVER_FROM_AUTO_MAX_SUBJECT_LEN 100
@@ -422,6 +423,13 @@ static int cmd_log_walk(struct rev_info *rev)
        int saved_nrl = 0;
        int saved_dcctc = 0;
 
+       if (rev->remerge_diff) {
+               rev->remerge_objdir = tmp_objdir_create("remerge-diff");
+               if (!rev->remerge_objdir)
+                       die(_("unable to create temporary object directory"));
+               tmp_objdir_replace_primary_odb(rev->remerge_objdir, 1);
+       }
+
        if (rev->early_output)
                setup_early_output();
 
@@ -464,6 +472,11 @@ static int cmd_log_walk(struct rev_info *rev)
        rev->diffopt.no_free = 0;
        diff_free(&rev->diffopt);
 
+       if (rev->remerge_diff) {
+               tmp_objdir_destroy(rev->remerge_objdir);
+               rev->remerge_objdir = NULL;
+       }
+
        if (rev->diffopt.output_format & DIFF_FORMAT_CHECKDIFF &&
            rev->diffopt.flags.check_failed) {
                return 02;
@@ -1943,9 +1956,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                numbered = 0;
 
        if (numbered && keep_subject)
-               die(_("-n and -k are mutually exclusive"));
+               die(_("options '%s' and '%s' cannot be used together"), "-n", "-k");
        if (keep_subject && subject_prefix)
-               die(_("--subject-prefix/--rfc and -k are mutually exclusive"));
+               die(_("options '%s' and '%s' cannot be used together"), "--subject-prefix/--rfc", "-k");
        rev.preserve_subject = keep_subject;
 
        argc = setup_revisions(argc, argv, &rev, &s_r_opt);
@@ -1958,6 +1971,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                die(_("--name-status does not make sense"));
        if (rev.diffopt.output_format & DIFF_FORMAT_CHECKDIFF)
                die(_("--check does not make sense"));
+       if (rev.remerge_diff)
+               die(_("--remerge-diff does not make sense"));
 
        if (!use_patch_format &&
                (!rev.diffopt.output_format ||
@@ -1979,7 +1994,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                load_display_notes(&rev.notes_opt);
 
        if (use_stdout + rev.diffopt.close_file + !!output_directory > 1)
-               die(_("--stdout, --output, and --output-directory are mutually exclusive"));
+               die(_("options '%s', '%s', and '%s' cannot be used together"), "--stdout", "--output", "--output-directory");
 
        if (use_stdout) {
                setup_pager();
@@ -2112,7 +2127,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
        if (creation_factor < 0)
                creation_factor = RANGE_DIFF_CREATION_FACTOR_DEFAULT;
        else if (!rdiff_prev)
-               die(_("--creation-factor requires --range-diff"));
+               die(_("the option '%s' requires '%s'"), "--creation-factor", "--range-diff");
 
        if (rdiff_prev) {
                if (!cover_letter && total != 1)