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:br.com.metricminer2.scm.GitRepository.java
License:Apache License
@Override public Commit getCommit(String id) { Git git = null;/*w ww .ja v a 2 s . c o m*/ try { git = Git.open(new File(path)); Repository repo = git.getRepository(); Iterable<RevCommit> commits = git.log().add(repo.resolve(id)).call(); Commit theCommit = null; for (RevCommit jgitCommit : commits) { Developer author = new Developer(jgitCommit.getAuthorIdent().getName(), jgitCommit.getAuthorIdent().getEmailAddress()); Developer committer = new Developer(jgitCommit.getCommitterIdent().getName(), jgitCommit.getCommitterIdent().getEmailAddress()); String msg = jgitCommit.getFullMessage().trim(); String hash = jgitCommit.getName().toString(); long epoch = jgitCommit.getCommitTime(); String parent = (jgitCommit.getParentCount() > 0) ? jgitCommit.getParent(0).getName().toString() : ""; GregorianCalendar date = new GregorianCalendar(); date.setTime(new Date(epoch * 1000L)); theCommit = new Commit(hash, author, committer, date, msg, parent); List<DiffEntry> diffsForTheCommit = diffsForTheCommit(repo, jgitCommit); if (diffsForTheCommit.size() > MAX_NUMBER_OF_FILES_IN_A_COMMIT) { log.error("commit " + id + " has more than files than the limit"); throw new RuntimeException("commit " + id + " too big, sorry"); } for (DiffEntry diff : diffsForTheCommit) { ModificationType change = Enum.valueOf(ModificationType.class, diff.getChangeType().toString()); String oldPath = diff.getOldPath(); String newPath = diff.getNewPath(); String diffText = ""; String sc = ""; if (diff.getChangeType() != ChangeType.DELETE) { diffText = getDiffText(repo, diff); sc = getSourceCode(repo, diff); } if (diffText.length() > MAX_SIZE_OF_A_DIFF) { log.error("diff for " + newPath + " too big"); diffText = "-- TOO BIG --"; } theCommit.addModification(oldPath, newPath, change, diffText, sc); } break; } return theCommit; } catch (Exception e) { throw new RuntimeException("error detailing " + id + " in " + path, e); } finally { if (git != null) git.close(); } }
From source file:br.com.metricminer2.scm.GitRepository.java
License:Apache License
private List<DiffEntry> diffsForTheCommit(Repository repo, RevCommit commit) throws IOException, AmbiguousObjectException, IncorrectObjectTypeException { AnyObjectId currentCommit = repo.resolve(commit.getName()); AnyObjectId parentCommit = commit.getParentCount() > 0 ? repo.resolve(commit.getParent(0).getName()) : null; DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); df.setBinaryFileThreshold(2 * 1024); // 2 mb max a file df.setRepository(repo);//w w w . ja va 2 s. c om df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); List<DiffEntry> diffs = null; if (parentCommit == null) { RevWalk rw = new RevWalk(repo); diffs = df.scan(new EmptyTreeIterator(), new CanonicalTreeParser(null, rw.getObjectReader(), commit.getTree())); rw.release(); } else { diffs = df.scan(parentCommit, currentCommit); } df.release(); return diffs; }
From source file:br.com.riselabs.cotonet.util.JDimeHelper.java
License:Open Source License
/** * Returns the merge scenarios from the 'ghanalysis' database (JDime database) * //from ww w .j ava2 s . c o m * @param repositoryID * @param repo * @return * @throws IOException */ public static List<MergeScenario> getMergeScenarios(Integer repositoryID, Repository repo) throws IOException { List<MergeScenario> scenarios = new ArrayList<MergeScenario>(); String sql = "select " + "m.leftrevision \"left\", " + "m.baserevision \"base\", " + "m.rightrevision \"right\", " + "m.leftcommits \"nlcommits\"," + "m.rightcommits \"nrcommits\"," + "l.commitid \"leftsha\"," + "b.commitid \"basesha\"," + "r.commitid \"rightsha\" " + "from mergescenario m, revision l, revision b, revision r " + "where m.leftrepo = " + repositoryID + " and m.rightrepo = " + repositoryID + " and m.diffstatsdone " + "and m.gitstatsdone " + "and m.commitstatsdone " + "and m.leftrevision=l.id " + "and m.baserevision=b.id " + "and m.rightrevision=r.id " + "and m.leftcommits > 0 " + "and m.rightcommits > 0"; // + " limit ", max_scenarios, sep=""; try { conn = Database.getConnection(dbname, dbuser, dbpass); st = conn.createStatement(); rs = st.executeQuery(sql); while (rs.next()) { try (RevWalk w = new RevWalk(repo)) { RevCommit left = w.parseCommit(repo.resolve(rs.getString("leftsha"))); RevCommit base = w.parseCommit(repo.resolve(rs.getString("basesha"))); RevCommit right = w.parseCommit(repo.resolve(rs.getString("rightsha"))); scenarios.add(new MergeScenario(repositoryID, base, left, right, null, null)); } } } catch (SQLException e) { Logger.logStackTrace(e); } finally { try { rs.close(); st.close(); conn.close(); } catch (SQLException e) { Logger.logStackTrace(e); } } return scenarios; }
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 www . j a va 2 s . co m*/ 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:co.bledo.gitmin.servlet.Review.java
License:Apache License
public Response commit(Request req) throws IOException, GitAPIException { String repoName = req.getParam("repo", ""); String hash = req.getParam("hash", ""); Git git = Git.open(new File(GitminConfig.getGitRepositoriesPath() + "/" + repoName)); /*//from w ww . j a v a2 s .c o m ByteArrayOutputStream baos1 = new ByteArrayOutputStream(); List<DiffEntry> diffTest = git.diff().setOutputStream(baos1) .setOldTree(getTreeIterator(git.getRepository(), hash)) .setNewTree(getTreeIterator(git.getRepository(), hash + "^")) .call(); System.out.println(baos1.toString()); */ RepositoryBuilder builder = new RepositoryBuilder(); Repository repo = builder.setGitDir(new File(GitminConfig.getGitRepositoriesPath() + "/" + repoName)) .readEnvironment().findGitDir().build(); RevWalk rw = new RevWalk(repo); ObjectId hashOid = repo.resolve(hash); RevCommit commit = rw.parseCommit(hashOid); RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DiffFormatter df = new DiffFormatter(baos); df.setRepository(repo); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); List<DiffEntry> diffs = df.scan(parent, commit); List<CommitInfo> commitInfos = new ArrayList<CommitInfo>(); for (DiffEntry diff : diffs) { CommitInfo nfo = new CommitInfo(); df.format(diff); nfo.diff = baos.toString(); nfo.oldContents = getFileContent(repo, parent, diff.getOldPath()); nfo.newContents = getFileContent(repo, parent, diff.getNewPath()); nfo.newFile = diff.getNewPath(); nfo.oldFile = diff.getOldPath(); commitInfos.add(nfo); } VelocityResponse resp = VelocityResponse.newInstance(req, this); resp.assign("nfolist", commitInfos); return log.exit(resp); }
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 w w w. j av a 2s .c o m*/ p.reset(or, new RevWalk(repo).parseTree(id)); return p; } finally { or.release(); } }
From source file:co.turnus.versioning.impl.GitVersioner.java
License:Open Source License
@Override public Version getVersion(File file) { if (file == null) { return new SimpleFileVersioner().getVersion(file); }/* w w w . jav a2 s .c o m*/ Repository repo = searchNearestRepository(file); if (repo != null) { try { ObjectId revId = repo.resolve(Constants.HEAD); Date mdofifDate = getLastModifiedDate(file, repo, revId); String revision = getRevision(revId); Version v = VersioningFactory.eINSTANCE.createVersion(); v.setVersioningDate(new Date()); v.setLastModificationDate(mdofifDate); v.setAttribute("versioner", NAME); v.setId(revision); return v; } catch (Exception e) { } } return new SimpleFileVersioner().getVersion(file); }
From source file:co.turnus.versioning.impl.GitVersioner.java
License:Open Source License
private Repository searchNearestRepository(File file) { if (file == null) { return null; } else if (file.exists()) { try {/*from w w w . j a va 2s .com*/ Repository repo = new FileRepositoryBuilder().findGitDir(file.getCanonicalFile()).build(); ObjectId revision = repo.resolve(Constants.HEAD); if (revision != null) { return repo; } } catch (Exception e) { } } return searchNearestRepository(file.getParentFile()); }
From source file:com.amd.gerrit.plugins.manifestsubscription.ManifestSubscription.java
License:Open Source License
private VersionedManifests parseManifests(Project.NameKey p, String refName) throws IOException, JAXBException, ConfigInvalidException { Repository repo = gitRepoManager.openRepository(p); ObjectId commitId = repo.resolve(refName); MetaDataUpdate update = metaDataUpdateFactory.create(p); VersionedManifests vManifests = new VersionedManifests(refName); vManifests.load(update, commitId);/*from w w w . jav a 2 s.c o m*/ return vManifests; }
From source file:com.amd.gerrit.plugins.manifestsubscription.Utilities.java
License:Open Source License
static ObjectId updateManifest(GitRepositoryManager gitRepoManager, MetaDataUpdate.Server metaDataUpdateFactory, ChangeHooks changeHooks, String projectName, String refName, Manifest manifest, String manifestSrc, String extraCommitMsg, String defaultBranchBase) throws JAXBException, IOException { Project.NameKey p = new Project.NameKey(projectName); Repository repo = gitRepoManager.openRepository(p); MetaDataUpdate update = metaDataUpdateFactory.create(p); ObjectId commitId = repo.resolve(refName); VersionedManifests vManifests = new VersionedManifests(refName); //TODO find a better way to detect no branch boolean refExists = true; try {/*from ww w .j a v a 2 s. c o m*/ vManifests.load(update, commitId); } catch (Exception e) { refExists = false; } RevCommit commit = null; if (refExists) { Map<String, Manifest> entry = Maps.newHashMapWithExpectedSize(1); entry.put("default.xml", manifest); vManifests.setManifests(entry); vManifests.setSrcManifestRepo(manifestSrc); vManifests.setExtraCommitMsg(extraCommitMsg); commit = vManifests.commit(update); } else { if (defaultBranchBase == null) defaultBranchBase = "refs/heads/master"; vManifests = new VersionedManifests(defaultBranchBase); ObjectId cid = repo.resolve(defaultBranchBase); try { vManifests.load(update, cid); } catch (ConfigInvalidException e) { e.printStackTrace(); } Map<String, Manifest> entry = Maps.newHashMapWithExpectedSize(1); entry.put("default.xml", manifest); vManifests.setManifests(entry); commit = vManifests.commitToNewRef(update, refName); } // TODO this may be bug in the MetaDataUpdate or VersionedMetaData // May be related: // https://code.google.com/p/gerrit/issues/detail?id=2564 // https://gerrit-review.googlesource.com/55540 if (commit != null) { ObjectId parent = ObjectId.zeroId(); if (commit.getParents().length > 0) { parent = commit.getParent(0).getId(); } changeHooks.doRefUpdatedHook(new Branch.NameKey(p, refName), parent, commit.getId(), null); return commit.getId(); } else { log.warn("Failing to commit manifest subscription update:" + "\n\tProject: " + projectName + "\n\tRef: " + refName); } return null; }