@@ -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