Browse Source
In a new RevWalk, if the first object parsed is one of the shallow commits, the following happens: 1) RevCommit.parseCanonical() is called on a new "r1" RevCommit. 2) RevCommit.parseCanonical() immediately calls RevWalk.initializeShallowCommits(). 3) RevWalk.initializeShallowCommits() calls lookupCommit(id), creating and adding a new "r2" version of this same object and marking its parents empty. 4) RevCommit.parseCanonical() initializes the "r1" RevCommit's fields, including the parents. 5) RevCommit.parseCanonical()'s caller uses the "r1" commit that has parents, losing the fact that it is a shallow commit. This change passes the current RevCommit as an argument to RevWalk.initializeShallowCommits() so that method can set its parents empty rather than creating the duplicate "r2" commit. Change-Id: I67b79aa2927dd71ac7b0d8f8917f423dcaf08c8a Signed-off-by: Terry Parker <tparker@google.com>stable-5.1
Terry Parker
6 years ago
3 changed files with 58 additions and 13 deletions
Loading…
Reference in new issue