List of usage examples for org.eclipse.jgit.lib Repository resolve
@Nullable public ObjectId resolve(String revstr) throws AmbiguousObjectException, IncorrectObjectTypeException, RevisionSyntaxException, IOException
From source file:io.fabric8.forge.rest.git.RepositoryResource.java
License:Apache License
protected CommitDetail doCommitDetail(Git git, String commitId) throws IOException { RevCommit baseCommit = doGetCommit(git, commitId); if (baseCommit == null) { return null; } else {/*w w w.jav a2 s . co m*/ List<DiffInfo> diffs = new ArrayList<>(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); Repository r = git.getRepository(); DiffFormatter formatter = createDiffFormatter(r, buffer); //git.diff().setNewTree() RevTree commitTree = baseCommit.getTree(); RevTree baseTree = null; ObjectId parentId = null; if (baseCommit.getParentCount() > 0) { final RevWalk rw = new RevWalk(r); parentId = baseCommit.getParent(0).getId(); RevCommit parent = rw.parseCommit(parentId); baseTree = parent.getTree(); rw.dispose(); } else { // FIXME initial commit. no parent?! baseTree = commitTree; } if (baseTree == null) { baseTree = baseCommit.getTree(); } List<DiffEntry> diffEntries = formatter.scan(baseTree, commitTree); if (diffEntries.isEmpty()) { // lets try get the previous commit String previousCommit = commitId + "~1"; ObjectId resolve = r.resolve(previousCommit); RevTree newTree = null; if (resolve != null) { final RevWalk rw = new RevWalk(r); RevCommit parent = rw.parseCommit(resolve); newTree = parent.getTree(); rw.dispose(); } if (baseTree == null || newTree == null || !Objects.equals(baseTree.getId(), newTree.getId())) { diffEntries = formatter.scan(newTree, commitTree); } } for (DiffEntry diffEntry : diffEntries) { formatter.format(diffEntry); formatter.flush(); String diff = buffer.toString(); buffer.reset(); DiffInfo diffInfo = createDiffInfo(diffEntry, diff); diffs.add(diffInfo); } CommitInfo commitInfo = createCommitInfo(baseCommit); return new CommitDetail(commitInfo, diffs); } }
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 ww w .j ava 2s. com p.reset(or, new RevWalk(db).parseTree(id)); return p; } finally { or.release(); } }
From source file:io.github.gitfx.util.GitFXGsonUtil.java
License:Apache License
public static GitRepoMetaData getGitRepositoryMetaData(String repoPath) { try {/* ww w . j av a 2s . com*/ if (!repoPath.endsWith(".git")) repoPath = repoPath + "/.git"; System.out.println("repopath: " + repoPath); GitRepoMetaData gitMetaData = new GitRepoMetaData(); FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(repoPath)).readEnvironment().setMustExist(true) .findGitDir().build(); RevWalk walk = new RevWalk(repository); AnyObjectId id = repository.resolve("HEAD"); if (id == null) return null;//Empty repository RevCommit rCommit = walk.parseCommit(id); walk.markStart(rCommit); gitMetaData.setRepository(repository); gitMetaData.setRevWalk(walk); return gitMetaData; } catch (IOException exception) { logger.debug("IOException getGitRepositoryMetaData", exception); } ; return null; }
From source file:io.jenkins.blueocean.blueocean_git_pipeline.GitBareRepoReadSaveRequest.java
License:Open Source License
@Override void save() throws IOException { invokeOnScm(new GitSCMFileSystem.FSFunction<Void>() { @Override//from w w w .j a va2s . c o m public Void invoke(Repository repo) throws IOException, InterruptedException { String localBranchRef = LOCAL_REF_BASE + sourceBranch; ObjectId branchHead = repo.resolve(localBranchRef); try { // Get committer info User user = User.current(); if (user == null) { throw new ServiceException.UnauthorizedException("Not authenticated"); } String mailAddress = MailAddressResolver.resolve(user); StandardCredentials credential = getCredential(); // Make sure up-to-date and credentials work GitUtils.fetch(repo, credential); GitUtils.commit(repo, localBranchRef, filePath, contents, user.getId(), mailAddress, commitMessage, TimeZone.getDefault(), new Date()); GitUtils.push(gitSource.getRemote(), repo, credential, localBranchRef, REMOTE_REF_BASE + branch); return null; } finally { // always roll back to undo our local changes try { if (branchHead != null) { // branchHead may be null if this was an empty repo RefUpdate rollback = repo.updateRef(localBranchRef); rollback.setNewObjectId(branchHead); rollback.forceUpdate(); } } catch (Exception ex) { log.log(Level.SEVERE, "Unable to roll back repo after save failure", ex); } } } }); }
From source file:jbenchmarker.GitMain.java
License:Open Source License
private boolean gotMerge(String gitdir, String path) throws IOException { FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repo = builder.setGitDir(new File(gitdir + "/.git")).readEnvironment().findGitDir().build(); RevWalk revwalk = new RevWalk(repo); revwalk.setTreeFilter(AndTreeFilter.create(PathFilter.create(path), TreeFilter.ANY_DIFF)); revwalk.markStart(revwalk.parseCommit(repo.resolve("HEAD"))); Iterator<RevCommit> it = revwalk.iterator(); while (it.hasNext()) { if (it.next().getParentCount() > 1) { return true; }/*from w w w. ja va 2 s . co m*/ } return false; }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.GitLabelingSupport.java
License:Apache License
@Nullable private ObjectId resolve(final Repository r, final Ref tagRef) { try {//from w w w . ja v a2 s . com return r.resolve(tagRef.getName()); } catch (IOException e) { return null; } }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.tests.SubmoduleTest.java
License:Apache License
/** * Test loading mapping for submodules/* w ww. jav a 2 s . c o m*/ * * @throws IOException if there is IO problem */ @Test public void testSubmoduleMapping() throws Exception { File masterRep = dataFile("repo.git"); Repository r = new RepositoryBuilder().setGitDir(masterRep).build(); try { SubmodulesConfig s = new SubmodulesConfig(r.getConfig(), new BlobBasedConfig(null, r, r.resolve(GitUtils.versionRevision(GitVcsSupportTest.SUBMODULE_ADDED_VERSION)), ".gitmodules")); assertTrue(s.isSubmodulePrefix("")); assertFalse(s.isSubmodulePrefix("submodule")); Submodule m = s.findSubmodule("submodule"); assertEquals(m.getName(), "submodule"); assertEquals(m.getPath(), "submodule"); assertEquals(m.getUrl(), "../submodule.git"); } finally { r.close(); } }
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 ww w . j a v a2s . 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:models.PullRequest.java
License:Apache License
static private ObjectId getBlobId(Repository repo, String rev, String path) throws IOException { if (StringUtils.isEmpty(rev)) { throw new IllegalArgumentException("rev must not be empty"); }// w ww. ja v a 2 s . c om RevTree tree = new RevWalk(repo).parseTree(repo.resolve(rev)); TreeWalk tw = TreeWalk.forPath(repo, path, tree); if (tw == null) { return null; } return tw.getObjectId(0); }
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 a v a 2s . 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 }