Example usage for org.eclipse.jgit.lib Repository resolve

List of usage examples for org.eclipse.jgit.lib Repository resolve

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib Repository resolve.

Prototype

@Nullable
public ObjectId resolve(String revstr)
        throws AmbiguousObjectException, IncorrectObjectTypeException, RevisionSyntaxException, IOException 

Source Link

Document

Parse a git revision string and return an object id.

Usage

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;
}