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

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

Introduction

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

Prototype

@NonNull
public ObjectReader newObjectReader() 

Source Link

Document

Create a new reader to read objects from #getObjectDatabase() .

Usage

From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java

License:Apache License

public static List<DiffEntry> getDiff(final Repository repo, final ObjectId oldRef, final ObjectId newRef) {
    if (oldRef == null || newRef == null || repo == null) {
        return emptyList();
    }/*  w w  w  . ja  v a2s .  c  o m*/

    try {
        ObjectReader reader = repo.newObjectReader();
        CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
        oldTreeIter.reset(reader, oldRef);
        CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
        newTreeIter.reset(reader, newRef);
        return new CustomDiffCommand(repo).setNewTree(newTreeIter).setOldTree(oldTreeIter)
                .setShowNameAndStatusOnly(true).call();
    } catch (final Exception ex) {
        throw new RuntimeException(ex);
    }
}

From source file:org.walkmod.git.constraints.JavaConstraintProvider.java

License:Open Source License

private static AbstractTreeIterator prepareTreeParser(Repository repository, String objectId)
        throws IOException, MissingObjectException, IncorrectObjectTypeException {
    // from the commit we can build the tree which allows us to construct the TreeParser
    RevWalk walk = new RevWalk(repository);
    ObjectId oid = repository.resolve(objectId);
    RevCommit commit = walk.parseCommit(oid);
    RevTree tree = walk.parseTree(commit.getTree().getId());

    CanonicalTreeParser oldTreeParser = new CanonicalTreeParser();
    ObjectReader oldReader = repository.newObjectReader();
    oldTreeParser.reset(oldReader, tree.getId());

    walk.dispose();/*from w  w w  .  j a va 2s.c o  m*/
    walk.close();
    oldReader.close();
    return oldTreeParser;
}

From source file:org.wso2.security.tools.scanner.dependency.js.reportpublisher.GitUploader.java

License:Open Source License

/**
 * Populate all the files to update, if the system should update.
 *//*  w ww  .jav  a 2  s  . co m*/
private boolean populateDiff() {
    try {
        gitRepo.fetch()
                .setCredentialsProvider(new UsernamePasswordCredentialsProvider(
                        new String(gitUploaderProperties.getGitUsername()),
                        new String(gitUploaderProperties.getGitPassword())))
                .call();
        Repository repo = gitRepo.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 = gitRepo.diff().setShowNameAndStatusOnly(true).setNewTree(newTreeIter)
                .setOldTree(oldTreeIter).call();
        return !diffs.isEmpty();
    } catch (GitAPIException | IOException e) {
        log.error("[JS_SEC_DAILY_SCAN]  " + "Security artifact repo pull action failed.", e);
    }
    return true;
}

From source file:pl.project13.jgit.DescribeResultTest.java

License:Open Source License

@Test
public void shouldToStringForDirtyTag() throws Exception {
    // given/*from   w w  w . ja v  a2 s.  co  m*/
    Repository repo = git().getRepository();
    git().reset().setMode(ResetCommand.ResetType.HARD).call();

    DescribeResult res = new DescribeResult(repo.newObjectReader(), VERSION, 2, HEAD_OBJECT_ID, true,
            DIRTY_MARKER);

    // when
    String s = res.toString();

    // then
    assertThat(s).isEqualTo(VERSION + "-" + 2 + "-" + G_DEFAULT_ABBREV_COMMIT_ID + DIRTY_MARKER);
}

From source file:pl.project13.jgit.DescribeResultTest.java

License:Open Source License

@Test
public void shouldToStringForDirtyTagAnd10Abbrev() throws Exception {
    // given/*from  ww  w .  j a v a  2  s. co  m*/
    Repository repo = git().getRepository();
    git().reset().setMode(ResetCommand.ResetType.HARD).call();

    DescribeResult res = new DescribeResult(repo.newObjectReader(), VERSION, 2, HEAD_OBJECT_ID, true,
            DIRTY_MARKER).withCommitIdAbbrev(10);

    String expectedHash = "gb6a73ed747";

    // when
    String s = res.toString();

    // then
    assertThat(s).isEqualTo(VERSION + "-" + 2 + "-" + expectedHash + DIRTY_MARKER);
}

From source file:pl.project13.jgit.DescribeResultTest.java

License:Open Source License

@Test
public void shouldToStringFor2CommitsAwayFromTag() throws Exception {
    // given/*from  w ww  . j av  a  2s . co  m*/
    Repository repo = git().getRepository();
    git().reset().setMode(ResetCommand.ResetType.HARD).call();

    DescribeResult res = new DescribeResult(repo.newObjectReader(), VERSION, 2, HEAD_OBJECT_ID);

    // when
    String s = res.toString();

    // then
    assertThat(s).isEqualTo(VERSION + "-" + 2 + "-" + G_DEFAULT_ABBREV_COMMIT_ID);
}

From source file:pl.project13.jgit.DescribeResultTest.java

License:Open Source License

@Test
public void shouldToStringForNoTagJustACommit() throws Exception {
    // given/* w ww .  j  ava2 s  .c  om*/
    Repository repo = git().getRepository();
    git().reset().setMode(ResetCommand.ResetType.HARD).call();

    DescribeResult res = new DescribeResult(repo.newObjectReader(), HEAD_OBJECT_ID);

    // when
    String s = res.toString();

    // then
    assertThat(s).isEqualTo(DEFAULT_ABBREV_COMMIT_ID);
}

From source file:pl.project13.maven.git.GitCommitIdMojo.java

License:Open Source License

void loadGitData(@NotNull Properties properties) throws IOException, MojoExecutionException {
    Repository git = getGitRepository();
    ObjectReader objectReader = git.newObjectReader();

    // git.user.name
    String userName = git.getConfig().getString("user", null, "name");
    put(properties, BUILD_AUTHOR_NAME, userName);

    // git.user.email
    String userEmail = git.getConfig().getString("user", null, "email");
    put(properties, BUILD_AUTHOR_EMAIL, userEmail);

    // more details parsed out bellow
    Ref HEAD = git.getRef(Constants.HEAD);
    if (HEAD == null) {
        throw new MojoExecutionException(
                "Could not get HEAD Ref, are you sure you've set the dotGitDirectory property of this plugin to a valid path?");
    }//  w  ww  .j  a  va2  s  .com
    RevWalk revWalk = new RevWalk(git);
    RevCommit headCommit = revWalk.parseCommit(HEAD.getObjectId());
    revWalk.markStart(headCommit);

    try {
        // git.branch
        String branch = determineBranchName(git, System.getenv());
        put(properties, BRANCH, branch);

        // git.commit.id.describe
        maybePutGitDescribe(properties, git);

        // git.commit.id
        put(properties, COMMIT_ID, headCommit.getName());

        // git.commit.id.abbrev
        putAbbrevCommitId(objectReader, properties, headCommit, abbrevLength);

        // git.commit.author.name
        String commitAuthor = headCommit.getAuthorIdent().getName();
        put(properties, COMMIT_AUTHOR_NAME, commitAuthor);

        // git.commit.author.email
        String commitEmail = headCommit.getAuthorIdent().getEmailAddress();
        put(properties, COMMIT_AUTHOR_EMAIL, commitEmail);

        // git commit.message.full
        String fullMessage = headCommit.getFullMessage();
        put(properties, COMMIT_MESSAGE_FULL, fullMessage);

        // git commit.message.short
        String shortMessage = headCommit.getShortMessage();
        put(properties, COMMIT_MESSAGE_SHORT, shortMessage);

        long timeSinceEpoch = headCommit.getCommitTime();
        Date commitDate = new Date(timeSinceEpoch * 1000); // git is "by sec" and java is "by ms"
        SimpleDateFormat smf = new SimpleDateFormat(dateFormat);
        put(properties, COMMIT_TIME, smf.format(commitDate));

        // git remote.origin.url
        String remoteOriginUrl = git.getConfig().getString("remote", "origin", "url");
        put(properties, REMOTE_ORIGIN_URL, remoteOriginUrl);
    } finally {
        revWalk.dispose();
    }
}

From source file:playRepository.GitRepository.java

License:Apache License

private static List<FileDiff> getFileDiffs(final Repository repositoryA, Repository repositoryB,
        ObjectId commitA, ObjectId commitB) throws IOException {
    class MultipleRepositoryObjectReader extends ObjectReader {
        Collection<ObjectReader> readers = new HashSet<>();

        @Override//from w w w.java 2s  .  c  om
        public ObjectReader newReader() {
            return new MultipleRepositoryObjectReader(readers);
        }

        public MultipleRepositoryObjectReader(Collection<ObjectReader> readers) {
            this.readers = readers;
        }

        public MultipleRepositoryObjectReader() {
            this.readers = new HashSet<>();
        }

        public void addObjectReader(ObjectReader reader) {
            this.readers.add(reader);
        }

        @Override
        public Collection<ObjectId> resolve(AbbreviatedObjectId id) throws IOException {
            Set<ObjectId> result = new HashSet<>();
            for (ObjectReader reader : readers) {
                result.addAll(reader.resolve(id));
            }
            return result;
        }

        @Override
        public ObjectLoader open(AnyObjectId objectId, int typeHint) throws IOException {
            for (ObjectReader reader : readers) {
                if (reader.has(objectId, typeHint)) {
                    return reader.open(objectId, typeHint);
                }
            }
            return null;
        }

        @Override
        public Set<ObjectId> getShallowCommits() throws IOException {
            Set<ObjectId> union = new HashSet<>();
            for (ObjectReader reader : readers) {
                union.addAll(reader.getShallowCommits());
            }
            return union;
        }
    }

    final MultipleRepositoryObjectReader reader = new MultipleRepositoryObjectReader();
    reader.addObjectReader(repositoryA.newObjectReader());
    reader.addObjectReader(repositoryB.newObjectReader());

    @SuppressWarnings("rawtypes")
    Repository fakeRepo = new Repository(new BaseRepositoryBuilder()) {

        @Override
        public void create(boolean bare) throws IOException {
            throw new UnsupportedOperationException();
        }

        @Override
        public ObjectDatabase getObjectDatabase() {
            throw new UnsupportedOperationException();
        }

        @Override
        public RefDatabase getRefDatabase() {
            throw new UnsupportedOperationException();
        }

        @Override
        public StoredConfig getConfig() {
            return repositoryA.getConfig();
        }

        @Override
        public void scanForRepoChanges() throws IOException {
            throw new UnsupportedOperationException();
        }

        @Override
        public void notifyIndexChanged() {
            throw new UnsupportedOperationException();
        }

        @Override
        public ReflogReader getReflogReader(String refName) throws IOException {
            throw new UnsupportedOperationException();
        }

        public ObjectReader newObjectReader() {
            return reader;
        }
    };

    DiffFormatter formatter = new DiffFormatter(NullOutputStream.INSTANCE);
    formatter.setRepository(fakeRepo);
    formatter.setDetectRenames(true);

    AbstractTreeIterator treeParserA, treeParserB;
    RevTree treeA = null, treeB = null;

    if (commitA != null) {
        treeA = new RevWalk(repositoryA).parseTree(commitA);
        treeParserA = new CanonicalTreeParser();
        ((CanonicalTreeParser) treeParserA).reset(reader, treeA);
    } else {
        treeParserA = new EmptyTreeIterator();
    }

    if (commitB != null) {
        treeB = new RevWalk(repositoryB).parseTree(commitB);
        treeParserB = new CanonicalTreeParser();
        ((CanonicalTreeParser) treeParserB).reset(reader, treeB);
    } else {
        treeParserB = new EmptyTreeIterator();
    }

    List<FileDiff> result = new ArrayList<>();
    int size = 0;
    int lines = 0;

    for (DiffEntry diff : formatter.scan(treeParserA, treeParserB)) {
        FileDiff fileDiff = new FileDiff();
        fileDiff.commitA = commitA != null ? commitA.getName() : null;
        fileDiff.commitB = commitB != null ? commitB.getName() : null;

        fileDiff.changeType = diff.getChangeType();

        fileDiff.oldMode = diff.getOldMode();
        fileDiff.newMode = diff.getNewMode();

        String pathA = diff.getPath(DiffEntry.Side.OLD);
        String pathB = diff.getPath(DiffEntry.Side.NEW);

        byte[] rawA = null;
        if (treeA != null && Arrays.asList(DELETE, MODIFY, RENAME, COPY).contains(diff.getChangeType())) {
            TreeWalk t1 = TreeWalk.forPath(repositoryA, pathA, treeA);
            ObjectId blobA = t1.getObjectId(0);
            fileDiff.pathA = pathA;

            try {
                rawA = repositoryA.open(blobA).getBytes();
                fileDiff.isBinaryA = RawText.isBinary(rawA);
                fileDiff.a = fileDiff.isBinaryA ? null : new RawText(rawA);
            } catch (org.eclipse.jgit.errors.LargeObjectException e) {
                fileDiff.addError(FileDiff.Error.A_SIZE_EXCEEDED);
            }
        }

        byte[] rawB = null;
        if (treeB != null && Arrays.asList(ADD, MODIFY, RENAME, COPY).contains(diff.getChangeType())) {
            TreeWalk t2 = TreeWalk.forPath(repositoryB, pathB, treeB);
            ObjectId blobB = t2.getObjectId(0);
            fileDiff.pathB = pathB;

            try {
                rawB = repositoryB.open(blobB).getBytes();
                fileDiff.isBinaryB = RawText.isBinary(rawB);
                fileDiff.b = fileDiff.isBinaryB ? null : new RawText(rawB);
            } catch (org.eclipse.jgit.errors.LargeObjectException e) {
                fileDiff.addError(FileDiff.Error.B_SIZE_EXCEEDED);
            }
        }

        if (size > DIFF_SIZE_LIMIT || lines > DIFF_LINE_LIMIT) {
            fileDiff.addError(FileDiff.Error.OTHERS_SIZE_EXCEEDED);
            result.add(fileDiff);
            continue;
        }

        // Get diff if necessary
        if (fileDiff.a != null && fileDiff.b != null && !(fileDiff.isBinaryA || fileDiff.isBinaryB)
                && Arrays.asList(MODIFY, RENAME).contains(diff.getChangeType())) {
            DiffAlgorithm diffAlgorithm = DiffAlgorithm
                    .getAlgorithm(repositoryB.getConfig().getEnum(ConfigConstants.CONFIG_DIFF_SECTION, null,
                            ConfigConstants.CONFIG_KEY_ALGORITHM, DiffAlgorithm.SupportedAlgorithm.HISTOGRAM));
            fileDiff.editList = diffAlgorithm.diff(RawTextComparator.DEFAULT, fileDiff.a, fileDiff.b);
            size += fileDiff.getHunks().size;
            lines += fileDiff.getHunks().lines;
        }

        // update lines and sizes
        if (fileDiff.b != null && !fileDiff.isBinaryB && diff.getChangeType().equals(ADD)) {
            lines += fileDiff.b.size();
            size += rawB.length;
        }

        // update lines and sizes
        if (fileDiff.a != null && !fileDiff.isBinaryA && diff.getChangeType().equals(DELETE)) {
            lines += fileDiff.a.size();
            size += rawA.length;
        }

        // Stop if exceeds the limit for total number of files
        if (result.size() > DIFF_FILE_LIMIT) {
            break;
        }

        result.add(fileDiff);
    }

    return result;
}

From source file:svnserver.repository.git.GitRepository.java

License:GNU General Public License

@NotNull
private static String loadRepositoryId(@NotNull Repository repository, @NotNull String refName)
        throws IOException {
    final Ref ref = repository.getRef(refName);
    if (ref == null) {
        throw new IllegalStateException();
    }/*from w w w.ja  v  a 2 s  . c om*/

    ObjectId oid = ref.getObjectId();
    final RevWalk revWalk = new RevWalk(repository);
    while (true) {
        final RevCommit revCommit = revWalk.parseCommit(oid);
        if (revCommit.getParentCount() == 0) {
            return LayoutHelper.loadRepositoryId(repository.newObjectReader(), oid);
        }
        oid = revCommit.getParent(0);
    }
}