From b37b1c91651f3d78f3ae72fc5450d327c46906d8 Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Tue, 19 Mar 2013 07:28:36 +0100 Subject: [PATCH] Allow to get repo statistics from GarbageCollectionCommand before gc When running the garbage collection for a repository it is often interesting to compare the repository statistics from before and after the garbage collection to understand the effect of the garbage collection. This is why it makes sense that the GarbageCollectionCommand provides a method to retrieve the repository statistics before running the garbage collection. So far without running the garbage collection the repository statistics can only be retrieved by using JGit internal classes. This is what EGit and Gerrit do at the moment, but it would be better to have an API for this. Change-Id: Id7e579157e9fbef5cfd1fc9f97ada45f0ca8c379 Signed-off-by: Edwin Kempin Signed-off-by: Matthias Sohn --- .../eclipse/jgit/internal/JGitText.properties | 1 + .../jgit/api/GarbageCollectCommand.java | 18 ++++++++++++++++++ .../org/eclipse/jgit/internal/JGitText.java | 1 + 3 files changed, 20 insertions(+) diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties index 677f735ce..b64617b39 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties @@ -124,6 +124,7 @@ couldNotCheckOutBecauseOfConflicts=Could not check out because of conflicts couldNotDeleteLockFileShouldNotHappen=Could not delete lock file. Should not happen couldNotDeleteTemporaryIndexFileShouldNotHappen=Could not delete temporary index file. Should not happen couldNotGetAdvertisedRef=Could not get advertised Ref for branch {0} +couldNotGetRepoStatistics=Could not get repository statistics couldNotLockHEAD=Could not lock HEAD couldNotReadIndexInOneGo=Could not read index in one go, only {0} out of {1} read couldNotReadObjectWhileParsingCommit=Could not read an object while parsing commit {0} diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java index 7fda6cc01..77b84d3a3 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/GarbageCollectCommand.java @@ -129,6 +129,24 @@ public class GarbageCollectCommand extends GitCommand { } } + /** + * Computes and returns the repository statistics. + * + * @return the repository statistics + * @throws GitAPIException + * thrown if the repository statistics cannot be computed + * @since 3.0 + */ + public Properties getStatistics() throws GitAPIException { + try { + GC gc = new GC((FileRepository) repo); + return toProperties(gc.getStatistics()); + } catch (IOException e) { + throw new JGitInternalException( + JGitText.get().couldNotGetRepoStatistics, e); + } + } + @SuppressWarnings("boxing") private static Properties toProperties(RepoStatistics stats) { Properties p = new Properties(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index 7a1efe89d..d7eb8af95 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java @@ -186,6 +186,7 @@ public class JGitText extends TranslationBundle { /***/ public String couldNotDeleteLockFileShouldNotHappen; /***/ public String couldNotDeleteTemporaryIndexFileShouldNotHappen; /***/ public String couldNotGetAdvertisedRef; + /***/ public String couldNotGetRepoStatistics; /***/ public String couldNotLockHEAD; /***/ public String couldNotReadIndexInOneGo; /***/ public String couldNotReadObjectWhileParsingCommit;