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.kuali.student.git.model.TestKSRevision27974.java

License:Educational Community License

@Test
public void testRevision27974() throws IOException {
    File gitRepository = new File("target/ks-r27974");

    FileUtils.deleteDirectory(gitRepository);

    Repository repository = GitRepositoryUtils.buildFileRepository(gitRepository, true);

    GitImporterMain/*from   www .  j  ava2 s . com*/
            .main(new String[] { "src/test/resources/ks-r27974.dump.bz2", gitRepository.getAbsolutePath(),
                    "target/ks-r27974-ks-veto.log", "target/ks-r27974-ks-copyFrom-skipped.log",
                    "target/ks-r27974-blob.log", "0", "https://svn.kuali.org/repos/student", "uuid" });

    // get the fusion-maven-plugin.dat file and check its contents are what we expect.

    SvnRevisionMapper revisionMapper = new SvnRevisionMapper(repository);

    revisionMapper.initialize();

    List<SvnRevisionMap> heads = revisionMapper.getRevisionHeads(27974L);

    Assert.assertNotNull(heads);

    Assert.assertEquals(1, heads.size());

    SvnRevisionMap revMap = heads.get(0);

    ObjectId branchHead = ObjectId.fromString(revMap.getCommitId());

    RevWalk rw = new RevWalk(repository);

    RevCommit commit = rw.parseCommit(branchHead);

    TreeWalk tw = new TreeWalk(repository);

    tw.addTree(commit.getTree().getId());

    Assert.assertTrue("should have been one file", tw.next());

    Assert.assertEquals(FileMode.REGULAR_FILE, tw.getFileMode(0));

    ObjectId blobId = tw.getObjectId(0);

    ObjectLoader loader = repository.newObjectReader().open(blobId, Constants.OBJ_BLOB);

    List<String> lines = IOUtils.readLines(loader.openStream(), "UTF-8");

    Assert.assertEquals(2, lines.size());

    String firstLine = lines.get(0);

    Assert.assertEquals(
            "# module = ks-api branch Path = sandbox/ks-1.3-core-slice-demo/modules/ks-api/trunk revision = 27974",
            firstLine);

    String secondLine = lines.get(1);

    Assert.assertEquals("ks-api::sandbox_ks-1.3-core-slice-demo_modules_ks-api_trunk::UNKNOWN", secondLine);

    tw.release();

    rw.release();

    revisionMapper.shutdown();

}

From source file:org.kuali.student.git.model.tree.utils.GitTreeProcessor.java

License:Educational Community License

/**
 * /*from   ww w  .  ja v a2s  .  com*/
 */
public GitTreeProcessor(Repository repo) {
    this.repo = repo;
    this.nodeInitializer = new GitTreeNodeInitializerImpl(this);
    this.objectReader = repo.newObjectReader();

}

From source file:org.kuali.student.git.model.utils.GitTestUtils.java

License:Educational Community License

/**
 * Acquire the JGit ObjectLoader reference on the file in the branch in the repository we want.
 * /*from  w  w  w  .  j  av  a2 s .c  om*/
 * This gives the caller the option of extracting it as a string or passing it as an InputStream into some other functionality.
 * 
 * @param repository
 * @param branchName
 * @param filePath
 * @return the JGit ObjectLoader for the branch path given.
 * @throws IOException
 */
public static ObjectLoader loadFileContents(Repository repository, String branchName, String filePath)
        throws IOException {

    return repository.newObjectReader().open(findObjectIdInRefByPath(repository, branchName, filePath));

}

From source file:org.libx4j.maven.plugin.version.OriginalResolver.java

License:Open Source License

public OriginalResolver(final Repository repository)
        throws IncorrectObjectTypeException, IOException, MissingObjectException {
    // Resolve the revision specification
    final ObjectId id = repository.resolve(Constants.HEAD);

    this.reader = repository.newObjectReader();
    this.walk = new RevWalk(reader);
    this.commit = walk.parseCommit(id);
}

From source file:org.obiba.git.command.DiffCommand.java

License:Open Source License

@Override
public Iterable<DiffEntry> execute(Git git) {

    Repository repository = git.getRepository();
    ObjectReader reader = repository.newObjectReader();
    try {//from   w  w w.j  av  a 2 s.  c o m
        DiffCurrentPreviousTreeParsersFactory parsersFactory = new DiffCurrentPreviousTreeParsersFactory(
                repository, reader);
        return compareDiffTrees(repository, parsersFactory);
    } catch (IOException e) {
        throw new GitException(e);
    } finally {
        reader.release();
    }
}

From source file:org.omegat.core.team2.impl.GITRemoteRepository2.java

License:Open Source License

private static AbstractTreeIterator prepareTreeParser(Repository repository, ObjectId objId) throws Exception {
    // from the commit we can build the tree which allows us to construct
    // the TreeParser
    try (RevWalk walk = new RevWalk(repository)) {
        RevCommit commit = walk.parseCommit(objId);
        RevTree tree = walk.parseTree(commit.getTree().getId());
        CanonicalTreeParser treeParser = new CanonicalTreeParser();
        ObjectReader reader = repository.newObjectReader();
        treeParser.reset(reader, tree.getId());
        return treeParser;
    }//from ww  w. j a  v a2 s.c o  m
}

From source file:org.ossmeter.platform.vcs.git.GitManager.java

License:Open Source License

/**
 * To set the startRevision to the first commit, use 'null'
 * FIXME: This should HANDLE the exception probably..
 *//*from   w w  w.ja  v  a 2 s  .c  o m*/
@Override
public VcsRepositoryDelta getDelta(VcsRepository repository, String startRevision, String endRevision)
        throws Exception {
    // Clone into local repo
    Git git = getGit((GitRepository) repository);

    VcsRepositoryDelta vcsDelta = new VcsRepositoryDelta();
    vcsDelta.setRepository(repository);

    Repository repo = git.getRepository();
    RevWalk walk = new RevWalk(repo);

    Iterable<RevCommit> logs = git.log().call();
    Iterator<RevCommit> iterator = logs.iterator();

    boolean foundStart = false;
    boolean foundEnd = false;

    List<RevCommit> commits = new ArrayList<RevCommit>();

    // Reorder the commits (currently they are latest first)
    while (iterator.hasNext()) {
        commits.add(0, walk.parseCommit(iterator.next()));
    }

    for (int i = 0; i < commits.size(); i++) {
        RevCommit commit = commits.get(i);
        RevCommit prevCommit = i - 1 < 0 ? null : commits.get(i - 1);

        if (startRevision == null || commit.getId().getName().equals(startRevision)) {
            foundStart = true;
        }
        if (commit.getId().getName().equals(endRevision)) {
            foundEnd = true;
        }

        VcsCommit vcsCommit = null;
        if (foundStart) {
            // Setup the meta data for the commit
            vcsCommit = new VcsCommit();
            vcsCommit.setRevision(commit.getId().getName());
            vcsCommit.setMessage(commit.getFullMessage());
            vcsCommit.setAuthor(commit.getAuthorIdent().getName());
            vcsCommit.setDelta(vcsDelta);
            int date = commit.getCommitTime();
            long datelong = (long) date * (long) 1000;
            vcsCommit.setJavaDate(new java.util.Date(datelong));
            vcsDelta.getCommits().add(vcsCommit);

            if (prevCommit != null) {
                // Do a diff against the succeeding commit
                ObjectId thisCommitId = repo.resolve(commit.getId().getName() + "^{tree}");
                ObjectId prevCommitId = repo.resolve(prevCommit.getId().getName() + "^{tree}");

                ObjectReader reader = repo.newObjectReader();

                CanonicalTreeParser currentTreeIter = new CanonicalTreeParser();
                currentTreeIter.reset(reader, thisCommitId);

                CanonicalTreeParser prevTreeIter = new CanonicalTreeParser();
                prevTreeIter.reset(reader, prevCommitId);

                List<DiffEntry> diffs = git.diff().setNewTree(currentTreeIter).setOldTree(prevTreeIter).call();

                for (DiffEntry diff : diffs) {
                    VcsChangeType change = convertChangeType(diff.getChangeType());
                    if (change == null)
                        continue;
                    VcsCommitItem item = new VcsCommitItem();
                    String path = diff.getNewPath();
                    if (change.equals(VcsChangeType.DELETED)) {
                        path = diff.getOldPath();
                    }
                    item.setPath(path);
                    item.setChangeType(change);
                    item.setCommit(vcsCommit);
                    vcsCommit.getItems().add(item);
                }
            } else {
                // First commit: everything is ADDED
                //                vcsCommit = new VcsCommit();
                TreeWalk treeWalk = new TreeWalk(repo);
                treeWalk.addTree(commit.getTree());
                while (treeWalk.next()) {
                    if (treeWalk.isSubtree()) {
                        treeWalk.enterSubtree();
                    } else {
                        VcsCommitItem item = new VcsCommitItem();
                        item.setPath(treeWalk.getPathString());
                        item.setChangeType(VcsChangeType.ADDED);
                        item.setCommit(vcsCommit);
                        vcsCommit.getItems().add(item);
                    }
                }
            }
        }

        if (foundEnd) {
            break;
        }
    }

    return vcsDelta;
}

From source file:org.repodriller.scm.GitRepository.java

License:Apache License

private String getSourceCode(Repository repo, DiffEntry diff) throws IOException {

    if (!collectConfig.isCollectingSourceCode())
        return "";

    try {// w  ww .  j a  v a  2 s.c  o m
        ObjectReader reader = repo.newObjectReader();
        byte[] bytes = reader.open(diff.getNewId().toObjectId()).getBytes();
        return new String(bytes, "utf-8");
    } catch (Throwable e) {
        return "";
    }
}

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

License:Apache License

private void commit(final Repository repo, final RevCommit original, final BiFunction fun) throws IOException {
    try (final ObjectReader reader = repo.newObjectReader();
            final ObjectInserter inserter = repo.newObjectInserter();
            final RevWalk rw = new RevWalk(reader)) {

        final RefTreeDatabase refdb = (RefTreeDatabase) repo.getRefDatabase();
        final RefDatabase bootstrap = refdb.getBootstrap();
        final RefUpdate refUpdate = bootstrap.newUpdate(refdb.getTxnCommitted(), false);

        final CommitBuilder cb = new CommitBuilder();
        final Ref ref = bootstrap.exactRef(refdb.getTxnCommitted());
        final RefTree tree;
        if (ref != null && ref.getObjectId() != null) {
            tree = RefTree.read(reader, rw.parseTree(ref.getObjectId()));
            cb.setParentId(ref.getObjectId());
            refUpdate.setExpectedOldObjectId(ref.getObjectId());
        } else {//from w  w  w. ja  v a 2s  .  c  o m
            tree = RefTree.newEmptyTree();
            refUpdate.setExpectedOldObjectId(ObjectId.zeroId());
        }

        if (fun.apply(reader, tree)) {
            final Ref ref2 = bootstrap.exactRef(refdb.getTxnCommitted());
            if (ref2 == null || ref2.getObjectId().equals(ref != null ? ref.getObjectId() : null)) {
                cb.setTreeId(tree.writeTree(inserter));
                if (original != null) {
                    cb.setAuthor(original.getAuthorIdent());
                    cb.setCommitter(original.getAuthorIdent());
                } else {
                    final PersonIdent personIdent = new PersonIdent("user", "user@example.com");
                    cb.setAuthor(personIdent);
                    cb.setCommitter(personIdent);
                }
                refUpdate.setNewObjectId(inserter.insert(cb));
                inserter.flush();
                final RefUpdate.Result result = refUpdate.update(rw);
                switch (result) {
                case NEW:
                case FAST_FORWARD:
                    break;
                default:
                    throw new RuntimeException(
                            repo.getDirectory() + " -> " + result.toString() + " : " + refUpdate.getName());
                }
                final File commited = new File(repo.getDirectory(), refdb.getTxnCommitted());
                final File accepted = new File(repo.getDirectory(), refdb.getTxnNamespace() + "accepted");
                Files.copy(commited.toPath(), accepted.toPath(), StandardCopyOption.REPLACE_EXISTING);
            }
        }
    }
}

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

License:Apache License

public Git execute() {
    final Git git = new Clone(repoDir, origin, false, branches, credentialsProvider, leaders, hookDir,
            sslVerify).execute().get();//from   w ww. j a v a 2  s .c  om
    final Repository repository = git.getRepository();

    try (final ObjectReader reader = repository.newObjectReader();
            final ObjectInserter inserter = repository.newObjectInserter()) {
        // Map all transformed commits that are non-empty so that we can properly map parents
        final Map<ObjectId, ObjectId> commitMap = new HashMap<>();
        final RevWalk revWalk = createRevWalk(repository, reader);
        transformBranches(repository, reader, inserter, revWalk, commitMap);
        overrideBranchNames(repository, revWalk, commitMap);

        removeOriginRemote(repository);

        return git;
    } catch (Exception e) {
        String message = String.format("Error cloning origin <%s> with subdirectory <%s>.", origin,
                subdirectory);
        logger.error(message);
        cleanupDir(git.getRepository().getDirectory());
        throw new Clone.CloneException(message, e);
    }
}