From cc2a223fea20975b04d9c4d0b4febf1c7b3937a4 Mon Sep 17 00:00:00 2001 From: Minh Thai Date: Wed, 6 Mar 2019 15:25:10 -0800 Subject: [PATCH] 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 --- .../eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java | 1 + org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java | 2 ++ org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java | 2 ++ .../src/org/eclipse/jgit/transport/BasePackFetchConnection.java | 1 + .../src/org/eclipse/jgit/transport/BaseReceivePack.java | 1 + .../src/org/eclipse/jgit/transport/FetchProcess.java | 1 + 6 files changed, 8 insertions(+) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java index 83394bb92..384273dff 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java @@ -315,6 +315,7 @@ protected boolean compareAndPut(Ref oldRef, @Nullable Ref newRef) throws IOException { ReceiveCommand cmd = toCommand(oldRef, newRef); try (RevWalk rw = new RevWalk(getRepository())) { + rw.setRetainBody(false); newBatchUpdate().setAllowNonFastForwards(true).addCommand(cmd) .execute(rw, NullProgressMonitor.INSTANCE); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java index 1ce152834..784162766 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java @@ -599,6 +599,7 @@ public Result forceUpdate() throws IOException { */ public Result update() throws IOException { try (RevWalk rw = new RevWalk(getRepository())) { + rw.setRetainBody(false); return update(rw); } } @@ -646,6 +647,7 @@ Result execute(Result status) throws IOException { */ public Result delete() throws IOException { try (RevWalk rw = new RevWalk(getRepository())) { + rw.setRetainBody(false); return delete(rw); } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java index a61897a65..625ddf101 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java @@ -489,6 +489,7 @@ public ObjectId resolve(String revstr) throws AmbiguousObjectException, IncorrectObjectTypeException, RevisionSyntaxException, IOException { try (RevWalk rw = new RevWalk(this)) { + rw.setRetainBody(false); Object resolved = resolve(rw, revstr); if (resolved instanceof String) { final Ref ref = findRef((String) resolved); @@ -515,6 +516,7 @@ public ObjectId resolve(String revstr) public String simplify(String revstr) throws AmbiguousObjectException, IOException { try (RevWalk rw = new RevWalk(this)) { + rw.setRetainBody(true); Object resolved = resolve(rw, revstr); if (resolved != null) if (resolved instanceof String) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java index ed7465c82..d54ae10f6 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java @@ -272,6 +272,7 @@ public BasePackFetchConnection(PackTransport packTransport) { if (local != null) { walk = new RevWalk(local); + walk.setRetainBody(false); reachableCommits = new RevCommitList<>(); REACHABLE = walk.newFlag("REACHABLE"); //$NON-NLS-1$ COMMON = walk.newFlag("COMMON"); //$NON-NLS-1$ diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index 6f17620d9..2946e9835 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -314,6 +314,7 @@ public Set getCapabilities() { protected BaseReceivePack(Repository into) { db = into; walk = new RevWalk(db); + walk.setRetainBody(false); TransferConfig tc = db.getConfig().get(TransferConfig.KEY); objectChecker = tc.newReceiveObjectChecker(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java index 681ae125c..e584440b3 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java @@ -200,6 +200,7 @@ else if (tagopt == TagOpt.FETCH_TAGS) .setAllowNonFastForwards(true) .setRefLogMessage("fetch", true); //$NON-NLS-1$ try (RevWalk walk = new RevWalk(transport.local)) { + walk.setRetainBody(false); if (monitor instanceof BatchingProgressMonitor) { ((BatchingProgressMonitor) monitor).setDelayStart( 250, TimeUnit.MILLISECONDS);