tree-diff: show_tree() is not needed
commit7e9003c1497d01f2e75a5f3df7303643fb2432c3
authorKirill Smelkov <kirr@mns.spb.ru>
Mon, 24 Feb 2014 16:21:37 +0000 (24 20:21 +0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 4 Mar 2014 21:33:47 +0000 (4 13:33 -0800)
treefde09d5b9bfbeb6f6fc2cee5db1da33d0a3fbc3a
parente906612121bc9d436a3a64cd03be0537654e800c
tree-diff: show_tree() is not needed

We don't need special code for showing added/removed subtree, because we
can do the same via diff_tree_sha1, just passing NULL for absent tree.

And compared to show_tree(), which was calling show_entry() for every
tree entry, that would lead to the same show_entry() callings:

    show_tree(t):
        for e in t.entries:
            show_entry(e)

    diff_tree_sha1(NULL, new):  /* the same applies to (old, NULL) */
        diff_tree(t1=NULL, t2)
            ...
            if (!t1->size)
                show_entry(t2)
            ...

and possible overhead is negligible, since after the patch, timing for

    `git log --raw --no-abbrev --no-renames`

for navy.git and `linux.git v3.10..v3.11` is practically the same.

So let's say goodbye to show_tree() - it removes some code, but also,
and what is important, consolidates more code for showing/recursing into
trees into one place.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
tree-diff.c