]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ds/lazy-load-trees'
authorJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2018 05:38:13 +0000 (14:38 +0900)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 May 2018 05:38:13 +0000 (14:38 +0900)
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.

* ds/lazy-load-trees:
  coccinelle: avoid wrong transformation suggestions from commit.cocci
  commit-graph: lazy-load trees for commits
  treewide: replace maybe_tree with accessor methods
  commit: create get_commit_tree() method
  treewide: rename tree to maybe_tree

21 files changed:
1  2 
blame.c
builtin/checkout.c
builtin/fast-export.c
builtin/log.c
builtin/reflog.c
commit-graph.c
commit.c
fsck.c
http-push.c
line-log.c
log-tree.c
merge-recursive.c
notes-merge.c
packfile.c
pretty.c
ref-filter.c
revision.c
sequencer.c
sha1-name.c
tree.c
walker.c

diff --cc blame.c
Simple merge
Simple merge
Simple merge
diff --cc builtin/log.c
Simple merge
Simple merge
diff --cc commit-graph.c
Simple merge
diff --cc commit.c
Simple merge
diff --cc fsck.c
Simple merge
diff --cc http-push.c
Simple merge
diff --cc line-log.c
Simple merge
diff --cc log-tree.c
Simple merge
Simple merge
diff --cc notes-merge.c
Simple merge
diff --cc packfile.c
Simple merge
diff --cc pretty.c
index 34fe891fc03672fa042257e4d32630882868eadf,15997f5e0186c0623de36ab3542dbcbaea1fa47b..703fa6ff7bf297e9d0dd91586f951f715032e06a
+++ b/pretty.c
@@@ -1161,10 -1161,11 +1161,11 @@@ static size_t format_commit_one(struct 
                strbuf_addstr(sb, diff_get_color(c->auto_color, DIFF_RESET));
                return 1;
        case 'T':               /* tree hash */
-               strbuf_addstr(sb, oid_to_hex(&commit->tree->object.oid));
+               strbuf_addstr(sb, oid_to_hex(get_commit_tree_oid(commit)));
                return 1;
        case 't':               /* abbreviated tree hash */
-               strbuf_add_unique_abbrev(sb, &commit->tree->object.oid,
+               strbuf_add_unique_abbrev(sb,
 -                                       get_commit_tree_oid(commit)->hash,
++                                       get_commit_tree_oid(commit),
                                         c->pretty_ctx->abbrev);
                return 1;
        case 'P':               /* parent hashes */
diff --cc ref-filter.c
Simple merge
diff --cc revision.c
Simple merge
diff --cc sequencer.c
Simple merge
diff --cc sha1-name.c
Simple merge
diff --cc tree.c
Simple merge
diff --cc walker.c
index 8eb7db7a52782c9862718979e5270724fd982d1f,f51b8558723354aad4dbfeb7764baa97893f6c1c..0b162a09b95a3eadeef47f3e6d314d386215cc9f
+++ b/walker.c
@@@ -88,14 -86,19 +88,14 @@@ static int process_commit(struct walke
  
        walker_say(walker, "walk %s\n", oid_to_hex(&commit->object.oid));
  
-       if (process(walker, &commit->tree->object))
 -      if (walker->get_tree) {
 -              if (process(walker, &get_commit_tree(commit)->object))
++      if (process(walker, &get_commit_tree(commit)->object))
 +              return -1;
 +
 +      for (parents = commit->parents; parents; parents = parents->next) {
 +              if (process(walker, &parents->item->object))
                        return -1;
 -              if (!walker->get_all)
 -                      walker->get_tree = 0;
 -      }
 -      if (walker->get_history) {
 -              struct commit_list *parents = commit->parents;
 -              for (; parents; parents = parents->next) {
 -                      if (process(walker, &parents->item->object))
 -                              return -1;
 -              }
        }
 +
        return 0;
  }