List of usage examples for org.eclipse.jgit.lib ObjectChecker checkTree
public void checkTree(byte[] raw) throws CorruptObjectException
From source file:svnserver.repository.git.LayoutHelper.java
License:GNU General Public License
@Nullable private static ObjectId createSvnLayoutTree(@NotNull ObjectInserter inserter, @NotNull Map<String, ObjectId> revBranches) throws IOException { final Deque<TreeFormatter> stack = new ArrayDeque<>(); stack.add(new TreeFormatter()); String dir = ""; final ObjectChecker checker = new ObjectChecker(); for (Map.Entry<String, ObjectId> entry : new TreeMap<>(revBranches).entrySet()) { final String path = entry.getKey(); // Save already added nodes. while (!path.startsWith(dir)) { final int index = dir.lastIndexOf('/', dir.length() - 2) + 1; final TreeFormatter tree = stack.pop(); checker.checkTree(tree.toByteArray()); stack.element().append(dir.substring(index, dir.length() - 1), FileMode.TREE, inserter.insert(tree)); dir = dir.substring(0, index); }/*from ww w.ja v a2 s. c o m*/ // Go deeper. for (int index = path.indexOf('/', dir.length()) + 1; index < path .length(); index = path.indexOf('/', index) + 1) { dir = path.substring(0, index); stack.push(new TreeFormatter()); } // Add commit to tree. { final int index = path.lastIndexOf('/', path.length() - 2) + 1; stack.element().append(path.substring(index, path.length() - 1), FileMode.GITLINK, entry.getValue()); } } // Save already added nodes. while (!dir.isEmpty()) { int index = dir.lastIndexOf('/', dir.length() - 2) + 1; final TreeFormatter tree = stack.pop(); checker.checkTree(tree.toByteArray()); stack.element().append(dir.substring(index, dir.length() - 1), FileMode.TREE, inserter.insert(tree)); dir = dir.substring(0, index); } // Save root tree to disk. final TreeFormatter rootTree = stack.pop(); checker.checkTree(rootTree.toByteArray()); if (!stack.isEmpty()) { throw new IllegalStateException(); } return inserter.insert(rootTree); }