diff --git a/src/main/java/org/refactoringminer/util/GitServiceImpl.java b/src/main/java/org/refactoringminer/util/GitServiceImpl.java index 3c398ebe01..e018c4df09 100644 --- a/src/main/java/org/refactoringminer/util/GitServiceImpl.java +++ b/src/main/java/org/refactoringminer/util/GitServiceImpl.java @@ -252,7 +252,18 @@ public Iterable createRevsWalkBetweenCommits(Repository repository, S ObjectId from = repository.resolve(startCommitId); ObjectId to = repository.resolve(endCommitId); try (Git git = new Git(repository)) { - List revCommits = StreamSupport.stream(git.log().addRange(from, to).call() + Iterable iterable = git.log().add(from).call(); + RevCommit parentOfStartCommit = null; + for(RevCommit commit : iterable) { + if(commit.getId().getName().startsWith(startCommitId)) { + if(commit.getParentCount() >= 1) { + parentOfStartCommit = commit.getParent(0); + break; + } + } + } + ObjectId since = parentOfStartCommit != null ? parentOfStartCommit.getId() : from; + List revCommits = StreamSupport.stream(git.log().addRange(since, to).call() .spliterator(), false) .filter(r -> r.getParentCount() == 1) .collect(Collectors.toList());