Example usage for org.eclipse.jgit.dircache DirCacheBuilder addTree

List of usage examples for org.eclipse.jgit.dircache DirCacheBuilder addTree

Introduction

In this page you can find the example usage for org.eclipse.jgit.dircache DirCacheBuilder addTree.

Prototype

public void addTree(byte[] pathPrefix, int stage, ObjectReader reader, AnyObjectId tree) throws IOException 

Source Link

Document

Recursively add an entire tree into this builder.

Usage

From source file:com.google.gerrit.server.edit.ChangeEditModifier.java

License:Apache License

private static DirCache readTree(ObjectReader reader, RevCommit prevEdit) throws IOException {
    DirCache dc = DirCache.newInCore();//  ww  w.  j a  v a2  s .com
    DirCacheBuilder b = dc.builder();
    b.addTree(new byte[0], DirCacheEntry.STAGE_0, reader, prevEdit.getTree());
    b.finish();
    return dc;
}

From source file:com.google.gerrit.server.edit.tree.TreeCreator.java

License:Apache License

private DirCache readBaseTree(Repository repository) throws IOException {
    try (ObjectReader objectReader = repository.newObjectReader()) {
        DirCache dirCache = DirCache.newInCore();
        DirCacheBuilder dirCacheBuilder = dirCache.builder();
        dirCacheBuilder.addTree(new byte[0], DirCacheEntry.STAGE_0, objectReader, baseCommit.getTree());
        dirCacheBuilder.finish();/*w  w w .  java 2  s  .  c  om*/
        return dirCache;
    }
}

From source file:com.google.gerrit.server.git.SubmoduleOp.java

License:Apache License

private static DirCache readTree(final Repository pdb, final Ref branch)
        throws MissingObjectException, IncorrectObjectTypeException, IOException {
    try (RevWalk rw = new RevWalk(pdb)) {
        final DirCache dc = DirCache.newInCore();
        final DirCacheBuilder b = dc.builder();
        b.addTree(new byte[0], // no prefix path
                DirCacheEntry.STAGE_0, // standard stage
                pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
        b.finish();//  w w  w.jav a 2s. c  o  m
        return dc;
    }
}

From source file:com.google.gerrit.server.git.VersionedMetaData.java

License:Apache License

protected DirCache readTree(RevTree tree)
        throws IOException, MissingObjectException, IncorrectObjectTypeException {
    DirCache dc = DirCache.newInCore();/* w  ww  .ja  va  2s  .c o m*/
    if (tree != null) {
        DirCacheBuilder b = dc.builder();
        b.addTree(new byte[0], DirCacheEntry.STAGE_0, reader, tree);
        b.finish();
    }
    return dc;
}

From source file:jetbrains.buildServer.buildTriggers.vcs.git.GitMergeSupport.java

License:Apache License

@NotNull
private ObjectId mergeCommits(@NotNull GitVcsRoot gitRoot, @NotNull Repository db, @NotNull RevCommit srcCommit,
        @NotNull RevCommit dstCommit, @NotNull String message, @NotNull MergeOptions options)
        throws IOException, MergeFailedException {
    if (!alwaysCreateMergeCommit(options)) {
        RevWalk walk = new RevWalk(db);
        try {//from   w w w  .  jav  a 2  s.c  om
            if (walk.isMergedInto(walk.parseCommit(dstCommit), walk.parseCommit(srcCommit))) {
                LOG.debug("Commit " + srcCommit.name() + " already merged into " + dstCommit
                        + ", skip the merge");
                return srcCommit;
            }
        } finally {
            walk.release();
        }
    }

    if (tryRebase(options)) {
        LOG.debug("Run rebase, root " + gitRoot + ", revision " + srcCommit.name() + ", destination "
                + dstCommit.name());
        try {
            return rebase(gitRoot, db, srcCommit, dstCommit);
        } catch (MergeFailedException e) {
            if (enforceLinearHistory(options)) {
                LOG.debug("Rebase failed, root " + gitRoot + ", revision " + srcCommit.name() + ", destination "
                        + dstCommit.name(), e);
                throw e;
            }
        } catch (IOException e) {
            if (enforceLinearHistory(options)) {
                LOG.debug("Rebase failed, root " + gitRoot + ", revision " + srcCommit.name() + ", destination "
                        + dstCommit.name(), e);
                throw e;
            }
        }
    }

    ResolveMerger merger = (ResolveMerger) MergeStrategy.RECURSIVE.newMerger(db, true);
    boolean mergeSuccessful = merger.merge(dstCommit, srcCommit);
    if (!mergeSuccessful) {
        List<String> conflicts = merger.getUnmergedPaths();
        Collections.sort(conflicts);
        LOG.debug("Merge failed with conflicts, root " + gitRoot + ", revision " + srcCommit.name()
                + ", destination " + dstCommit.name() + ", conflicts " + conflicts);
        throw new MergeFailedException(conflicts);
    }

    ObjectInserter inserter = db.newObjectInserter();
    DirCache dc = DirCache.newInCore();
    DirCacheBuilder dcb = dc.builder();

    dcb.addTree(new byte[] {}, 0, db.getObjectDatabase().newReader(), merger.getResultTreeId());
    inserter.flush();
    dcb.finish();

    ObjectId writtenTreeId = dc.writeTree(inserter);

    CommitBuilder commitBuilder = new CommitBuilder();
    commitBuilder.setCommitter(gitRoot.getTagger(db));
    commitBuilder.setAuthor(gitRoot.getTagger(db));
    commitBuilder.setMessage(message);
    commitBuilder.addParentId(dstCommit);
    commitBuilder.addParentId(srcCommit);
    commitBuilder.setTreeId(writtenTreeId);

    ObjectId commitId = inserter.insert(commitBuilder);
    inserter.flush();
    return commitId;
}

From source file:org.eclipse.egit.core.op.ResetOperation.java

License:Open Source License

private void resetIndex() throws TeamException {
    DirCache dc = null;/*from  www . j a  va 2 s  .  c o m*/
    try {
        dc = repository.lockDirCache();
        dc.clear();
        DirCacheBuilder dcb = dc.builder();
        dcb.addTree(new byte[0], 0, repository.newObjectReader(), commit.getTree());
        dcb.commit();
    } catch (IOException e) {
        throw new TeamException(CoreText.ResetOperation_readingIndex, e);
    } finally {
        if (dc != null)
            dc.unlock();
    }
}

From source file:org.jfrog.bamboo.release.scm.git.ResetCommand.java

License:Eclipse Distribution License

private void resetIndex(RevCommit commit) throws IOException {
    DirCache dc = null;/*w ww  .  j a  v  a  2 s . co m*/
    try {
        dc = repo.lockDirCache();
        dc.clear();
        DirCacheBuilder dcb = dc.builder();
        dcb.addTree(new byte[0], 0, repo.newObjectReader(), commit.getTree());
        dcb.commit();
    } finally {
        if (dc != null) {
            dc.unlock();
        }
    }
}