Sync with Git 1.8.3.4
[gitweb.git] / submodule.c
index 975bc87e48b33e70bd7c38e82b7f59e34bb81ca3..3f0a3f9419a3dead24cd8e850051f595d0b5974f 100644 (file)
@@ -216,6 +216,7 @@ static int prepare_submodule_summary(struct rev_info *rev, const char *path,
 }
 
 static void print_submodule_summary(struct rev_info *rev, FILE *f,
+               const char *line_prefix,
                const char *del, const char *add, const char *reset)
 {
        static const char format[] = "  %m %s";
@@ -225,7 +226,9 @@ static void print_submodule_summary(struct rev_info *rev, FILE *f,
        while ((commit = get_revision(rev))) {
                struct pretty_print_context ctx = {0};
                ctx.date_mode = rev->date_mode;
+               ctx.output_encoding = get_log_output_encoding();
                strbuf_setlen(&sb, 0);
+               strbuf_addstr(&sb, line_prefix);
                if (commit->object.flags & SYMMETRIC_LEFT) {
                        if (del)
                                strbuf_addstr(&sb, del);
@@ -256,6 +259,7 @@ int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg)
 }
 
 void show_submodule_summary(FILE *f, const char *path,
+               const char *line_prefix,
                unsigned char one[20], unsigned char two[20],
                unsigned dirty_submodule, const char *meta,
                const char *del, const char *add, const char *reset)
@@ -280,16 +284,18 @@ void show_submodule_summary(FILE *f, const char *path,
                message = "(revision walker failed)";
 
        if (dirty_submodule & DIRTY_SUBMODULE_UNTRACKED)
-               fprintf(f, "Submodule %s contains untracked content\n", path);
+               fprintf(f, "%sSubmodule %s contains untracked content\n",
+                       line_prefix, path);
        if (dirty_submodule & DIRTY_SUBMODULE_MODIFIED)
-               fprintf(f, "Submodule %s contains modified content\n", path);
+               fprintf(f, "%sSubmodule %s contains modified content\n",
+                       line_prefix, path);
 
        if (!hashcmp(one, two)) {
                strbuf_release(&sb);
                return;
        }
 
-       strbuf_addf(&sb, "%sSubmodule %s %s..", meta, path,
+       strbuf_addf(&sb, "%s%sSubmodule %s %s..", line_prefix, meta, path,
                        find_unique_abbrev(one, DEFAULT_ABBREV));
        if (!fast_backward && !fast_forward)
                strbuf_addch(&sb, '.');
@@ -301,7 +307,7 @@ void show_submodule_summary(FILE *f, const char *path,
        fwrite(sb.buf, sb.len, 1, f);
 
        if (!message) /* only NULL if we succeeded in setting up the walk */
-               print_submodule_summary(&rev, f, del, add, reset);
+               print_submodule_summary(&rev, f, line_prefix, del, add, reset);
        if (left)
                clear_commit_marks(left, ~0);
        if (right)
@@ -598,9 +604,8 @@ int fetch_populated_submodules(const struct argv_array *options,
        if (!work_tree)
                goto out;
 
-       if (!the_index.initialized)
-               if (read_cache() < 0)
-                       die("index file corrupt");
+       if (read_cache() < 0)
+               die("index file corrupt");
 
        argv_array_push(&argv, "fetch");
        for (i = 0; i < options->argc; i++)
@@ -619,7 +624,7 @@ int fetch_populated_submodules(const struct argv_array *options,
                struct strbuf submodule_path = STRBUF_INIT;
                struct strbuf submodule_git_dir = STRBUF_INIT;
                struct strbuf submodule_prefix = STRBUF_INIT;
-               struct cache_entry *ce = active_cache[i];
+               const struct cache_entry *ce = active_cache[i];
                const char *git_dir, *name, *default_argv;
 
                if (!S_ISGITLINK(ce->ce_mode))
@@ -841,7 +846,7 @@ static int find_first_merges(struct object_array *result, const char *path,
                struct commit *a, struct commit *b)
 {
        int i, j;
-       struct object_array merges;
+       struct object_array merges = OBJECT_ARRAY_INIT;
        struct commit *commit;
        int contains_another;
 
@@ -851,7 +856,6 @@ static int find_first_merges(struct object_array *result, const char *path,
        struct rev_info revs;
        struct setup_revision_opt rev_opts;
 
-       memset(&merges, 0, sizeof(merges));
        memset(result, 0, sizeof(struct object_array));
        memset(&rev_opts, 0, sizeof(rev_opts));
 
@@ -889,8 +893,7 @@ static int find_first_merges(struct object_array *result, const char *path,
                }
 
                if (!contains_another)
-                       add_object_array(merges.objects[i].item,
-                                        merges.objects[i].name, result);
+                       add_object_array(merges.objects[i].item, NULL, result);
        }
 
        free(merges.objects);