Teach git-log to support --children, which was added by f35f5603f4 to the revision machinery, and by 72276a3ecb to rev-list, but was never added to git-log. Also add tests for 'log --children' and 'log --parents'. Signed-off-by: Jay Soffian <jaysoffian@xxxxxxxxx> --- On Tue, Oct 4, 2011 at 4:12 PM, Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> wrote: > That means that "log --children --parents" will print out the parents' > sha1s, then the children's. Is that a good default format, or should we > somehow deal with the case when both are specified? They are mutually exclusive: $ git log --parents --children fatal: cannot combine --parents and --children > And I guess we would like to test this... Good idea. :-) j. log-tree.c | 12 ++++++++++++ t/t4013-diff-various.sh | 2 ++ t/t4013/diff.log_--children | 34 ++++++++++++++++++++++++++++++++++ t/t4013/diff.log_--parents | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 0 deletions(-) create mode 100644 t/t4013/diff.log_--children create mode 100644 t/t4013/diff.log_--parents diff --git a/log-tree.c b/log-tree.c index 24c295ea1d..e7694a3a4c 100644 --- a/log-tree.c +++ b/log-tree.c @@ -165,6 +165,14 @@ static void show_parents(struct commit *commit, int abbrev) } } +static void show_children(struct rev_info *opt, struct commit *commit, int abbrev) +{ + struct commit_list *p = lookup_decoration(&opt->children, &commit->object); + for ( ; p; p = p->next) { + printf(" %s", find_unique_abbrev(p->item->object.sha1, abbrev)); + } +} + void show_decorations(struct rev_info *opt, struct commit *commit) { const char *prefix; @@ -414,6 +422,8 @@ void show_log(struct rev_info *opt) fputs(find_unique_abbrev(commit->object.sha1, abbrev_commit), stdout); if (opt->print_parents) show_parents(commit, abbrev_commit); + if (opt->children.name) + show_children(opt, commit, abbrev_commit); show_decorations(opt, commit); if (opt->graph && !graph_is_commit_finished(opt->graph)) { putchar('\n'); @@ -473,6 +483,8 @@ void show_log(struct rev_info *opt) stdout); if (opt->print_parents) show_parents(commit, abbrev_commit); + if (opt->children.name) + show_children(opt, commit, abbrev_commit); if (parent) printf(" (from %s)", find_unique_abbrev(parent->object.sha1, diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 93a6f20871..a488325e2c 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -231,6 +231,8 @@ log -GF -p master log -GF -p --pickaxe-all master log --decorate --all log --decorate=full --all +log --parents +log --children rev-list --parents HEAD rev-list --children HEAD diff --git a/t/t4013/diff.log_--children b/t/t4013/diff.log_--children new file mode 100644 index 0000000000..bb8ed432cf --- /dev/null +++ b/t/t4013/diff.log_--children @@ -0,0 +1,34 @@ +$ git log --children +commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 +Merge: 9a6d494 c7a2ab9 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:04:00 2006 +0000 + + Merge branch 'side' + +commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a 59d314ad6f356dd08601a4cd5e530381da3e3c64 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:03:00 2006 +0000 + + Side + +commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 59d314ad6f356dd08601a4cd5e530381da3e3c64 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:02:00 2006 +0000 + + Third + +commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:01:00 2006 +0000 + + Second + + This is the second commit. + +commit 444ac553ac7612cc88969031b02b3767fb8a353a 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:00:00 2006 +0000 + + Initial +$ diff --git a/t/t4013/diff.log_--parents b/t/t4013/diff.log_--parents new file mode 100644 index 0000000000..bc4d44ff1f --- /dev/null +++ b/t/t4013/diff.log_--parents @@ -0,0 +1,34 @@ +$ git log --parents +commit 59d314ad6f356dd08601a4cd5e530381da3e3c64 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a +Merge: 9a6d494 c7a2ab9 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:04:00 2006 +0000 + + Merge branch 'side' + +commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a 444ac553ac7612cc88969031b02b3767fb8a353a +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:03:00 2006 +0000 + + Side + +commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:02:00 2006 +0000 + + Third + +commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 444ac553ac7612cc88969031b02b3767fb8a353a +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:01:00 2006 +0000 + + Second + + This is the second commit. + +commit 444ac553ac7612cc88969031b02b3767fb8a353a +Author: A U Thor <author@xxxxxxxxxxx> +Date: Mon Jun 26 00:00:00 2006 +0000 + + Initial +$ -- 1.7.7.3.gaf8e -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html