upload-pack: add a trigger for post-upload-pack hook
[gitweb.git] / graph.c
diff --git a/graph.c b/graph.c
index 47bce05c987e04ac7a1617867ff9aab896330c47..f3226ec94a5b59372096698e216af60169d565f6 100644 (file)
--- a/graph.c
+++ b/graph.c
@@ -35,7 +35,7 @@ static void graph_padding_line(struct git_graph *graph, struct strbuf *sb);
  * newline.  A new graph line will not be printed after the final newline.
  * If the strbuf is empty, no output will be printed.
  *
- * Since the first line will not include the graph ouput, the caller is
+ * Since the first line will not include the graph output, the caller is
  * responsible for printing this line's graph (perhaps via
  * graph_show_commit() or graph_show_oneline()) before calling
  * graph_show_strbuf().
@@ -225,7 +225,12 @@ struct git_graph *graph_init(struct rev_info *opt)
        graph->num_columns = 0;
        graph->num_new_columns = 0;
        graph->mapping_size = 0;
-       graph->default_column_color = 0;
+       /*
+        * Start the column color at the maximum value, since we'll
+        * always increment it for the first commit we output.
+        * This way we start at 0 for the first commit.
+        */
+       graph->default_column_color = COLUMN_COLORS_MAX - 1;
 
        /*
         * Allocate a reasonably large default number of columns
@@ -499,11 +504,14 @@ static void graph_update_columns(struct git_graph *graph)
                             parent;
                             parent = next_interesting_parent(graph, parent)) {
                                /*
-                                * If this is a merge increment the current
+                                * If this is a merge, or the start of a new
+                                * childless column, increment the current
                                 * color.
                                 */
-                               if (graph->num_parents > 1)
+                               if (graph->num_parents > 1 ||
+                                   !is_commit_in_columns) {
                                        graph_increment_column_color(graph);
+                               }
                                graph_insert_into_new_columns(graph,
                                                              parent->item,
                                                              &mapping_idx);
@@ -713,8 +721,8 @@ static void graph_output_pre_commit_line(struct git_graph *graph,
                if (col->commit == graph->commit) {
                        seen_this = 1;
                        strbuf_write_column(sb, col, '|');
-                       strbuf_addf(sb, " %*s", graph->expansion_row, "");
-                       chars_written += 2 + graph->expansion_row;
+                       strbuf_addf(sb, "%*s", graph->expansion_row, "");
+                       chars_written += 1 + graph->expansion_row;
                } else if (seen_this && (graph->expansion_row == 0)) {
                        /*
                         * This is the first line of the pre-commit output.
@@ -838,7 +846,7 @@ static void graph_output_commit_line(struct git_graph *graph, struct strbuf *sb)
                        graph_output_commit_char(graph, sb);
                        chars_written++;
 
-                       if (graph->num_parents > 3)
+                       if (graph->num_parents > 2)
                                chars_written += graph_draw_octopus_merge(graph,
                                                                          sb);
                } else if (seen_this && (graph->num_parents > 2)) {
@@ -893,7 +901,7 @@ static struct column *find_new_column_by_commit(struct git_graph *graph,
                if (graph->new_columns[i].commit == commit)
                        return &graph->new_columns[i];
        }
-       return 0;
+       return NULL;
 }
 
 static void graph_output_post_merge_line(struct git_graph *graph, struct strbuf *sb)