Skip to content

Commit 7a736d8

Browse files
committed
add proper check for empty repositories
1 parent 4c25f59 commit 7a736d8

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/history/GitRepository.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,11 @@ public int getPerPartesCount() {
459459
return MAX_CHANGESETS;
460460
}
461461

462+
private boolean isRepositoryEmpty() {
463+
File headsFile = Paths.get(getDirectoryName(), Constants.DOT_GIT, "refs", "heads").toFile();
464+
return headsFile.isDirectory() && (Objects.requireNonNull(headsFile.listFiles()).length == 0);
465+
}
466+
462467
@Override
463468
public void accept(String sinceRevision, Consumer<BoundaryChangesets.IdWithProgress> visitor, Progress progress)
464469
throws HistoryException {
@@ -474,9 +479,11 @@ public void accept(String sinceRevision, Consumer<BoundaryChangesets.IdWithProgr
474479
walk.markUninteresting(walk.lookupCommit(objId));
475480
}
476481
ObjectId objId = repository.resolve(Constants.HEAD);
477-
// Assuming this is a case of empty repository.
478-
if (objId == null) {
479-
return;
482+
if (Objects.isNull(objId)) {
483+
if (isRepositoryEmpty()) {
484+
return;
485+
}
486+
throw new HistoryException("cannot resolve HEAD");
480487
}
481488
walk.markStart(walk.parseCommit(objId));
482489

@@ -514,8 +521,7 @@ public void traverseHistory(File file, String sinceRevision, String tillRevision
514521
try (org.eclipse.jgit.lib.Repository repository = getJGitRepository(getDirectoryName());
515522
RevWalk walk = new RevWalk(repository)) {
516523

517-
// Assumes this is empty repository.
518-
if (Objects.isNull(repository.resolve(Constants.HEAD))) {
524+
if (Objects.isNull(repository.resolve(Constants.HEAD)) && isRepositoryEmpty()) {
519525
return;
520526
}
521527

0 commit comments

Comments
 (0)