Do not retain commit body in RevWalk for reachability checks

Commit body contains the message that is not needed for reachability checks, and
takes up memory unnecessarily.

Change-Id: I0c7f6da249bf9c4fda9dc9e62e809322c68effce
Signed-off-by: Minh Thai <mthai@google.com>
This commit is contained in:
Minh Thai 2019-03-06 15:25:10 -08:00
parent e48410ae9a
commit cc2a223fea
6 changed files with 8 additions and 0 deletions

View File

@ -315,6 +315,7 @@ protected boolean compareAndPut(Ref oldRef, @Nullable Ref newRef)
throws IOException { throws IOException {
ReceiveCommand cmd = toCommand(oldRef, newRef); ReceiveCommand cmd = toCommand(oldRef, newRef);
try (RevWalk rw = new RevWalk(getRepository())) { try (RevWalk rw = new RevWalk(getRepository())) {
rw.setRetainBody(false);
newBatchUpdate().setAllowNonFastForwards(true).addCommand(cmd) newBatchUpdate().setAllowNonFastForwards(true).addCommand(cmd)
.execute(rw, NullProgressMonitor.INSTANCE); .execute(rw, NullProgressMonitor.INSTANCE);
} }

View File

@ -599,6 +599,7 @@ public Result forceUpdate() throws IOException {
*/ */
public Result update() throws IOException { public Result update() throws IOException {
try (RevWalk rw = new RevWalk(getRepository())) { try (RevWalk rw = new RevWalk(getRepository())) {
rw.setRetainBody(false);
return update(rw); return update(rw);
} }
} }
@ -646,6 +647,7 @@ Result execute(Result status) throws IOException {
*/ */
public Result delete() throws IOException { public Result delete() throws IOException {
try (RevWalk rw = new RevWalk(getRepository())) { try (RevWalk rw = new RevWalk(getRepository())) {
rw.setRetainBody(false);
return delete(rw); return delete(rw);
} }
} }

View File

@ -489,6 +489,7 @@ public ObjectId resolve(String revstr)
throws AmbiguousObjectException, IncorrectObjectTypeException, throws AmbiguousObjectException, IncorrectObjectTypeException,
RevisionSyntaxException, IOException { RevisionSyntaxException, IOException {
try (RevWalk rw = new RevWalk(this)) { try (RevWalk rw = new RevWalk(this)) {
rw.setRetainBody(false);
Object resolved = resolve(rw, revstr); Object resolved = resolve(rw, revstr);
if (resolved instanceof String) { if (resolved instanceof String) {
final Ref ref = findRef((String) resolved); final Ref ref = findRef((String) resolved);
@ -515,6 +516,7 @@ public ObjectId resolve(String revstr)
public String simplify(String revstr) public String simplify(String revstr)
throws AmbiguousObjectException, IOException { throws AmbiguousObjectException, IOException {
try (RevWalk rw = new RevWalk(this)) { try (RevWalk rw = new RevWalk(this)) {
rw.setRetainBody(true);
Object resolved = resolve(rw, revstr); Object resolved = resolve(rw, revstr);
if (resolved != null) if (resolved != null)
if (resolved instanceof String) if (resolved instanceof String)

View File

@ -272,6 +272,7 @@ public BasePackFetchConnection(PackTransport packTransport) {
if (local != null) { if (local != null) {
walk = new RevWalk(local); walk = new RevWalk(local);
walk.setRetainBody(false);
reachableCommits = new RevCommitList<>(); reachableCommits = new RevCommitList<>();
REACHABLE = walk.newFlag("REACHABLE"); //$NON-NLS-1$ REACHABLE = walk.newFlag("REACHABLE"); //$NON-NLS-1$
COMMON = walk.newFlag("COMMON"); //$NON-NLS-1$ COMMON = walk.newFlag("COMMON"); //$NON-NLS-1$

View File

@ -314,6 +314,7 @@ public Set<String> getCapabilities() {
protected BaseReceivePack(Repository into) { protected BaseReceivePack(Repository into) {
db = into; db = into;
walk = new RevWalk(db); walk = new RevWalk(db);
walk.setRetainBody(false);
TransferConfig tc = db.getConfig().get(TransferConfig.KEY); TransferConfig tc = db.getConfig().get(TransferConfig.KEY);
objectChecker = tc.newReceiveObjectChecker(); objectChecker = tc.newReceiveObjectChecker();

View File

@ -200,6 +200,7 @@ else if (tagopt == TagOpt.FETCH_TAGS)
.setAllowNonFastForwards(true) .setAllowNonFastForwards(true)
.setRefLogMessage("fetch", true); //$NON-NLS-1$ .setRefLogMessage("fetch", true); //$NON-NLS-1$
try (RevWalk walk = new RevWalk(transport.local)) { try (RevWalk walk = new RevWalk(transport.local)) {
walk.setRetainBody(false);
if (monitor instanceof BatchingProgressMonitor) { if (monitor instanceof BatchingProgressMonitor) {
((BatchingProgressMonitor) monitor).setDelayStart( ((BatchingProgressMonitor) monitor).setDelayStart(
250, TimeUnit.MILLISECONDS); 250, TimeUnit.MILLISECONDS);