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.
                        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)) {
                             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;
        }
        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",
        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;
 }
 
 void check_repository_format(void)
 {
        check_repository_format_gently(get_git_dir(), NULL);
+       startup_info->have_repository = 1;
 }
 
 /*