X-Git-Url: https://git.distorted.org.uk/~mdw/tig/blobdiff_plain/518234f10b5edacca3400f197f4e32d9448bf2e6..d3b19ca4812677d06507cb70de40ed0de3cbe41b:/tig.c diff --git a/tig.c b/tig.c index b3a4e8d..4a50268 100644 --- a/tig.c +++ b/tig.c @@ -116,7 +116,7 @@ static size_t utf8_length(const char *string, size_t max_width, int *trimmed, bo "git log --no-color --cc --stat -n100 %s 2>/dev/null" #define TIG_MAIN_CMD \ - "git log --no-color --topo-order --boundary --pretty=raw %s 2>/dev/null" + "git log --no-color --topo-order --parents --boundary --pretty=raw %s 2>/dev/null" #define TIG_TREE_CMD \ "git ls-tree %s %s" @@ -584,7 +584,7 @@ parse_options(int argc, char *argv[]) if (opt_request == REQ_VIEW_MAIN) /* XXX: This is vulnerable to the user overriding * options required for the main view parser. */ - string_copy(opt_cmd, "git log --no-color --pretty=raw --boundary"); + string_copy(opt_cmd, "git log --no-color --pretty=raw --boundary --parents"); else string_copy(opt_cmd, "git"); buf_size = strlen(opt_cmd); @@ -605,9 +605,6 @@ parse_options(int argc, char *argv[]) opt_cmd[buf_size] = 0; } - if (*opt_encoding && strcasecmp(opt_encoding, "UTF-8")) - opt_utf8 = FALSE; - return TRUE; } @@ -4019,6 +4016,7 @@ struct commit { struct ref **refs; /* Repository references. */ chtype graph[SIZEOF_REVGRAPH]; /* Ancestry chain graphics. */ size_t graph_size; /* The width of the graph array. */ + bool has_parents; /* Rewritten --parents seen. */ }; /* Size of rev graph with no "padding" columns */ @@ -4371,6 +4369,12 @@ main_read(struct view *view, char *line) commit->refs = get_refs(commit->id); graph->commit = commit; add_line_data(view, commit, LINE_MAIN_COMMIT); + + while ((line = strchr(line, ' '))) { + line++; + push_rev_graph(graph->parents, line); + commit->has_parents = TRUE; + } return TRUE; } @@ -4380,6 +4384,8 @@ main_read(struct view *view, char *line) switch (type) { case LINE_PARENT: + if (commit->has_parents) + break; push_rev_graph(graph->parents, line + STRING_SIZE("parent ")); break; @@ -5148,6 +5154,9 @@ main(int argc, char *argv[]) if (!opt_git_dir[0]) die("Not a git repository"); + if (*opt_encoding && strcasecmp(opt_encoding, "UTF-8")) + opt_utf8 = FALSE; + if (*opt_codeset && strcmp(opt_codeset, opt_encoding)) { opt_iconv = iconv_open(opt_codeset, opt_encoding); if (opt_iconv == ICONV_NONE)