List of usage examples for org.eclipse.jgit.api Git getRepository
public Repository getRepository()
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
public static boolean commit(final Git git, final String branchName, final CommitInfo commitInfo, final boolean amend, final ObjectId _originId, final CommitContent content) { boolean hadEffecitiveCommit = true; final PersonIdent author = buildPersonIdent(git, commitInfo.getName(), commitInfo.getEmail(), commitInfo.getTimeZone(), commitInfo.getWhen()); try {//from www .j a v a2 s . c om final ObjectInserter odi = git.getRepository().newObjectInserter(); try { // Create the in-memory index of the new/updated issue. final ObjectId headId = git.getRepository().resolve(branchName + "^{commit}"); final ObjectId originId; if (_originId == null) { originId = git.getRepository().resolve(branchName + "^{commit}"); } else { originId = _originId; } final DirCache index; if (content instanceof DefaultCommitContent) { index = createTemporaryIndex(git, originId, (DefaultCommitContent) content); } else if (content instanceof MoveCommitContent) { index = createTemporaryIndex(git, originId, (MoveCommitContent) content); } else if (content instanceof CopyCommitContent) { index = createTemporaryIndex(git, originId, (CopyCommitContent) content); } else if (content instanceof RevertCommitContent) { index = createTemporaryIndex(git, originId); } else { index = null; } if (index != null) { final ObjectId indexTreeId = index.writeTree(odi); // Create a commit object final CommitBuilder commit = new CommitBuilder(); commit.setAuthor(author); commit.setCommitter(author); commit.setEncoding(Constants.CHARACTER_ENCODING); commit.setMessage(commitInfo.getMessage()); //headId can be null if the repository has no commit yet if (headId != null) { if (amend) { final List<ObjectId> parents = new LinkedList<ObjectId>(); final RevCommit previousCommit = new RevWalk(git.getRepository()).parseCommit(headId); final RevCommit[] p = previousCommit.getParents(); for (final RevCommit revCommit : p) { parents.add(0, revCommit.getId()); } commit.setParentIds(parents); } else { commit.setParentId(headId); } } commit.setTreeId(indexTreeId); // Insert the commit into the repository final ObjectId commitId = odi.insert(commit); odi.flush(); final RevWalk revWalk = new RevWalk(git.getRepository()); try { final RevCommit revCommit = revWalk.parseCommit(commitId); final RefUpdate ru = git.getRepository().updateRef("refs/heads/" + branchName); if (headId == null) { ru.setExpectedOldObjectId(ObjectId.zeroId()); } else { ru.setExpectedOldObjectId(headId); } ru.setNewObjectId(commitId); ru.setRefLogMessage("commit: " + revCommit.getShortMessage(), false); final RefUpdate.Result rc = ru.forceUpdate(); switch (rc) { case NEW: case FORCED: case FAST_FORWARD: break; case REJECTED: case LOCK_FAILURE: throw new ConcurrentRefUpdateException(JGitText.get().couldNotLockHEAD, ru.getRef(), rc); default: throw new JGitInternalException(MessageFormat.format(JGitText.get().updatingRefFailed, Constants.HEAD, commitId.toString(), rc)); } } finally { revWalk.release(); } } else { hadEffecitiveCommit = false; } } finally { odi.release(); } } catch (final Throwable t) { throw new RuntimeException(t); } return hadEffecitiveCommit; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
private static PersonIdent buildPersonIdent(final Git git, final String name, final String _email, final TimeZone timeZone, final Date when) { final TimeZone tz = timeZone == null ? TimeZone.getDefault() : timeZone; final String email = _email == null ? "" : _email; if (name != null) { if (when != null) { return new PersonIdent(name, email, when, tz); } else {/*from w w w .j a va2 s .co m*/ return new PersonIdent(name, email); } } return new PersonIdent(git.getRepository()); }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
/** * Creates an in-memory index of the issue change. */// www .j av a 2 s . c o m private static DirCache createTemporaryIndex(final Git git, final ObjectId headId, final DefaultCommitContent commitContent) { final Map<String, File> content = commitContent.getContent(); final Map<String, Pair<File, ObjectId>> paths = new HashMap<String, Pair<File, ObjectId>>(content.size()); final Set<String> path2delete = new HashSet<String>(); final DirCache inCoreIndex = DirCache.newInCore(); final ObjectInserter inserter = git.getRepository().newObjectInserter(); final DirCacheEditor editor = inCoreIndex.editor(); try { for (final Map.Entry<String, File> pathAndContent : content.entrySet()) { final String gPath = fixPath(pathAndContent.getKey()); if (pathAndContent.getValue() == null) { final TreeWalk treeWalk = new TreeWalk(git.getRepository()); treeWalk.addTree(new RevWalk(git.getRepository()).parseTree(headId)); treeWalk.setRecursive(true); treeWalk.setFilter(PathFilter.create(gPath)); while (treeWalk.next()) { path2delete.add(treeWalk.getPathString()); } treeWalk.release(); } else { try { final InputStream inputStream = new FileInputStream(pathAndContent.getValue()); try { final ObjectId objectId = inserter.insert(Constants.OBJ_BLOB, pathAndContent.getValue().length(), inputStream); paths.put(gPath, Pair.newPair(pathAndContent.getValue(), objectId)); } finally { inputStream.close(); } } catch (final Exception ex) { throw new RuntimeException(ex); } } } if (headId != null) { final TreeWalk treeWalk = new TreeWalk(git.getRepository()); final int hIdx = treeWalk.addTree(new RevWalk(git.getRepository()).parseTree(headId)); treeWalk.setRecursive(true); while (treeWalk.next()) { final String walkPath = treeWalk.getPathString(); final CanonicalTreeParser hTree = treeWalk.getTree(hIdx, CanonicalTreeParser.class); if (paths.containsKey(walkPath) && paths.get(walkPath).getK2().equals(hTree.getEntryObjectId())) { paths.remove(walkPath); } if (paths.get(walkPath) == null && !path2delete.contains(walkPath)) { final DirCacheEntry dcEntry = new DirCacheEntry(walkPath); final ObjectId _objectId = hTree.getEntryObjectId(); final FileMode _fileMode = hTree.getEntryFileMode(); // add to temporary in-core index editor.add(new DirCacheEditor.PathEdit(dcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setObjectId(_objectId); ent.setFileMode(_fileMode); } }); } } treeWalk.release(); } for (final Map.Entry<String, Pair<File, ObjectId>> pathAndContent : paths.entrySet()) { if (pathAndContent.getValue().getK1() != null) { editor.add(new DirCacheEditor.PathEdit(new DirCacheEntry(pathAndContent.getKey())) { @Override public void apply(final DirCacheEntry ent) { ent.setLength(pathAndContent.getValue().getK1().length()); ent.setLastModified(pathAndContent.getValue().getK1().lastModified()); ent.setFileMode(REGULAR_FILE); ent.setObjectId(pathAndContent.getValue().getK2()); } }); } } editor.finish(); } catch (Exception e) { throw new RuntimeException(e); } finally { inserter.release(); } if (path2delete.isEmpty() && paths.isEmpty()) { //no changes! return null; } return inCoreIndex; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
private static DirCache createTemporaryIndex(final Git git, final ObjectId headId, final MoveCommitContent commitContent) { final Map<String, String> content = commitContent.getContent(); final DirCache inCoreIndex = DirCache.newInCore(); final DirCacheEditor editor = inCoreIndex.editor(); try {// w w w .j a va2 s. c om if (headId != null) { final TreeWalk treeWalk = new TreeWalk(git.getRepository()); final int hIdx = treeWalk.addTree(new RevWalk(git.getRepository()).parseTree(headId)); treeWalk.setRecursive(true); while (treeWalk.next()) { final String walkPath = treeWalk.getPathString(); final CanonicalTreeParser hTree = treeWalk.getTree(hIdx, CanonicalTreeParser.class); final String toPath = content.get(walkPath); if (toPath == null) { final DirCacheEntry dcEntry = new DirCacheEntry(walkPath); final ObjectId _objectId = hTree.getEntryObjectId(); final FileMode _fileMode = hTree.getEntryFileMode(); // add to temporary in-core index editor.add(new DirCacheEditor.PathEdit(dcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setObjectId(_objectId); ent.setFileMode(_fileMode); } }); } else { final DirCacheEntry dcEntry = new DirCacheEntry(toPath); final ObjectId _objectId = hTree.getEntryObjectId(); final FileMode _fileMode = hTree.getEntryFileMode(); editor.add(new DirCacheEditor.PathEdit(dcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setFileMode(_fileMode); ent.setObjectId(_objectId); } }); } } treeWalk.release(); } editor.finish(); } catch (final Exception e) { throw new RuntimeException(e); } return inCoreIndex; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
private static DirCache createTemporaryIndex(final Git git, final ObjectId headId, final CopyCommitContent commitContent) { final Map<String, String> content = commitContent.getContent(); final DirCache inCoreIndex = DirCache.newInCore(); final DirCacheEditor editor = inCoreIndex.editor(); try {//w w w . j a v a2 s . c o m if (headId != null) { final TreeWalk treeWalk = new TreeWalk(git.getRepository()); final int hIdx = treeWalk.addTree(new RevWalk(git.getRepository()).parseTree(headId)); treeWalk.setRecursive(true); while (treeWalk.next()) { final String walkPath = treeWalk.getPathString(); final CanonicalTreeParser hTree = treeWalk.getTree(hIdx, CanonicalTreeParser.class); final String toPath = content.get(walkPath); final DirCacheEntry dcEntry = new DirCacheEntry(walkPath); final ObjectId _objectId = hTree.getEntryObjectId(); final FileMode _fileMode = hTree.getEntryFileMode(); // add to temporary in-core index editor.add(new DirCacheEditor.PathEdit(dcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setObjectId(_objectId); ent.setFileMode(_fileMode); } }); if (toPath != null) { final DirCacheEntry newdcEntry = new DirCacheEntry(toPath); final ObjectId newObjectId = hTree.getEntryObjectId(); final FileMode newFileMode = hTree.getEntryFileMode(); editor.add(new DirCacheEditor.PathEdit(newdcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setFileMode(newFileMode); ent.setObjectId(newObjectId); } }); } } treeWalk.release(); } editor.finish(); } catch (final Exception e) { throw new RuntimeException(e); } return inCoreIndex; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
private static DirCache createTemporaryIndex(final Git git, final ObjectId headId) { final DirCache inCoreIndex = DirCache.newInCore(); final DirCacheEditor editor = inCoreIndex.editor(); try {//from w ww . ja va 2s. c om if (headId != null) { final TreeWalk treeWalk = new TreeWalk(git.getRepository()); final int hIdx = treeWalk.addTree(new RevWalk(git.getRepository()).parseTree(headId)); treeWalk.setRecursive(true); while (treeWalk.next()) { final String walkPath = treeWalk.getPathString(); final CanonicalTreeParser hTree = treeWalk.getTree(hIdx, CanonicalTreeParser.class); final DirCacheEntry dcEntry = new DirCacheEntry(walkPath); final ObjectId _objectId = hTree.getEntryObjectId(); final FileMode _fileMode = hTree.getEntryFileMode(); // add to temporary in-core index editor.add(new DirCacheEditor.PathEdit(dcEntry) { @Override public void apply(final DirCacheEntry ent) { ent.setObjectId(_objectId); ent.setFileMode(_fileMode); } }); } treeWalk.release(); } editor.finish(); } catch (final Exception e) { throw new RuntimeException(e); } return inCoreIndex; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
public static Pair<PathType, ObjectId> checkPath(final Git git, final String branchName, final String path) { checkNotNull("git", git); checkNotNull("path", path); checkNotEmpty("branchName", branchName); final String gitPath = fixPath(path); if (gitPath.isEmpty()) { return newPair(PathType.DIRECTORY, null); }/*from ww w . jav a2s. com*/ TreeWalk tw = null; try { final ObjectId tree = git.getRepository().resolve(branchName + "^{tree}"); tw = new TreeWalk(git.getRepository()); tw.setFilter(PathFilter.create(gitPath)); tw.reset(tree); while (tw.next()) { if (tw.getPathString().equals(gitPath)) { if (tw.getFileMode(0).equals(FileMode.TYPE_TREE)) { return newPair(PathType.DIRECTORY, tw.getObjectId(0)); } else if (tw.getFileMode(0).equals(FileMode.TYPE_FILE) || tw.getFileMode(0).equals(FileMode.EXECUTABLE_FILE) || tw.getFileMode(0).equals(FileMode.REGULAR_FILE)) { return newPair(PathType.FILE, tw.getObjectId(0)); } } if (tw.isSubtree()) { tw.enterSubtree(); } } } catch (final Throwable ignored) { } finally { if (tw != null) { tw.release(); } } return newPair(PathType.NOT_FOUND, null); }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
public static JGitPathInfo resolvePath(final Git git, final String branchName, final String path) { checkNotNull("git", git); checkNotNull("path", path); checkNotEmpty("branchName", branchName); final String gitPath = fixPath(path); if (gitPath.isEmpty()) { return new JGitPathInfo(null, "/", TREE); }/*www .j a v a 2 s . c o m*/ TreeWalk tw = null; try { final ObjectId tree = git.getRepository().resolve(branchName + "^{tree}"); tw = new TreeWalk(git.getRepository()); tw.setFilter(PathFilter.create(gitPath)); tw.reset(tree); while (tw.next()) { if (tw.getPathString().equals(gitPath)) { if (tw.getFileMode(0).equals(TREE)) { return new JGitPathInfo(tw.getObjectId(0), tw.getPathString(), TREE); } else if (tw.getFileMode(0).equals(REGULAR_FILE) || tw.getFileMode(0).equals(EXECUTABLE_FILE)) { final long size = tw.getObjectReader().getObjectSize(tw.getObjectId(0), OBJ_BLOB); return new JGitPathInfo(tw.getObjectId(0), tw.getPathString(), REGULAR_FILE, size); } } if (tw.isSubtree()) { tw.enterSubtree(); } } } catch (final Throwable ignored) { } finally { if (tw != null) { tw.release(); } } return null; }
From source file:org.uberfire.java.nio.fs.jgit.util.JGitUtil.java
License:Apache License
public static List<JGitPathInfo> listPathContent(final Git git, final String branchName, final String path) { checkNotNull("git", git); checkNotNull("path", path); checkNotEmpty("branchName", branchName); final String gitPath = fixPath(path); TreeWalk tw = null;//w ww . jav a 2 s . c o m final List<JGitPathInfo> result = new ArrayList<JGitPathInfo>(); try { final ObjectId tree = git.getRepository().resolve(branchName + "^{tree}"); tw = new TreeWalk(git.getRepository()); boolean found = false; if (gitPath.isEmpty()) { found = true; } else { tw.setFilter(PathFilter.create(gitPath)); } tw.reset(tree); while (tw.next()) { if (!found && tw.isSubtree()) { tw.enterSubtree(); } if (tw.getPathString().equals(gitPath)) { found = true; continue; } if (found) { result.add(new JGitPathInfo(tw.getObjectId(0), tw.getPathString(), tw.getFileMode(0))); } } } catch (final Throwable ignored) { } finally { if (tw != null) { tw.release(); } } return result; }
From source file:org.uberfire.provisioning.source.git.CloneTestJUnitTest.java
License:Apache License
@Test public void hello() throws Exception { final String repoName = "drools-workshop-build"; final Optional<Source> source = new GitConfigExecutor(new InMemorySourceRegistry()) .apply(new GitConfigImpl(tempPath.getAbsolutePath(), "master", gitUrl, repoName, "true")); assertTrue(source.isPresent());// w w w. ja v a 2s .c om final String targetRepoDir = tempPath.getAbsolutePath() + "/" + repoName + ".git"; Git git = Git.open(new File(targetRepoDir)); assertNotNull(git.getRepository().exactRef(Constants.HEAD)); }