Example usage for org.eclipse.jgit.treewalk AbstractTreeIterator getEntryFileMode

List of usage examples for org.eclipse.jgit.treewalk AbstractTreeIterator getEntryFileMode

Introduction

In this page you can find the example usage for org.eclipse.jgit.treewalk AbstractTreeIterator getEntryFileMode.

Prototype

public FileMode getEntryFileMode() 

Source Link

Document

Get the file mode of the current entry.

Usage

From source file:org.eclipse.orion.server.git.jobs.StashApplyCommand.java

License:Eclipse Distribution License

private void resetIndex(RevTree tree) throws IOException {
    DirCache dc = repo.lockDirCache();//from   w  w  w . j a v  a  2s  .  c  o m
    TreeWalk walk = null;
    try {
        DirCacheBuilder builder = dc.builder();

        walk = new TreeWalk(repo);
        walk.addTree(tree);
        walk.addTree(new DirCacheIterator(dc));
        walk.setRecursive(true);

        while (walk.next()) {
            AbstractTreeIterator cIter = walk.getTree(0, AbstractTreeIterator.class);
            if (cIter == null) {
                // Not in commit, don't add to new index
                continue;
            }

            final DirCacheEntry entry = new DirCacheEntry(walk.getRawPath());
            entry.setFileMode(cIter.getEntryFileMode());
            entry.setObjectIdFromRaw(cIter.idBuffer(), cIter.idOffset());

            DirCacheIterator dcIter = walk.getTree(1, DirCacheIterator.class);
            if (dcIter != null && dcIter.idEqual(cIter)) {
                DirCacheEntry indexEntry = dcIter.getDirCacheEntry();
                entry.setLastModified(indexEntry.getLastModified());
                entry.setLength(indexEntry.getLength());
            }

            builder.add(entry);
        }

        builder.commit();
    } finally {
        dc.unlock();
        if (walk != null)
            walk.release();
    }
}

From source file:org.eclipse.orion.server.git.jobs.StashApplyCommand.java

License:Eclipse Distribution License

private void resetUntracked(RevTree tree) throws CheckoutConflictException, IOException {
    TreeWalk walk = null;/*w  w  w.jav a  2s . c  o m*/
    try {
        walk = new TreeWalk(repo); // maybe NameConflictTreeWalk?
        walk.addTree(tree);
        walk.addTree(new FileTreeIterator(repo));
        walk.setRecursive(true);

        final ObjectReader reader = walk.getObjectReader();

        while (walk.next()) {
            final AbstractTreeIterator cIter = walk.getTree(0, AbstractTreeIterator.class);
            if (cIter == null)
                // Not in commit, don't create untracked
                continue;

            final DirCacheEntry entry = new DirCacheEntry(walk.getRawPath());
            entry.setFileMode(cIter.getEntryFileMode());
            entry.setObjectIdFromRaw(cIter.idBuffer(), cIter.idOffset());

            FileTreeIterator fIter = walk.getTree(1, FileTreeIterator.class);
            if (fIter != null) {
                if (fIter.isModified(entry, true, reader)) {
                    // file exists and is dirty
                    throw new CheckoutConflictException(entry.getPathString());
                }
            }

            checkoutPath(entry, reader);
        }
    } finally {
        if (walk != null)
            walk.release();
    }
}