Merge branch 'jk/diff-graph-submodule-summary'
Make "git diff --graph" work better with submodule log output. * jk/diff-graph-submodule-summary: submodule: print graph output next to submodule log
This commit is contained in:
1
diff.c
1
diff.c
@ -2255,6 +2255,7 @@ static void builtin_diff(const char *name_a,
|
|||||||
const char *del = diff_get_color_opt(o, DIFF_FILE_OLD);
|
const char *del = diff_get_color_opt(o, DIFF_FILE_OLD);
|
||||||
const char *add = diff_get_color_opt(o, DIFF_FILE_NEW);
|
const char *add = diff_get_color_opt(o, DIFF_FILE_NEW);
|
||||||
show_submodule_summary(o->file, one ? one->path : two->path,
|
show_submodule_summary(o->file, one ? one->path : two->path,
|
||||||
|
line_prefix,
|
||||||
one->sha1, two->sha1, two->dirty_submodule,
|
one->sha1, two->sha1, two->dirty_submodule,
|
||||||
meta, del, add, reset);
|
meta, del, add, reset);
|
||||||
return;
|
return;
|
||||||
|
13
submodule.c
13
submodule.c
@ -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,
|
static void print_submodule_summary(struct rev_info *rev, FILE *f,
|
||||||
|
const char *line_prefix,
|
||||||
const char *del, const char *add, const char *reset)
|
const char *del, const char *add, const char *reset)
|
||||||
{
|
{
|
||||||
static const char format[] = " %m %s";
|
static const char format[] = " %m %s";
|
||||||
@ -226,6 +227,7 @@ static void print_submodule_summary(struct rev_info *rev, FILE *f,
|
|||||||
struct pretty_print_context ctx = {0};
|
struct pretty_print_context ctx = {0};
|
||||||
ctx.date_mode = rev->date_mode;
|
ctx.date_mode = rev->date_mode;
|
||||||
strbuf_setlen(&sb, 0);
|
strbuf_setlen(&sb, 0);
|
||||||
|
strbuf_addstr(&sb, line_prefix);
|
||||||
if (commit->object.flags & SYMMETRIC_LEFT) {
|
if (commit->object.flags & SYMMETRIC_LEFT) {
|
||||||
if (del)
|
if (del)
|
||||||
strbuf_addstr(&sb, del);
|
strbuf_addstr(&sb, del);
|
||||||
@ -256,6 +258,7 @@ int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void show_submodule_summary(FILE *f, const char *path,
|
void show_submodule_summary(FILE *f, const char *path,
|
||||||
|
const char *line_prefix,
|
||||||
unsigned char one[20], unsigned char two[20],
|
unsigned char one[20], unsigned char two[20],
|
||||||
unsigned dirty_submodule, const char *meta,
|
unsigned dirty_submodule, const char *meta,
|
||||||
const char *del, const char *add, const char *reset)
|
const char *del, const char *add, const char *reset)
|
||||||
@ -280,16 +283,18 @@ void show_submodule_summary(FILE *f, const char *path,
|
|||||||
message = "(revision walker failed)";
|
message = "(revision walker failed)";
|
||||||
|
|
||||||
if (dirty_submodule & DIRTY_SUBMODULE_UNTRACKED)
|
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)
|
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)) {
|
if (!hashcmp(one, two)) {
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
return;
|
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));
|
find_unique_abbrev(one, DEFAULT_ABBREV));
|
||||||
if (!fast_backward && !fast_forward)
|
if (!fast_backward && !fast_forward)
|
||||||
strbuf_addch(&sb, '.');
|
strbuf_addch(&sb, '.');
|
||||||
@ -301,7 +306,7 @@ void show_submodule_summary(FILE *f, const char *path,
|
|||||||
fwrite(sb.buf, sb.len, 1, f);
|
fwrite(sb.buf, sb.len, 1, f);
|
||||||
|
|
||||||
if (!message) /* only NULL if we succeeded in setting up the walk */
|
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)
|
if (left)
|
||||||
clear_commit_marks(left, ~0);
|
clear_commit_marks(left, ~0);
|
||||||
if (right)
|
if (right)
|
||||||
|
@ -19,6 +19,7 @@ int parse_submodule_config_option(const char *var, const char *value);
|
|||||||
void handle_ignore_submodules_arg(struct diff_options *diffopt, const char *);
|
void handle_ignore_submodules_arg(struct diff_options *diffopt, const char *);
|
||||||
int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg);
|
int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg);
|
||||||
void show_submodule_summary(FILE *f, const char *path,
|
void show_submodule_summary(FILE *f, const char *path,
|
||||||
|
const char *line_prefix,
|
||||||
unsigned char one[20], unsigned char two[20],
|
unsigned char one[20], unsigned char two[20],
|
||||||
unsigned dirty_submodule, const char *meta,
|
unsigned dirty_submodule, const char *meta,
|
||||||
const char *del, const char *add, const char *reset);
|
const char *del, const char *add, const char *reset);
|
||||||
|
Reference in New Issue
Block a user