summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2011-01-24 16:18:23 -0800
committerShawn O. Pearce <spearce@spearce.org>2011-01-27 08:58:44 -0800
commitc218a0760ddcdd9a392b0ae15f99fdccf823cd42 (patch)
treec122b2f792c91b07e0d4c3b4b1dfbd4d961a1ff3 /org.eclipse.jgit
parent559c4661c358a6210c411badf54d4c6a6648b213 (diff)
downloadjgit-c218a0760ddcdd9a392b0ae15f99fdccf823cd42.tar.gz
jgit-c218a0760ddcdd9a392b0ae15f99fdccf823cd42.zip
PackWriter: Use TOPO order only for incremental packs
When performing an initial clone of a repository there are no uninteresting commits, and the resulting pack will be completely self-contained. Therefore PackWriter does not need to honor C Git standard TOPO ordering as described in JGit commit ba984ba2e0a ("Fix checkReferencedIsReachable to use correct base list"). Switching to COMMIT_TIME_DESC when there are no uninteresting commits allows the "Counting objects" phase to emit progress earlier, as the RevWalk will not buffer the commit list. When TOPO is set the RevWalk enumerates all commits first, before outputing any for PackWriter to mark progress updates from. Change-Id: If2b6a9903b536c7fb3c45f85d0a67ff6c6e66f22 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
index 5986aca4e3..17c5a12d40 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
@@ -992,7 +992,10 @@ public class PackWriter {
final ObjectWalk walker = new ObjectWalk(reader);
walker.setRetainBody(false);
- walker.sort(RevSort.TOPO);
+ if (not.isEmpty())
+ walker.sort(RevSort.COMMIT_TIME_DESC);
+ else
+ walker.sort(RevSort.TOPO);
if (thin && !not.isEmpty())
walker.sort(RevSort.BOUNDARY, true);