]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/log.c
Merge branch 'nr/diff-highlight-indent-fix'
[thirdparty/git.git] / builtin / log.c
index c4b35fdaf9b77c05da927fb3a2800a7fd8da9f91..89873d2dc2a3dc1e0e50a97e14bf8b1894231593 100644 (file)
@@ -1766,10 +1766,26 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                setup_pager();
 
        if (output_directory) {
+               int saved;
                if (rev.diffopt.use_color != GIT_COLOR_ALWAYS)
                        rev.diffopt.use_color = GIT_COLOR_NEVER;
                if (use_stdout)
                        die(_("standard output, or directory, which one?"));
+               /*
+                * We consider <outdir> as 'outside of gitdir', therefore avoid
+                * applying adjust_shared_perm in s-c-l-d.
+                */
+               saved = get_shared_repository();
+               set_shared_repository(0);
+               switch (safe_create_leading_directories_const(output_directory)) {
+               case SCLD_OK:
+               case SCLD_EXISTS:
+                       break;
+               default:
+                       die(_("could not create leading directories "
+                             "of '%s'"), output_directory);
+               }
+               set_shared_repository(saved);
                if (mkdir(output_directory, 0777) < 0 && errno != EEXIST)
                        die_errno(_("could not create directory '%s'"),
                                  output_directory);