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:eu.hohenegger.gitmine.jgit.impl.MiningService.java
License:Open Source License
@Override public Map<PersonIdent, List<RevCommit>> scanAuthors(Repository repository) throws IOException { HashMap<PersonIdent, List<RevCommit>> result = new HashMap<>(); RevWalk revwalk = new RevWalk(repository); ObjectId HEAD = repository.resolve(HEAD_REF); revwalk.markStart(revwalk.parseCommit(HEAD)); Iterator<RevCommit> it = revwalk.iterator(); while (it.hasNext()) { RevCommit commit = it.next();/*from w w w . ja v a 2 s . c o m*/ if (!result.containsKey(commit.getAuthorIdent())) { List<RevCommit> list = new ArrayList<>(); list.add(commit); result.put(commit.getAuthorIdent(), list); } else { result.get(commit.getAuthorIdent()).add(commit); } } return result; }
From source file:eu.hohenegger.gitmine.jgit.impl.MiningService.java
License:Open Source License
@Override public List<Integer> scanCommitsPerDay(Repository repository) throws IOException { Map<Long, List<RevCommit>> result = new TreeMap<>(); RevWalk revwalk = new RevWalk(repository); ObjectId HEAD;// www . j a v a 2 s .c o m HEAD = repository.resolve(HEAD_REF); revwalk.markStart(revwalk.parseCommit(HEAD)); Iterator<RevCommit> it = revwalk.iterator(); Long dayDate = 0l; while (it.hasNext()) { RevCommit commit = it.next(); Long currentCommitDay = getCommitDay(commit); // List<Date> daysInBetween = getDaysInBetween(dayDate, currentCommitDay); // for (Date dayInBetween : daysInBetween) { // result.put(dayInBetween.getTime(), new ArrayList<RevCommit>()); // } dayDate = currentCommitDay; if (!result.containsKey(dayDate)) { List<RevCommit> list = new ArrayList<>(); list.add(commit); result.put(dayDate, list); } else { result.get(dayDate).add(commit); } } Long firstDay = result.keySet().iterator().next(); List<Integer> result2 = new ArrayList<>(); for (long i = firstDay + MILLISECONDS_IN_A_DAY; i < new Date().getTime(); i += MILLISECONDS_IN_A_DAY) { if (result.containsKey(i)) { result2.add(result.get(i).size()); } else { result2.add(0); } } // Set<Long> keySet = result.keySet(); // dayDate = 0l; // List<Long> result2 = new ArrayList<>(); // for (Long currentCommitDay : keySet) { // List<Date> daysInBetween = getDaysInBetween(dayDate, currentCommitDay); // for (Date dayInBetween : daysInBetween) { // result2.add(dayInBetween.getTime()); // } // dayDate = currentCommitDay; // } // for (Long long1 : result2) { // result.put(long1, new ArrayList<RevCommit>()); // } return result2; }
From source file:eu.hohenegger.gitmine.jgit.TestBasic.java
License:Open Source License
public void commit(PersonIdent author) throws IOException, JGitInternalException, UnmergedPathsException, GitAPIException { String commitMessage = "Added myfile"; git.commit().setMessage(commitMessage).setAuthor(author).call(); Repository repository = git.getRepository(); RevWalk revwalk = new RevWalk(repository); ObjectId HEAD = repository.resolve(HEAD_REF); revwalk.markStart(revwalk.parseCommit(HEAD)); revwalk.dispose();/* ww w .jav a 2s. c o m*/ }
From source file:eu.trentorise.opendata.josman.test.GitTest.java
private static RevTree getTree(Repository repository) throws AmbiguousObjectException, IncorrectObjectTypeException, IOException, MissingObjectException { ObjectId lastCommitId = repository.resolve(Constants.HEAD); // a RevWalk allows to walk over commits based on some filtering RevWalk revWalk = new RevWalk(repository, DEPTH); RevCommit commit = revWalk.parseCommit(lastCommitId); System.out.println("Time of commit (seconds since epoch): " + commit.getCommitTime()); // and using commit's tree find the path RevTree tree = commit.getTree();/*from w w w . jav a 2s .c o m*/ System.out.println("Having tree: " + tree); return tree; }
From source file:eu.trentorise.opendata.josman.test.GitTest.java
private static void printDirectory(Repository repo, String revStr, String prefix) { checkNotNull(repo);//ww w .j a v a2s. c o m checkNotNull(prefix); checkNotEmpty(revStr, "invalid revisiong string!"); try { // find the HEAD ObjectId lastCommitId = repo.resolve(revStr); // a RevWalk allows to walk over commits based on some filtering that is defined RevWalk revWalk = new RevWalk(repo, DEPTH); RevCommit commit = revWalk.parseCommit(lastCommitId); // and using commit's tree find the path RevTree tree = commit.getTree(); LOG.log(Level.INFO, "Having tree: {0}", tree); // look at directory, this has FileMode.TREE TreeWalk treeWalk = new TreeWalk(repo); treeWalk.addTree(tree); treeWalk.setRecursive(true); treeWalk.setFilter(PathFilter.create(prefix));// careful this looks for *exact* dir name (i.e. 'docs' will work for docs/a.txt but 'doc' won't work) while (treeWalk.next()) { // FileMode now indicates that this is a directory, i.e. FileMode.TREE.equals(fileMode) holds true String pathString = treeWalk.getPathString(); if (pathString.startsWith(prefix)) { FileMode fileMode = treeWalk.getFileMode(0); System.out.println(pathString + ": " + getFileMode(fileMode) + ", type: " + fileMode.getObjectType() + ", mode: " + fileMode); ObjectId objectId = treeWalk.getObjectId(0); ObjectLoader loader = repo.open(objectId); InputStream stream = loader.openStream(); File outputFile = File.createTempFile("bla", "bla"); FileUtils.copyInputStreamToFile(stream, outputFile); stream.close(); System.out.println("content:\n" + FileUtils.readFileToString(outputFile)); } } } catch (Exception ex) { throw new RuntimeException("Error while walking directory!", ex); } }
From source file:facade.GitFacade.java
public static void checkAllCommitsDiff() throws IOException, GitAPIException { Repository repository = git.getRepository(); String headCommitId = repository.resolve(Constants.HEAD).getName(); String prevCommitId = repository.resolve(Constants.HEAD).getName(); List<String> changedFiles; for (String currentCommitId : commitList) { if (!currentCommitId.equals(headCommitId)) { //System.out.println("\nNew:" + headCommitId + " Old:" + currentCommitId); changedFiles = checkInnerCommitsDiff(prevCommitId, currentCommitId); checkHeadCommitDiff(headCommitId, currentCommitId, changedFiles, prevCommitId); }/*w ww . j a v a 2 s . co m*/ prevCommitId = currentCommitId; } }
From source file:GitBackend.GitAPI.java
License:Apache License
private void getCommitByExactDate(Repository repo, Date execDate, String path) { RevWalk walk = new RevWalk(repo); try {//from w w w .ja v a 2 s . c o m walk.markStart(walk.parseCommit(repo.resolve(Constants.HEAD))); walk.sort(RevSort.COMMIT_TIME_DESC); walk.setTreeFilter(PathFilter.create(path)); for (RevCommit commit : walk) { if (commit.getCommitterIdent().getWhen().equals(execDate)) { // this is the commit you are looking for walk.parseCommit(commit); System.out.println("Commit found: " + commit.getName()); break; } } walk.close(); } catch (IOException e) { e.printStackTrace(); } }
From source file:git_manager.tool.GitOperations.java
License:Open Source License
void printDiffWithHead() { Repository repository = git.getRepository(); ObjectId oldHead;// w w w. jav a2 s. c o 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:info.debatty.sparkpackages.maven.plugin.PublishMojo.java
License:Open Source License
final String getGitCommit() throws MojoFailureException { Repository git_repository = null; try {/* www .jav a 2 s .c o m*/ git_repository = new FileRepositoryBuilder().setMustExist(true) .findGitDir(new File(getProject().getBasedir().getAbsolutePath())).build(); } catch (IOException ex) { throw new MojoFailureException("GIT repo not found!", ex); } ObjectId resolve = null; try { resolve = git_repository.resolve("HEAD"); } catch (IncorrectObjectTypeException ex) { throw new MojoFailureException("GIT error!", ex); } catch (RevisionSyntaxException | IOException ex) { throw new MojoFailureException("GIT error!", ex); } return resolve.getName(); }
From source file:info.plichta.maven.plugins.changelog.RepositoryProcessor.java
License:Apache License
public List<TagWrapper> process(Repository repository) throws IOException { final List<TagWrapper> tags = new ArrayList<>(); log.info("Processing git repository " + repository.getDirectory()); final ObjectId head = repository.resolve(toRef); if (head == null) { return tags; }//from www . j av a2 s.com try (RevWalk walk = new RevWalk(repository)) { walk.sort(RevSort.TOPO); final Map<ObjectId, TagWrapper> tagMapping = extractTags(repository, walk); TagWrapper currentTag = new TagWrapper(nextRelease); tags.add(currentTag); RevCommit commit = walk.parseCommit(head); while (commit != null) { currentTag = tagMapping.getOrDefault(commit.getId(), currentTag); if (tagMapping.containsKey(commit.getId())) { tags.add(currentTag); } final CommitWrapper commitWrapper = processCommit(commit); if (commitFilter.test(commit) && isInPath(repository, walk, commit)) { currentTag.getCommits().add(commitWrapper); } final RevCommit[] parents = commit.getParents(); if (parents != null && parents.length > 0) { final RevCommit parent = walk.parseCommit(parents[0]); try (RevWalk childWalk = new RevWalk(repository)) { childWalk.markStart(childWalk.parseCommit(commit)); childWalk.markUninteresting(childWalk.parseCommit(parent)); childWalk.next(); for (RevCommit childCommit : childWalk) { final CommitWrapper childWrapper = processCommit(childCommit); if (commitFilter.test(childCommit) && isInPath(repository, walk, commit) && !(deduplicateChildCommits && Objects.equals(commitWrapper.getTitle(), childWrapper.getTitle()))) { commitWrapper.getChildren().add(childWrapper); } } } commit = parent; } else { commit = null; } } } return tags; }