org.eclipse.jgit.diff.HistogramDiff Java Examples
The following examples show how to use
org.eclipse.jgit.diff.HistogramDiff.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Main.java From diff-check with GNU Lesser General Public License v2.1 | 5 votes |
private static List<File> calculateGitDiffFiles(PMDConfiguration configuration, Set<Language> languages) { LanguageFilenameFilter fileSelector = new LanguageFilenameFilter(languages); File repoDir = new File(configuration.getGitDir()); if (!repoDir.isDirectory()) { System.out.println("git directory " + configuration.getGitDir() + " is not a directory!"); System.exit(1); } String oldRev = configuration.getBaseRev(); boolean includeStagedCodes = configuration.isIncludeStagedCodes(); if (StringUtils.isBlank(oldRev)) { oldRev = includeStagedCodes ? "HEAD" : "HEAD~"; } String newRev = "HEAD"; DiffCalculator calculator = DiffCalculator.builder().diffAlgorithm(new HistogramDiff()).build(); try { List<DiffEntryWrapper> diffEntryList = calculator.calculateDiff(repoDir, oldRev, newRev, includeStagedCodes) .stream() .filter(diffEntry -> !diffEntry.isDeleted()) .filter(diffEntry -> fileSelector.accept(diffEntry.getNewFile().getParentFile(), diffEntry.getNewFile().getName())) .collect(Collectors.toList()); if (StringUtils.isNotBlank(configuration.getExcludeRegexp())) { Pattern excludePattern = Pattern.compile(configuration.getExcludeRegexp()); diffEntryList.removeIf(diffEntry -> excludePattern.matcher(diffEntry.getAbsoluteNewPath()).matches()); } DIFF_ENTRY_LIST.addAll(diffEntryList); return diffEntryList.stream() .map(DiffEntryWrapper::getNewFile) .collect(Collectors.toList()); } catch (Exception e) { e.printStackTrace(); System.out.println("error happened when calculate git diff"); return Collections.emptyList(); } }
Example #2
Source File: Main.java From diff-check with GNU Lesser General Public License v2.1 | 5 votes |
private static List<File> getGitDiffFilesToProcess(List<Pattern> patternsToExclude, CommandLine commandLine) { String gitDirPath = commandLine.getOptionValue(OPTION_GIT_DIR_NAME); File repoDir = new File(gitDirPath); if (!repoDir.isDirectory()) { System.out.println("git directory " + gitDirPath + " is not a directory!"); System.exit(1); } String oldRev = commandLine.getOptionValue(OPTION_GIT_BASE_REV_NAME); boolean includeStagedCodes = commandLine.hasOption(OPTION_GIT_INCLUDE_STAGED_CODES_NAME); if (StringUtils.isEmptyOrNull(oldRev)) { oldRev = includeStagedCodes ? "HEAD" : "HEAD~"; } String newRev = "HEAD"; DiffCalculator calculator = DiffCalculator.builder().diffAlgorithm(new HistogramDiff()).build(); try { List<DiffEntryWrapper> diffEntryList = calculator.calculateDiff(repoDir, oldRev, newRev, includeStagedCodes) .stream() .filter(diffEntry -> !diffEntry.isDeleted()) .filter(diffEntry -> patternsToExclude.stream() .noneMatch(p -> p.matcher(diffEntry.getNewPath()).matches())) .collect(Collectors.toList()); DIFF_ENTRY_LIST.addAll(diffEntryList); return diffEntryList.stream() .map(DiffEntryWrapper::getNewFile) .collect(Collectors.toList()); } catch (Exception e) { e.printStackTrace(); System.out.println("error happened when calculate git diff"); return Collections.emptyList(); } }
Example #3
Source File: DiffCalculatorTest.java From diff-check with GNU Lesser General Public License v2.1 | 5 votes |
@Test public void testDoCalculateCommitDiffWhenFileAdded() throws Exception { try (Git git = new Git(db); ObjectReader reader = git.getRepository().newObjectReader()) { File repoDir = git.getRepository().getDirectory().getParentFile(); File fileToAdd = new File(repoDir, "added.txt"); File fileRemainUnchanged = new File(repoDir, "unchanged.txt"); writeStringToFile(fileRemainUnchanged, "no change"); git.add() .addFilepattern(fileRemainUnchanged.getName()) .call(); RevCommit oldCommit = doCommit(git); writeStringToFile(fileToAdd, "add file"); git.add().addFilepattern(fileToAdd.getName()).call(); RevCommit newCommit = doCommit(git); DiffCalculator calculator = DiffCalculator.builder() .diffAlgorithm(new HistogramDiff()) .build(); List<DiffEntryWrapper> wrappers = Whitebox.<List<DiffEntryWrapper>>invokeMethod( calculator, "doCalculateCommitDiff", oldCommit, newCommit, reader, git, repoDir, Collections.emptySet()); Assert.assertEquals(1, wrappers.size()); DiffEntryWrapper wrapper = wrappers.get(0); Assert.assertEquals(fileToAdd, wrapper.getNewFile()); List<Edit> edits = wrapper.getEditList(); Edit insertEdit = edits.get(0); Assert.assertEquals(Edit.Type.INSERT, insertEdit.getType()); Assert.assertEquals(0, insertEdit.getBeginB()); Assert.assertEquals(1, insertEdit.getEndB()); } }
Example #4
Source File: DiffCalculatorTest.java From diff-check with GNU Lesser General Public License v2.1 | 5 votes |
@Test public void testDoCalculateIndexedDiffWhenFileAdded() throws Exception { try (Git git = new Git(db); ObjectReader reader = git.getRepository().newObjectReader()) { File repoDir = git.getRepository().getDirectory().getParentFile(); File fileToAdd = new File(repoDir, "added.txt"); File fileRemainUnchanged = new File(repoDir, "unchanged.txt"); writeStringToFile(fileRemainUnchanged, "no change"); git.add() .addFilepattern(fileRemainUnchanged.getName()) .call(); RevCommit oldCommit = doCommit(git); writeStringToFile(fileToAdd, "add file"); git.add().addFilepattern(fileToAdd.getName()).call(); DiffCalculator calculator = DiffCalculator.builder() .diffAlgorithm(new HistogramDiff()) .build(); List<DiffEntryWrapper> wrappers = Whitebox.<List<DiffEntryWrapper>>invokeMethod( calculator, "doCalculateIndexedDiff", oldCommit, reader, git, repoDir); Assert.assertEquals(1, wrappers.size()); DiffEntryWrapper wrapper = wrappers.get(0); Assert.assertEquals(fileToAdd, wrapper.getNewFile()); List<Edit> edits = wrapper.getEditList(); Edit insertEdit = edits.get(0); Assert.assertEquals(Edit.Type.INSERT, insertEdit.getType()); Assert.assertEquals(0, insertEdit.getBeginB()); Assert.assertEquals(1, insertEdit.getEndB()); } }
Example #5
Source File: DiffCalculatorTest.java From diff-check with GNU Lesser General Public License v2.1 | 4 votes |
@Test public void testCalculateDiff() throws Exception { try (Git git = new Git(db); ObjectReader reader = git.getRepository().newObjectReader()) { File repoDir = git.getRepository().getDirectory().getParentFile(); File fileToChange = new File(repoDir, "changed.txt"); File fileRemainUnchanged = new File(repoDir, "unchanged.txt"); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line") .append("\n") .append("third line") .append("\n") .toString()); writeStringToFile(fileRemainUnchanged, "no change"); git.add() .addFilepattern(fileToChange.getName()) .addFilepattern(fileRemainUnchanged.getName()) .call(); RevCommit oldCommit = doCommit(git); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line changed") .append("\n") .append("third line") .append("\n") .append("fourth line") .toString()); git.add().addFilepattern(fileToChange.getName()).call(); RevCommit newCommit = doCommit(git); DiffCalculator calculator = DiffCalculator.builder() .diffAlgorithm(new HistogramDiff()) .comparator(RawTextComparator.DEFAULT) .bigFileThreshold(DiffHelper.DEFAULT_BIG_FILE_THRESHOLD) .build(); List<DiffEntryWrapper> wrappers = calculator.calculateDiff( repoDir, oldCommit.name(), newCommit.name(), true); Assert.assertEquals(1, wrappers.size()); DiffEntryWrapper wrapper = wrappers.get(0); Assert.assertEquals(fileToChange, wrapper.getNewFile()); List<Edit> edits = wrapper.getEditList(); Edit replaceEdit = edits.get(0); Assert.assertEquals(Edit.Type.REPLACE, replaceEdit.getType()); Assert.assertEquals(1, replaceEdit.getBeginB()); Assert.assertEquals(2, replaceEdit.getEndB()); Edit insertEdit = edits.get(1); Assert.assertEquals(Edit.Type.INSERT, insertEdit.getType()); Assert.assertEquals(3, insertEdit.getBeginB()); Assert.assertEquals(4, insertEdit.getEndB()); } }
Example #6
Source File: DiffCalculatorTest.java From diff-check with GNU Lesser General Public License v2.1 | 4 votes |
@Test public void testDoCalculateCommitDiffWhenFileChanged() throws Exception { try (Git git = new Git(db); ObjectReader reader = git.getRepository().newObjectReader()) { File repoDir = git.getRepository().getDirectory().getParentFile(); File fileToChange = new File(repoDir, "changed.txt"); File fileRemainUnchanged = new File(repoDir, "unchanged.txt"); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line") .append("\n") .append("third line") .append("\n") .toString()); writeStringToFile(fileRemainUnchanged, "no change"); git.add() .addFilepattern(fileToChange.getName()) .addFilepattern(fileRemainUnchanged.getName()) .call(); RevCommit oldCommit = doCommit(git); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line changed") .append("\n") .append("third line") .append("\n") .append("fourth line") .toString()); git.add().addFilepattern(fileToChange.getName()).call(); RevCommit newCommit = doCommit(git); DiffCalculator calculator = DiffCalculator.builder() .diffAlgorithm(new HistogramDiff()) .build(); List<DiffEntryWrapper> wrappers = Whitebox.<List<DiffEntryWrapper>>invokeMethod( calculator, "doCalculateCommitDiff", oldCommit, newCommit, reader, git, repoDir, Collections.emptySet()); Assert.assertEquals(1, wrappers.size()); DiffEntryWrapper wrapper = wrappers.get(0); Assert.assertEquals(fileToChange, wrapper.getNewFile()); List<Edit> edits = wrapper.getEditList(); Edit replaceEdit = edits.get(0); Assert.assertEquals(Edit.Type.REPLACE, replaceEdit.getType()); Assert.assertEquals(1, replaceEdit.getBeginB()); Assert.assertEquals(2, replaceEdit.getEndB()); Edit insertEdit = edits.get(1); Assert.assertEquals(Edit.Type.INSERT, insertEdit.getType()); Assert.assertEquals(3, insertEdit.getBeginB()); Assert.assertEquals(4, insertEdit.getEndB()); } }
Example #7
Source File: DiffCalculatorTest.java From diff-check with GNU Lesser General Public License v2.1 | 4 votes |
@Test public void testDoCalculateIndexedDiffWhenFileChanged() throws Exception { try (Git git = new Git(db); ObjectReader reader = git.getRepository().newObjectReader()) { File repoDir = git.getRepository().getDirectory().getParentFile(); File fileToChange = new File(repoDir, "changed.txt"); File fileRemainUnchanged = new File(repoDir, "unchanged.txt"); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line") .append("\n") .append("third line") .append("\n") .toString()); writeStringToFile(fileRemainUnchanged, "no change"); git.add() .addFilepattern(fileToChange.getName()) .addFilepattern(fileRemainUnchanged.getName()) .call(); RevCommit oldCommit = doCommit(git); writeStringToFile(fileToChange, new StringBuilder() .append("first line") .append("\n") .append("second line changed") .append("\n") .append("third line") .append("\n") .append("fourth line") .toString()); git.add().addFilepattern(fileToChange.getName()).call(); DiffCalculator calculator = DiffCalculator.builder() .diffAlgorithm(new HistogramDiff()) .build(); List<DiffEntryWrapper> wrappers = Whitebox.<List<DiffEntryWrapper>>invokeMethod( calculator, "doCalculateIndexedDiff", oldCommit, reader, git, repoDir); Assert.assertEquals(1, wrappers.size()); DiffEntryWrapper wrapper = wrappers.get(0); Assert.assertEquals(fileToChange, wrapper.getNewFile()); List<Edit> edits = wrapper.getEditList(); Edit replaceEdit = edits.get(0); Assert.assertEquals(Edit.Type.REPLACE, replaceEdit.getType()); Assert.assertEquals(1, replaceEdit.getBeginB()); Assert.assertEquals(2, replaceEdit.getEndB()); Edit insertEdit = edits.get(1); Assert.assertEquals(Edit.Type.INSERT, insertEdit.getType()); Assert.assertEquals(3, insertEdit.getBeginB()); Assert.assertEquals(4, insertEdit.getEndB()); } }
Example #8
Source File: MergeAlgorithm.java From onedev with MIT License | 2 votes |
/** * Creates a new MergeAlgorithm which uses * {@link org.eclipse.jgit.diff.HistogramDiff} as diff algorithm */ public MergeAlgorithm() { this(new HistogramDiff()); }