[PATCH 18/32] log-tree: use narrow version of diff_tree_sha1
This makes "git log" work in narrow repos.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
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