This makes "git log" work in narrow repos. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- log-tree.c | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) diff --git a/log-tree.c b/log-tree.c index b46ed3b..693992a 100644 --- a/log-tree.c +++ b/log-tree.c @@ -600,7 +600,10 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log parents = commit->parents; if (!parents) { if (opt->show_root_diff) { - diff_root_tree_sha1(sha1, "", &opt->diffopt); + if (get_narrow_prefix()) + narrow_diff_root_tree_sha1(sha1, NULL, &opt->diffopt); + else + diff_root_tree_sha1(sha1, "", &opt->diffopt); log_tree_diff_flush(opt); } return !opt->loginfo; @@ -618,7 +621,14 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log * parent, showing summary diff of the others * we merged _in_. */ - diff_tree_sha1(parents->item->object.sha1, sha1, "", &opt->diffopt); + if (get_narrow_prefix()) + narrow_diff_tree_sha1(parents->item->object.sha1, + sha1, + NULL, + &opt->diffopt); + else + diff_tree_sha1(parents->item->object.sha1, sha1, + "", &opt->diffopt); log_tree_diff_flush(opt); return !opt->loginfo; } @@ -631,7 +641,14 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log for (;;) { struct commit *parent = parents->item; - diff_tree_sha1(parent->object.sha1, sha1, "", &opt->diffopt); + if (get_narrow_prefix()) + narrow_diff_tree_sha1(parent->object.sha1, + sha1, + NULL, + &opt->diffopt); + else + diff_tree_sha1(parent->object.sha1, sha1, + "", &opt->diffopt); log_tree_diff_flush(opt); showed_log |= !opt->loginfo; -- 1.7.1.rc1.69.g24c2f7 -- 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