Use original repository to collect stats
Make sure to always work on the original repository, even in case of
DelegateRepository.
Bug: Issue 15997
Change-Id: Ifd09670f3e3a9d529816a0241fc3e81c15387d77
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/UpdateGitMetricsTask.java b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/UpdateGitMetricsTask.java
index ed120e5..7dc726d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/UpdateGitMetricsTask.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/UpdateGitMetricsTask.java
@@ -16,6 +16,7 @@
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.entities.Project;
+import com.google.gerrit.server.git.DelegateRepository;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
@@ -57,7 +58,13 @@
repository.getIdentifier(), projectName);
// TODO Loop through all the collectors
Project project = Project.builder(projectNameKey).build();
- GitStats gitStats = new GitStats((FileRepository) repository, project);
+
+ Repository unwrappedRepo =
+ repository instanceof DelegateRepository
+ ? ((DelegateRepository) repository).delegate()
+ : repository;
+
+ GitStats gitStats = new GitStats((FileRepository) unwrappedRepo, project);
Map<String, Long> newMetrics = gitStats.get();
logger.atInfo().log(
"Here all the metrics for %s - %s", project.getName(), getStringFromMap(newMetrics));