diff options
Diffstat (limited to 'sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java')
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java b/sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java index 8342668300f..f728b2be2ac 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scm/git/GitScmProvider.java @@ -170,10 +170,9 @@ public class GitScmProvider extends ScmProvider { } Map<Path, Set<Integer>> changedLines = new HashMap<>(); - Path repoRootDir = repo.getDirectory().toPath().getParent(); for (Path path : changedFiles) { - collectChangedLines(repo, mergeBaseCommit.get(), changedLines, repoRootDir, path); + collectChangedLines(repo, mergeBaseCommit.get(), changedLines, path); } return changedLines; } catch (Exception e) { @@ -182,7 +181,7 @@ public class GitScmProvider extends ScmProvider { return null; } - private void collectChangedLines(Repository repo, RevCommit mergeBaseCommit, Map<Path, Set<Integer>> changedLines, Path repoRootDir, Path changedFile) { + private void collectChangedLines(Repository repo, RevCommit mergeBaseCommit, Map<Path, Set<Integer>> changedLines, Path changedFile) { ChangedLinesComputer computer = new ChangedLinesComputer(); try (DiffFormatter diffFmt = new DiffFormatter(new BufferedOutputStream(computer.receiver()))) { @@ -190,7 +189,11 @@ public class GitScmProvider extends ScmProvider { diffFmt.setRepository(repo); diffFmt.setProgressMonitor(NullProgressMonitor.INSTANCE); diffFmt.setDiffComparator(RawTextComparator.WS_IGNORE_ALL); - diffFmt.setPathFilter(PathFilter.create(toGitPath(repoRootDir.relativize(changedFile).toString()))); + + Path workTree = repo.getWorkTree().toPath(); + String relativePath = workTree.relativize(changedFile).toString(); + PathFilter pathFilter = PathFilter.create(toGitPath(relativePath)); + diffFmt.setPathFilter(pathFilter); AbstractTreeIterator mergeBaseTree = prepareTreeParser(repo, mergeBaseCommit); List<DiffEntry> diffEntries = diffFmt.scan(mergeBaseTree, new FileTreeIterator(repo)); |