Merge branch 'stable-2.12' into stable-2.13
* stable-2.12:
Fix standalone Eclipse project generation
Calculate repository disk usage by adding size of git objects
Remove source_under_test to comply with latest buck version
Change-Id: I07c7c515d05f4c6c4a9df2b5ba5af937b659e602
diff --git a/BUCK b/BUCK
index 289b610..4d527fb 100644
--- a/BUCK
+++ b/BUCK
@@ -13,23 +13,18 @@
]
)
-# this is required for bucklets/tools/eclipse/project.py to work
-# not sure, if this does something useful in standalone context
+TEST_DEPS = GERRIT_PLUGIN_API + GERRIT_TESTS + [
+ ':quota__plugin'
+]
+
java_library(
name = 'classpath',
- deps = [':quota__plugin'],
+ deps = TEST_DEPS,
)
java_test(
name = 'quota_tests',
srcs = glob(['src/test/java/**/*.java']),
labels = ['quota'],
- deps = GERRIT_PLUGIN_API + [
- ':quota__plugin',
- '//lib:junit',
- '//lib/easymock:easymock',
- '//lib/log:log4j',
- '//lib/log:impl_log4j',
- ],
- source_under_test = [':quota__plugin'],
+ deps = TEST_DEPS,
)
diff --git a/lib/BUCK b/lib/BUCK
deleted file mode 100644
index 6959cde..0000000
--- a/lib/BUCK
+++ /dev/null
@@ -1,19 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-maven_jar(
- name = 'junit',
- id = 'junit:junit:4.11',
- sha1 = '4e031bb61df09069aeb2bffb4019e7a5034a4ee0',
- attach_source = False,
- license = 'DO_NOT_DISTRIBUTE',
- deps = [':hamcrest-core'],
-)
-
-maven_jar(
- name = 'hamcrest-core',
- id = 'org.hamcrest:hamcrest-core:1.3',
- sha1 = '42a25dc3219429f0e5d060061f71acb49bf010a0',
- attach_source = False,
- license = 'DO_NOT_DISTRIBUTE',
- visibility = ['//lib:junit'],
-)
diff --git a/lib/easymock/BUCK b/lib/easymock/BUCK
deleted file mode 100644
index 0a4eb4d..0000000
--- a/lib/easymock/BUCK
+++ /dev/null
@@ -1,31 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-maven_jar(
- name = 'easymock',
- id = 'org.easymock:easymock:3.4',
- sha1 = '9fdeea183a399f25c2469497612cad131e920fa3',
- license = 'DO_NOT_DISTRIBUTE',
- attach_source = False,
- deps = [
- ':cglib-2_2',
- ':objenesis',
- ],
-)
-
-maven_jar(
- name = 'cglib-2_2',
- id = 'cglib:cglib-nodep:2.2.2',
- sha1 = '00d456bb230c70c0b95c76fb28e429d42f275941',
- license = 'DO_NOT_DISTRIBUTE',
- attach_source = False,
-)
-
-maven_jar(
- name = 'objenesis',
- id = 'org.objenesis:objenesis:1.2',
- sha1 = 'bfcb0539a071a4c5a30690388903ac48c0667f2a',
- license = 'DO_NOT_DISTRIBUTE',
- visibility = ['//lib/powermock:powermock-reflect'],
- attach_source = False,
-)
-
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index fefa172..4b48569 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -12,3 +12,11 @@
license = 'Apache2.0',
)
+maven_jar(
+ name = 'acceptance-framework',
+ id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
+ sha1 ='76eceefa7e31c6945513c36c4d106066d1df3e63',
+ license = 'Apache2.0',
+ attach_source = False,
+ repository = REPO,
+)
diff --git a/lib/log/BUCK b/lib/log/BUCK
deleted file mode 100644
index be5cac5..0000000
--- a/lib/log/BUCK
+++ /dev/null
@@ -1,21 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-VER = '1.7.7'
-
-maven_jar(
- name = 'impl_log4j',
- id = 'org.slf4j:slf4j-log4j12:' + VER,
- sha1 = '58f588119ffd1702c77ccab6acb54bfb41bed8bd',
- license = 'slf4j',
- deps = [':log4j'],
- attach_source = False,
-)
-
-maven_jar(
- name = 'log4j',
- id = 'log4j:log4j:1.2.17',
- sha1 = '5af35056b4d257e4b64b9e8069c0746e8b08629f',
- license = 'Apache2.0',
- exclude = ['META-INF/LICENSE', 'META-INF/NOTICE'],
- attach_source = False,
-)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
index e9a1973..4388cd9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java
@@ -17,8 +17,10 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.Ordering;
+import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.cache.CacheModule;
+import com.google.gerrit.server.config.PluginConfigFactory;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.ReceivePackInitializer;
import com.google.gerrit.server.project.ProjectCache;
@@ -28,6 +30,9 @@
import com.google.inject.name.Named;
import org.apache.commons.lang.mutable.MutableLong;
+import org.eclipse.jgit.internal.storage.file.FileRepository;
+import org.eclipse.jgit.internal.storage.file.GC;
+import org.eclipse.jgit.internal.storage.file.GC.RepoStatistics;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.PostReceiveHook;
import org.eclipse.jgit.transport.ReceiveCommand;
@@ -145,15 +150,23 @@
static class Loader extends CacheLoader<Project.NameKey, AtomicLong> {
private final GitRepositoryManager gitManager;
+ private final boolean useGitObjectCount;
@Inject
- Loader(GitRepositoryManager gitManager) {
+ Loader(GitRepositoryManager gitManager,
+ PluginConfigFactory cfg,
+ @PluginName String pluginName) {
this.gitManager = gitManager;
+ this.useGitObjectCount = cfg.getFromGerritConfig(pluginName)
+ .getBoolean("useGitObjectCount", false);
}
@Override
public AtomicLong load(Project.NameKey project) throws IOException {
- try (Repository git = gitManager.openRepository(project)){
+ try (Repository git = gitManager.openRepository(project)) {
+ if (useGitObjectCount) {
+ return new AtomicLong(getDiskUsageByGitObjectCount(git));
+ }
return new AtomicLong(getDiskUsage(git.getDirectory()));
}
}
@@ -172,6 +185,12 @@
});
return size.longValue();
}
+
+ private long getDiskUsageByGitObjectCount(Repository repo)
+ throws IOException {
+ RepoStatistics stats = new GC((FileRepository) repo).getStatistics();
+ return stats.sizeOfLooseObjects + stats.sizeOfPackedObjects;
+ }
}
@Override
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index 7dd1927..e22de10 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -55,6 +55,12 @@
buck test
```
+This project can be imported into the Eclipse IDE:
+
+```
+ ./bucklets/tools/eclipse.py
+```
+
### Build in Gerrit tree
Clone or link this plugin to the plugins directory of Gerrit's source
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index ea254a7..31c32b9 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -119,6 +119,20 @@
maxTotalSize = 20 m
```
+If one prefers computing a repository size by adding the size of the git objects,
+the following section should be added into the `gerrit.config` file:
+
+```
+ [plugin "quota"]
+ useGitObjectCount = true
+```
+
+<a id="useGitObjectCount">
+`plugin.quota.useGitObjectCount`
+: Use git object count. If true, *repoSize = looseObjectsSize +
+packedObjectsSize*, where *looseObjectsSize* and *packedObjectsSize* are given
+by JGit RepoStatistics. By default, false.
+
Publication Schedule
--------------------