List of usage examples for org.eclipse.jgit.treewalk CanonicalTreeParser CanonicalTreeParser
public CanonicalTreeParser()
From source file:ShowFileDiff.java
License:Apache License
private static AbstractTreeIterator prepareTreeParser(Repository repository, String objectId) throws IOException, MissingObjectException, IncorrectObjectTypeException { // from the commit we can build the tree which allows us to construct the TreeParser RevWalk walk = new RevWalk(repository); RevCommit commit = walk.parseCommit(ObjectId.fromString(objectId)); RevTree tree = walk.parseTree(commit.getTree().getId()); CanonicalTreeParser oldTreeParser = new CanonicalTreeParser(); ObjectReader oldReader = repository.newObjectReader(); try {//from w w w . ja v a2 s .c o m oldTreeParser.reset(oldReader, tree.getId()); } finally { oldReader.release(); } walk.dispose(); return oldTreeParser; }
From source file:at.bitandart.zoubek.mervin.gerrit.GerritReviewRepositoryService.java
License:Open Source License
/** * loads all patches of from the given list of {@link DiffEntry}s. * /*from w w w.j a v a 2s . co m*/ * @param patchSet * the patchSet to add the patches to. * @param ref * the ref to the commit of the patch set. * @param repository * the git repository instance * @throws RepositoryIOException */ private void loadPatches(PatchSet patchSet, Ref ref, Git git) throws RepositoryIOException { EList<Patch> patches = patchSet.getPatches(); Repository repository = git.getRepository(); try { RevWalk revWalk = new RevWalk(repository); RevCommit newCommit = revWalk.parseCommit(ref.getObjectId()); RevCommit oldCommit = newCommit.getParent(0); revWalk.parseHeaders(oldCommit); ObjectReader objectReader = repository.newObjectReader(); revWalk.close(); CanonicalTreeParser newTreeIterator = new CanonicalTreeParser(); newTreeIterator.reset(objectReader, newCommit.getTree().getId()); CanonicalTreeParser oldTreeIterator = new CanonicalTreeParser(); oldTreeIterator.reset(objectReader, oldCommit.getTree().getId()); List<DiffEntry> diffs = git.diff().setOldTree(oldTreeIterator).setNewTree(newTreeIterator).call(); for (DiffEntry diff : diffs) { String newPath = diff.getNewPath(); String oldPath = diff.getOldPath(); Patch patch = null; /* * only papyrus diagrams are supported for now, so models are in * .uml files, diagrams in .notation files */ if (diff.getChangeType() != ChangeType.DELETE) { if (newPath.endsWith(".uml")) { patch = modelReviewFactory.createModelPatch(); } else if (newPath.endsWith(".notation")) { patch = modelReviewFactory.createDiagramPatch(); } else { patch = modelReviewFactory.createPatch(); } } else { if (oldPath.endsWith(".uml")) { patch = modelReviewFactory.createModelPatch(); } else if (oldPath.endsWith(".notation")) { patch = modelReviewFactory.createDiagramPatch(); } else { patch = modelReviewFactory.createPatch(); } } switch (diff.getChangeType()) { case ADD: patch.setChangeType(PatchChangeType.ADD); break; case COPY: patch.setChangeType(PatchChangeType.COPY); break; case DELETE: patch.setChangeType(PatchChangeType.DELETE); break; case MODIFY: patch.setChangeType(PatchChangeType.MODIFY); break; case RENAME: patch.setChangeType(PatchChangeType.RENAME); break; } patch.setNewPath(newPath); patch.setOldPath(oldPath); if (diff.getChangeType() != ChangeType.DELETE) { ObjectLoader objectLoader = repository.open(diff.getNewId().toObjectId()); patch.setNewContent(objectLoader.getBytes()); } if (diff.getChangeType() != ChangeType.ADD) { ObjectLoader objectLoader = repository.open(diff.getOldId().toObjectId()); patch.setOldContent(objectLoader.getBytes()); } patches.add(patch); } } catch (IOException e) { throw new RepositoryIOException(MessageFormat.format( "An IO error occured during loading the patches for patch set #{0}", patchSet.getId()), e); } catch (GitAPIException e) { throw new RepositoryIOException( MessageFormat.format("An JGit API error occured during loading the patches for patch set #{0}", patchSet.getId()), e); } }
From source file:br.edu.ifpb.scm.api.git.Git.java
private List<DiffEntry> getDiff(String commit, boolean flag) throws IOException { ObjectReader reader = git.getRepository().newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); ObjectId oldTree = git.getRepository().resolve(commit + "^{tree}"); // equals newCommit.getTree() oldTreeIter.reset(reader, oldTree);//from ww w. j a v a2s .c o m ObjectId newTree = null; if (flag) { newTree = git.getRepository().resolve(commit + HEAD); // equals oldCommit.getTree() } else { newTree = git.getRepository().resolve(commit + HEAD_NEIGHBOR); // equals oldCommit.getTree() } DiffFormatter formatter = new DiffFormatter(System.out); formatter.setRepository(git.getRepository()); List<DiffEntry> scan = formatter.scan(oldTree, newTree); return scan; }
From source file:br.edu.ifpb.scm.api.git.Git.java
/** * Recupera a diferea entre as verses//from w w w .j a v a2 s .c om * * @param repoJGit {@link org.eclipse.jgit.lib.Repository} Repositorio JGit * JGit * @param rev1 {@link RevCommit} RevCommit * @param rev2 {@link RevCommit} RevCommit * @return {@link List} List de {@link Version} */ private List<ChangedFiles> searchDiff(RevCommit rev1, RevCommit rev2) { List<ChangedFiles> listaOfChangedFiles = new ArrayList<>(); try { ObjectId oldHead = repoJGit.resolve(rev2.getTree().getName()); ObjectId head = repoJGit.resolve(rev1.getTree().getName()); ObjectReader reader = repoJGit.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHead); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, head); org.eclipse.jgit.api.Git g = new org.eclipse.jgit.api.Git(repoJGit); List<DiffEntry> diffs = g.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); diffs.iterator().forEachRemaining(entry -> { String oldPath = null; if (entry.getChangeType().equals(DiffEntry.ChangeType.MODIFY) || entry.getChangeType().equals(DiffEntry.ChangeType.COPY)) { oldPath = entry.getOldPath(); } List<DiffEntry> call = Collections.EMPTY_LIST; ChangedFiles changed = new ChangedFiles(oldPath, entry.getNewPath(), entry.getChangeType().name(), call); listaOfChangedFiles.add(changed); }); } catch (RevisionSyntaxException | IOException | GitAPIException e) { throw new DiffException(e); } return listaOfChangedFiles; }
From source file:br.edu.ifpb.scm.api.loads.Loader.java
public static void showFileDiffs(Git gitRepository) { Repository repo = gitRepository.getRepository(); try {/*from w ww . ja v a2s . c o m*/ ObjectId head = ObjectId.fromString("c24af304077e4a6d1925db7cd35d0cd1ed488d6a"); ObjectId previousHead = ObjectId.fromString("c16be41e77bb53a4b639cb864c9a6e4d0f8df7c2"); ObjectReader reader = repo.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, previousHead); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, head); List<DiffEntry> listDiffs = gitRepository.diff().setOldTree(oldTreeIter).setNewTree(newTreeIter).call(); listDiffs.stream().forEach((DiffEntry diff) -> { DiffFormatter formatter = new DiffFormatter(System.out); formatter.setRepository(repo); System.out.println(diff); try { formatter.format(diff); } catch (IOException ex) { Logger.getLogger(Loader.class.getName()).log(Level.SEVERE, null, ex); } }); } catch (IOException | GitAPIException ex) { Logger.getLogger(Loader.class.getName()).log(Level.SEVERE, null, ex); } }
From source file:br.edu.ifpb.scm.api.loads.LoaderVersions.java
public static void teste2() throws IOException, GitAPIException { org.eclipse.jgit.api.Git git = org.eclipse.jgit.api.Git.open(PATH); org.eclipse.jgit.lib.Repository repository = git.getRepository(); repository.findRef(URL);/*from ww w .ja v a 2 s. com*/ ObjectId oldHead = repository.resolve("HEAD~^{tree}"); ObjectId newHead = repository.resolve("HEAD^{tree}"); ObjectReader reader = repository.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); // ObjectId oldTree = git.getRepository().resolve("SHA-1{64c852a8fe9e3673aa381f95c4b0420986d1f925}"); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); // ObjectId newTree = git.getRepository().resolve("SHA-1{12ae7a9960c49cfe68bdd5f7b0a58e1b3b0c6e56}"); oldTreeIter.reset(reader, oldHead); newTreeIter.reset(reader, newHead); try (org.eclipse.jgit.api.Git g = new org.eclipse.jgit.api.Git(repository)) { List<DiffEntry> diffs = g.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); for (DiffEntry entry : diffs) { System.out.println("Entry: " + entry); } } // DiffFormatter diffFormatter = new DiffFormatter(DisabledOutputStream.INSTANCE); // diffFormatter.setRepository(git.getRepository()); // List<DiffEntry> entries = diffFormatter.scan(oldTreeIter, newTreeIter); // // entries.stream().forEach((entry) -> { // System.out.println(entry.getChangeType()); // }); }
From source file:br.edu.ifpb.scm.api.loads.LoaderVersions.java
public static void funcionando(final String commit) throws IOException, GitAPIException { org.eclipse.jgit.api.Git git = org.eclipse.jgit.api.Git.open(PATH); try (org.eclipse.jgit.lib.Repository repository = git.getRepository()) { // The {tree} will return the underlying tree-id instead of the commit-id itself! // For a description of what the carets do see e.g. http://www.paulboxley.com/blog/2011/06/git-caret-and-tilde // This means we are selecting the parent of the parent of the parent of the parent of current HEAD and // take the tree-ish of it //id da tree // a RevWalk allows to walk over commits based on some filtering that is defined ObjectId obj = ObjectId.fromString(commit); RevWalk walk = new RevWalk(repository); RevCommit revCommit = walk.parseCommit(obj); RevCommit[] arra = revCommit.getParents(); ObjectId obj2 = ObjectId.fromString(arra[0].getName()); RevWalk walk2 = new RevWalk(repository); RevCommit revCommit2 = walk2.parseCommit(obj2); ObjectId oldHead = repository.resolve(revCommit2.getTree().getName()); ObjectId head = repository.resolve(revCommit.getTree().getName()); //Pegando o codigo de cada commit pra arvore System.out.println("Printing diff between tree: " + oldHead.getName() + " and " + head.getName()); // prepare the two iterators to compute the diff between try (ObjectReader reader = repository.newObjectReader()) { CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHead); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, head); // finally get the list of changed files try (org.eclipse.jgit.api.Git g = new org.eclipse.jgit.api.Git(repository)) { List<DiffEntry> diffs = g.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); diffs.stream().forEach((entry) -> { System.out.println("Entry: " + entry); });//from w ww .jav a 2 s. com } } } System.out.println("Done"); }
From source file:ch.uzh.ifi.seal.permo.history.git.core.model.jgit.JGitCommit.java
License:Apache License
private AbstractTreeIterator getTreeIteratorOfCommit(final Repository repo, final RevCommit commit) throws IncorrectObjectTypeException, IOException { final ObjectId head = commit.getTree().getId(); final ObjectReader reader = repo.newObjectReader(); final CanonicalTreeParser treeIt = new CanonicalTreeParser(); treeIt.reset(reader, head);/*from w w w. j a v a2 s . c om*/ return treeIt; }
From source file:co.bledo.gitmin.servlet.Review.java
License:Apache License
private AbstractTreeIterator getTreeIterator(Repository repo, String name) throws IOException { final ObjectId id = repo.resolve(name); if (id == null) throw new IllegalArgumentException(name); final CanonicalTreeParser p = new CanonicalTreeParser(); final ObjectReader or = repo.newObjectReader(); try {/*from ww w . ja v a 2s . c om*/ p.reset(or, new RevWalk(repo).parseTree(id)); return p; } finally { or.release(); } }
From source file:com.addthis.hydra.job.store.JobStoreGit.java
License:Apache License
private AbstractTreeIterator getTreeIterator(String name) throws IOException { final ObjectId id = repository.resolve(name); if (id == null) { throw new IllegalArgumentException(name); }/*from w ww. jav a 2s. c o m*/ final CanonicalTreeParser p = new CanonicalTreeParser(); final ObjectReader or = repository.newObjectReader(); try { p.reset(or, new RevWalk(repository).parseTree(id)); return p; } finally { or.release(); } }