t7201: drop pointless "exit 0" at end of subshell
[gitweb.git] / merge-recursive.c
index ac27abbd4cd708fdc2526c6508680b7d246773b6..bed4a5be02404ef512ba5cfcd9bb33ac04a4ca47 100644 (file)
@@ -15,6 +15,7 @@
 #include "diff.h"
 #include "diffcore.h"
 #include "tag.h"
+#include "alloc.h"
 #include "unpack-trees.h"
 #include "string-list.h"
 #include "xdiff-interface.h"
@@ -160,7 +161,7 @@ static struct tree *shift_tree_object(struct tree *one, struct tree *two,
 
 static struct commit *make_virtual_commit(struct tree *tree, const char *comment)
 {
-       struct commit *commit = alloc_commit_node();
+       struct commit *commit = alloc_commit_node(the_repository);
 
        set_merge_remote_desc(commit, comment, (struct object *)commit);
        commit->maybe_tree = tree;
@@ -286,10 +287,12 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)
 
 static void output_commit_title(struct merge_options *o, struct commit *commit)
 {
+       struct merge_remote_desc *desc;
+
        strbuf_addchars(&o->obuf, ' ', o->call_depth * 2);
-       if (commit->util)
-               strbuf_addf(&o->obuf, "virtual %s\n",
-                       merge_remote_util(commit)->name);
+       desc = merge_remote_util(commit);
+       if (desc)
+               strbuf_addf(&o->obuf, "virtual %s\n", desc->name);
        else {
                strbuf_add_unique_abbrev(&o->obuf, &commit->object.oid,
                                         DEFAULT_ABBREV);
@@ -1208,7 +1211,7 @@ static int merge_submodule(struct merge_options *o,
                        output(o, 3, _("Fast-forwarding submodule %s to the following commit:"), path);
                        output_commit_title(o, commit_b);
                } else if (show(o, 2))
-                       output(o, 2, _("Fast-forwarding submodule %s to %s"), path, oid_to_hex(b));
+                       output(o, 2, _("Fast-forwarding submodule %s"), path);
                else
                        ; /* no output */
 
@@ -1220,7 +1223,7 @@ static int merge_submodule(struct merge_options *o,
                        output(o, 3, _("Fast-forwarding submodule %s to the following commit:"), path);
                        output_commit_title(o, commit_a);
                } else if (show(o, 2))
-                       output(o, 2, _("Fast-forwarding submodule %s to %s"), path, oid_to_hex(a));
+                       output(o, 2, _("Fast-forwarding submodule %s"), path);
                else
                        ; /* no output */
 
@@ -2211,18 +2214,18 @@ static struct hashmap *get_directory_renames(struct diff_queue_struct *pairs,
 static struct dir_rename_entry *check_dir_renamed(const char *path,
                                                  struct hashmap *dir_renames)
 {
-       char temp[PATH_MAX];
+       char *temp = xstrdup(path);
        char *end;
-       struct dir_rename_entry *entry;
+       struct dir_rename_entry *entry = NULL;;
 
-       strcpy(temp, path);
        while ((end = strrchr(temp, '/'))) {
                *end = '\0';
                entry = dir_rename_find_entry(dir_renames, temp);
                if (entry)
-                       return entry;
+                       break;
        }
-       return NULL;
+       free(temp);
+       return entry;
 }
 
 static void compute_collisions(struct hashmap *collisions,