List of usage examples for org.eclipse.jgit.lib Repository newObjectReader
@NonNull
public ObjectReader newObjectReader()
From source file:gerrit.PRED_commit_edits_2.java
License:Apache License
@Override public Operation exec(Prolog engine) throws PrologException { engine.setB0();//from w ww .j a va 2s . com Term a1 = arg1.dereference(); Term a2 = arg2.dereference(); Pattern fileRegex = getRegexParameter(a1); Pattern editRegex = getRegexParameter(a2); PatchList pl = StoredValues.PATCH_LIST.get(engine); Repository repo = StoredValues.REPOSITORY.get(engine); try (ObjectReader reader = repo.newObjectReader(); RevWalk rw = new RevWalk(reader)) { final RevTree aTree; final RevTree bTree; final RevCommit bCommit = rw.parseCommit(pl.getNewId()); if (pl.getOldId() != null) { aTree = rw.parseTree(pl.getOldId()); } else { // Octopus merge with unknown automatic merge result, since the // web UI returns no files to match against, just fail. return engine.fail(); } bTree = bCommit.getTree(); for (PatchListEntry entry : pl.getPatches()) { String newName = entry.getNewName(); String oldName = entry.getOldName(); if (newName.equals("/COMMIT_MSG")) { continue; } if (fileRegex.matcher(newName).find() || (oldName != null && fileRegex.matcher(oldName).find())) { List<Edit> edits = entry.getEdits(); if (edits.isEmpty()) { continue; } Text tA; if (oldName != null) { tA = load(aTree, oldName, reader); } else { tA = load(aTree, newName, reader); } Text tB = load(bTree, newName, reader); for (Edit edit : edits) { if (tA != Text.EMPTY) { String aDiff = tA.getString(edit.getBeginA(), edit.getEndA(), true); if (editRegex.matcher(aDiff).find()) { return cont; } } if (tB != Text.EMPTY) { String bDiff = tB.getString(edit.getBeginB(), edit.getEndB(), true); if (editRegex.matcher(bDiff).find()) { return cont; } } } } } } catch (IOException err) { throw new JavaException(this, 1, err); } return engine.fail(); }
From source file:git_manager.tool.GitOperations.java
License:Open Source License
void printDiffWithHead() { Repository repository = git.getRepository(); ObjectId oldHead;/*from w w w .j a v a 2s.co m*/ try { oldHead = repository.resolve("HEAD~1^{tree}"); ObjectId head = repository.resolve("HEAD^{tree}"); System.out.println("Printing diff between tree: " + oldHead + " and " + head); // prepare the two iterators to compute the diff between 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 List<DiffEntry> diffs = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); for (DiffEntry entry : diffs) { System.out.println("Entry: " + entry); } System.out.println("----------------------"); DiffFormatter df = new DiffFormatter(new ByteArrayOutputStream()); df.setRepository(git.getRepository()); List<DiffEntry> entries = df.scan(oldTreeIter, newTreeIter); for (DiffEntry entry : entries) { System.out.println(entry); } System.out.println("Done"); repository.close(); } catch (RevisionSyntaxException e) { e.printStackTrace(); } catch (AmbiguousObjectException e) { e.printStackTrace(); } catch (IncorrectObjectTypeException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (GitAPIException e) { e.printStackTrace(); } }
From source file:io.fabric8.git.internal.GitDataStore.java
License:Apache License
private AbstractTreeIterator getTreeIterator(Repository db, String name) throws IOException { final ObjectId id = db.resolve(name); if (id == null) throw new IllegalArgumentException(name); final CanonicalTreeParser p = new CanonicalTreeParser(); final ObjectReader or = db.newObjectReader(); try {//from w w w.j a va 2 s .co m p.reset(or, new RevWalk(db).parseTree(id)); return p; } finally { or.release(); } }
From source file:jbenchmarker.trace.git.GitExtraction.java
License:Open Source License
public GitExtraction(Repository repo, CouchDbRepositorySupport<Commit> dbc, CouchDbRepositorySupport<Patch> dbp, DiffAlgorithm diffAlgorithm, String path, boolean detectMovesAndUpdates, int updateThresold, int moveThresold) { this.repository = repo; this.reader = repo.newObjectReader(); this.source = ContentSource.create(reader); this.pairSource = new ContentSource.Pair(source, source); this.diffAlgorithm = diffAlgorithm; this.patchCrud = dbp; this.commitCrud = dbc; this.git = new Git(repo); this.path = path; this.detectMoveAndUpdate = detectMovesAndUpdates; this.updateThresold = updateThresold; this.moveThresold = moveThresold; }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.submodules.SubmoduleAwareTreeIterator.java
License:Apache License
@Override public AbstractTreeIterator createSubtreeIterator(ObjectReader reader) throws IOException { String path = myWrappedIterator.getEntryPathString(); if (myIsOnSubmodule) { CanonicalTreeParser p = new CanonicalTreeParser(); ObjectReader or = null;/*from w w w.jav a 2s. c o m*/ try { Repository r = mySubmoduleResolver.resolveRepository(mySubmoduleResolver.getSubmoduleUrl(path)); or = r.newObjectReader(); p.reset(or, mySubmoduleCommit.getTree().getId()); } catch (Exception e) { if (e instanceof IOException) throw (IOException) e; IOException ioe = new IOException("Submodule error"); ioe.initCause(e); throw ioe; } finally { if (or != null) or.release(); } return createSubmoduleAwareTreeIterator(this, p, mySubmoduleResolver.getSubResolver(mySubmoduleCommit, path), "", mySubmoduleResolver.getSubmoduleUrl(path), getPathFromRoot(path), SubmodulesCheckoutPolicy.getSubSubModulePolicyFor(mySubmodulesPolicy), myLogSubmoduleErrors); } else { Repository r = mySubmoduleResolver.getRepository(); ObjectReader or = r.newObjectReader(); AbstractTreeIterator ati = null; try { ati = myWrappedIterator.createSubtreeIterator(or); } finally { or.release(); } return createSubmoduleAwareTreeIterator(this, ati, mySubmoduleResolver, path, myUrl, myPathFromRoot, mySubmodulesPolicy, myLogSubmoduleErrors); } }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.submodules.SubmoduleAwareTreeIteratorFactory.java
License:Apache License
private static CanonicalTreeParser createTreeParser(final Repository db, final RevCommit commit) throws IOException { ObjectReader reader = db.newObjectReader(); try {//from w w w. j a v a 2 s . co m CanonicalTreeParser parser = new CanonicalTreeParser(); parser.reset(reader, commit.getTree().getId()); return parser; } finally { reader.release(); } }
From source file:model.Buildmodel.java
public int build(Git git, List<RevCommit> logs, RepoSettings rs) throws NoHeadException, GitAPIException, IOException { //ObjectId lastCommitId = repository.resolve(Constants.MASTER); ObjectId parentid = null;//from w w w. ja v a 2 s . c o m ObjectId currid = null; Repository repository = git.getRepository(); //a new reader to read objects from getObjectDatabase() ObjectReader reader = repository.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); List<DiffEntry> diffs = null; WriteData wd = new WriteData(); //Class to write data to an external file wd.initiate(rs); int cnt = 0; //Commits count that is written in data for (RevCommit rev : logs) { if (rev.getParentCount() == 1) { //Not taking Merge commits, for taking them make it >= . try { parentid = repository.resolve(rev.getParent(0).getName() + "^{tree}"); currid = repository.resolve(rev.getName() + "^{tree}"); //Reset this parser to walk through the given tree oldTreeIter.reset(reader, parentid); newTreeIter.reset(reader, currid); diffs = git.diff() //Returns a command object to execute a diff command .setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); //returns a DiffEntry for each path which is different } catch (RevisionSyntaxException | IOException | GitAPIException e) { e.printStackTrace(); } ByteArrayOutputStream out = new ByteArrayOutputStream(); //Create a new formatter with a default level of context. DiffFormatter df = new DiffFormatter(out); //Set the repository the formatter can load object contents from. df.setRepository(git.getRepository()); ArrayList<String> diffText = new ArrayList<String>(); ArrayList<String> filetypes = new ArrayList<String>(); //A DiffEntry is 'A value class representing a change to a file' therefore for each file you have a diff entry. int ovllineadd = 0; int ovllinerem = 0; int totallinechanged = 0; int totalfilrem = 0; int totalfiladd = 0; for (DiffEntry diff : diffs) { try { df.format(diff); //Format a patch script for one file entry. RawText r = new RawText(out.toByteArray()); r.getLineDelimiter(); diffText.add(out.toString()); String st = out.toString(); String filetype = null; int filerem = 0, fileadd = 0, filtyp = 0; ; int lineadd = 0, linerem = 0; String[] temp = st.split("\n"); for (String tem : temp) { if (tem.startsWith("---") || tem.startsWith("+++")) { if (tem.startsWith("---")) { if (tem.endsWith("null")) { fileadd++; //File added } else { int p = tem.lastIndexOf("/"); if (p >= 0) { tem = tem.substring(p + 1, tem.length()); } int h = tem.lastIndexOf("."); if (h >= 0) { filetype = tem.substring(h, tem.length()); filetype = filetype.replace(" ", ""); filetype = filetype.replace("\"", ""); if (filtyp != 1) { filetypes.add(filetype); filtyp = 1; } } else { //README, LICENSE type wanna do? } } } if (tem.startsWith("+++")) { if (tem.endsWith("null")) { filerem++; //Fil removed } else { int p = tem.lastIndexOf("/"); if (p >= 0) { tem = tem.substring(p + 1, tem.length()); } int h = tem.lastIndexOf("."); if (h >= 0) { filetype = tem.substring(h, tem.length()); filetype = filetype.replace(" ", ""); filetype = filetype.replace("\"", ""); if (filtyp != 1) { filetypes.add(filetype); filtyp = 1; } } else { //README, LICENSE type wanna do? } } } } if (tem.startsWith("+") && !tem.startsWith("+++")) { lineadd++; } else if (tem.startsWith("-") && !tem.startsWith("---")) { linerem++; } } ovllineadd += lineadd; ovllinerem += linerem; totallinechanged += (lineadd + linerem); totalfiladd += fileadd; totalfilrem += filerem; out.reset(); } catch (IOException e) { e.printStackTrace(); } } PersonIdent p = rev.getAuthorIdent(); //DateFormat formatter= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); DateFormat formatter = new SimpleDateFormat("HH"); formatter.setTimeZone(TimeZone.getTimeZone("UTC")); String email = p.getEmailAddress(); //So that email folder is created properly if (email.contains("://") || email.contains("//")) { email = email.replace(":", ""); email = email.replace("//", ""); } String[] commsgwords = rev.getFullMessage().split(" "); wd.write(rev.getName(), email, totallinechanged, ovllineadd, ovllinerem, filetypes.size(), totalfiladd, totalfilrem, Integer.parseInt(formatter.format(p.getWhen())), filetypes, commsgwords.length); cnt++; } } repository.close(); return cnt; }
From source file:neembuu.uploader.zip.generator.UpdaterGenerator.java
License:Apache License
/** * Populate all the files to update, if the system should update. *//*from w w w . j ava2 s . c o m*/ private boolean populateDiff() { try { git.fetch().call(); Repository repo = git.getRepository(); ObjectId fetchHead = repo.resolve("FETCH_HEAD^{tree}"); ObjectId head = repo.resolve("HEAD^{tree}"); ObjectReader reader = repo.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, head); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, fetchHead); List<DiffEntry> diffs = git.diff().setShowNameAndStatusOnly(true).setNewTree(newTreeIter) .setOldTree(oldTreeIter).call(); if (diffs.isEmpty()) { System.out.println("No diff"); return false; } else { return true; } } catch (GitAPIException | IOException ex) { Logger.getLogger(UpdaterGenerator.class.getName()).log(Level.SEVERE, null, ex); } return true;//assume true }
From source file:net.aprendizajengrande.gitrecommender.ExtractLog.java
License:Open Source License
private static AbstractTreeIterator prepareTreeParser(Repository repository, RevCommit commit) throws IOException, MissingObjectException, IncorrectObjectTypeException { // from the commit we can build the tree which allows us to construct // the TreeParser RevWalk walk = new RevWalk(repository); RevTree tree = walk.parseTree(commit.getTree().getId()); CanonicalTreeParser result = new CanonicalTreeParser(); ObjectReader reader = repository.newObjectReader(); try {/*from w w w . j a v a2 s. c o m*/ result.reset(reader, tree.getId()); } finally { reader.release(); } walk.dispose(); return result; }
From source file:org.apache.maven.scm.provider.git.jgit.command.diff.JGitDiffCommand.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); }// w ww.j a v a 2 s . co m final CanonicalTreeParser p = new CanonicalTreeParser(); final ObjectReader or = repo.newObjectReader(); try { p.reset(or, new RevWalk(repo).parseTree(id)); return p; } finally { or.release(); } }