Browse Source

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>
stable-5.4
Minh Thai 6 years ago
parent
commit
cc2a223fea
  1. 1
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java
  2. 2
      org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java
  3. 2
      org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
  4. 1
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java
  5. 1
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java
  6. 1
      org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java

1
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java

@ -315,6 +315,7 @@ public class DfsReftableDatabase extends DfsRefDatabase {
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);
} }

2
org.eclipse.jgit/src/org/eclipse/jgit/lib/RefUpdate.java

@ -599,6 +599,7 @@ public abstract class RefUpdate {
*/ */
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 @@ public abstract class RefUpdate {
*/ */
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);
} }
} }

2
org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java

@ -489,6 +489,7 @@ public abstract class Repository implements AutoCloseable {
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 abstract class Repository implements AutoCloseable {
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)

1
org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackFetchConnection.java

@ -272,6 +272,7 @@ public abstract class BasePackFetchConnection extends BasePackConnection
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$

1
org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

@ -314,6 +314,7 @@ public abstract class BaseReceivePack {
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();

1
org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java

@ -200,6 +200,7 @@ class FetchProcess {
.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);

Loading…
Cancel
Save