sequencer (rebase -i): show only failed `git commit`'s output
[gitweb.git] / setup.c
diff --git a/setup.c b/setup.c
index fbe7ec16dd2b2e73403aa92eed39004adc3f4767..fe572b82c355390e6101aea15d2d53ec5b3b1e15 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -6,6 +6,9 @@ static int inside_git_dir = -1;
 static int inside_work_tree = -1;
 static int work_tree_config_is_bogus;
 
+static struct startup_info the_startup_info;
+struct startup_info *startup_info = &the_startup_info;
+
 /*
  * The input parameter must contain an absolute path, and it must already be
  * normalized.
@@ -99,7 +102,7 @@ char *prefix_path_gently(const char *prefix, int len,
                        return NULL;
                }
        } else {
-               sanitized = xstrfmt("%.*s%s", len, prefix, path);
+               sanitized = xstrfmt("%.*s%s", len, len ? prefix : "", path);
                if (remaining_prefix)
                        *remaining_prefix = len;
                if (normalize_path_copy_len(sanitized, sanitized, remaining_prefix)) {
@@ -154,8 +157,8 @@ static void NORETURN die_verify_filename(const char *prefix,
                                         int diagnose_misspelt_rev)
 {
        if (!diagnose_misspelt_rev)
-               die("%s: no such path in the working tree.\n"
-                   "Use 'git <command> -- <path>...' to specify paths that do not exist locally.",
+               die(_("%s: no such path in the working tree.\n"
+                     "Use 'git <command> -- <path>...' to specify paths that do not exist locally."),
                    arg);
        /*
         * Saying "'(icase)foo' does not exist in the index" when the
@@ -167,9 +170,9 @@ static void NORETURN die_verify_filename(const char *prefix,
                maybe_die_on_misspelt_object_name(arg, prefix);
 
        /* ... or fall back the most general message. */
-       die("ambiguous argument '%s': unknown revision or path not in the working tree.\n"
-           "Use '--' to separate paths from revisions, like this:\n"
-           "'git <command> [<revision>...] -- [<file>...]'", arg);
+       die(_("ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+             "Use '--' to separate paths from revisions, like this:\n"
+             "'git <command> [<revision>...] -- [<file>...]'"), arg);
 
 }
 
@@ -217,9 +220,9 @@ void verify_non_filename(const char *prefix, const char *arg)
                return; /* flag */
        if (!check_filename(prefix, arg))
                return;
-       die("ambiguous argument '%s': both revision and filename\n"
-           "Use '--' to separate paths from revisions, like this:\n"
-           "'git <command> [<revision>...] -- [<file>...]'", arg);
+       die(_("ambiguous argument '%s': both revision and filename\n"
+             "Use '--' to separate paths from revisions, like this:\n"
+             "'git <command> [<revision>...] -- [<file>...]'"), arg);
 }
 
 int get_common_dir(struct strbuf *sb, const char *gitdir)
@@ -428,7 +431,6 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
                die("%s", err.buf);
        }
 
-       repository_format_version = candidate.version;
        repository_format_precious_objects = candidate.precious_objects;
        string_list_clear(&candidate.unknown_extensions, 0);
        if (!has_common) {
@@ -463,7 +465,7 @@ int verify_repository_format(const struct repository_format *format,
                             struct strbuf *err)
 {
        if (GIT_REPO_VERSION_READ < format->version) {
-               strbuf_addf(err, "Expected git repo version <= %d, found %d",
+               strbuf_addf(err, _("Expected git repo version <= %d, found %d"),
                            GIT_REPO_VERSION_READ, format->version);
                return -1;
        }
@@ -471,7 +473,7 @@ int verify_repository_format(const struct repository_format *format,
        if (format->version >= 1 && format->unknown_extensions.nr) {
                int i;
 
-               strbuf_addstr(err, "unknown repository extensions found:");
+               strbuf_addstr(err, _("unknown repository extensions found:"));
 
                for (i = 0; i < format->unknown_extensions.nr; i++)
                        strbuf_addf(err, "\n\t%s",
@@ -757,9 +759,9 @@ static const char *setup_bare_git_dir(struct strbuf *cwd, int offset,
 static const char *setup_nongit(const char *cwd, int *nongit_ok)
 {
        if (!nongit_ok)
-               die("Not a git repository (or any of the parent directories): %s", DEFAULT_GIT_DIR_ENVIRONMENT);
+               die(_("Not a git repository (or any of the parent directories): %s"), DEFAULT_GIT_DIR_ENVIRONMENT);
        if (chdir(cwd))
-               die_errno("Cannot come back to cwd");
+               die_errno(_("Cannot come back to cwd"));
        *nongit_ok = 1;
        return NULL;
 }
@@ -840,7 +842,7 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)
                *nongit_ok = 0;
 
        if (strbuf_getcwd(&cwd))
-               die_errno("Unable to read current working directory");
+               die_errno(_("Unable to read current working directory"));
        offset = cwd.len;
 
        /*
@@ -910,19 +912,19 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)
                        if (parent_device != current_device) {
                                if (nongit_ok) {
                                        if (chdir(cwd.buf))
-                                               die_errno("Cannot come back to cwd");
+                                               die_errno(_("Cannot come back to cwd"));
                                        *nongit_ok = 1;
                                        return NULL;
                                }
                                strbuf_setlen(&cwd, offset);
-                               die("Not a git repository (or any parent up to mount point %s)\n"
-                               "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).",
+                               die(_("Not a git repository (or any parent up to mount point %s)\n"
+                               "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."),
                                    cwd.buf);
                        }
                }
                if (chdir("..")) {
                        strbuf_setlen(&cwd, offset);
-                       die_errno("Cannot change to '%s/..'", cwd.buf);
+                       die_errno(_("Cannot change to '%s/..'"), cwd.buf);
                }
                offset = offset_parent;
        }
@@ -938,10 +940,9 @@ const char *setup_git_directory_gently(int *nongit_ok)
        else
                setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
 
-       if (startup_info) {
-               startup_info->have_repository = !nongit_ok || !*nongit_ok;
-               startup_info->prefix = prefix;
-       }
+       startup_info->have_repository = !nongit_ok || !*nongit_ok;
+       startup_info->prefix = prefix;
+
        return prefix;
 }
 
@@ -985,9 +986,9 @@ int git_config_perm(const char *var, const char *value)
        /* A filemode value was given: 0xxx */
 
        if ((i & 0600) != 0600)
-               die("Problem with core.sharedRepository filemode value "
+               die(_("Problem with core.sharedRepository filemode value "
                    "(0%.3o).\nThe owner of files must always have "
-                   "read and write permissions.", i);
+                   "read and write permissions."), i);
 
        /*
         * Mask filemode value. Others can not get write permission.
@@ -999,6 +1000,7 @@ int git_config_perm(const char *var, const char *value)
 void check_repository_format(void)
 {
        check_repository_format_gently(get_git_dir(), NULL);
+       startup_info->have_repository = 1;
 }
 
 /*