List of usage examples for org.eclipse.jgit.lib Constants HEAD
String HEAD
To view the source code for org.eclipse.jgit.lib Constants HEAD.
Click Source Link
From source file:org.jboss.forge.addon.git.GitUtilsImpl.java
License:Open Source License
@Override public CherryPickResult cherryPickNoMerge(final Git git, Ref src) throws GitAPIException, CantMergeCommitException { // Does the same as the original git-cherryPick // except commiting after running merger Repository repo = git.getRepository(); RevCommit newHead = null;/*from w ww . j a v a 2 s .c o m*/ List<Ref> cherryPickedRefs = new LinkedList<Ref>(); try (RevWalk revWalk = new RevWalk(repo)) { // get the head commit Ref headRef = repo.findRef(Constants.HEAD); if (headRef == null) throw new NoHeadException(JGitText.get().commitOnRepoWithoutHEADCurrentlyNotSupported); RevCommit headCommit = revWalk.parseCommit(headRef.getObjectId()); newHead = headCommit; // get the commit to be cherry-picked // handle annotated tags ObjectId srcObjectId = src.getPeeledObjectId(); if (srcObjectId == null) srcObjectId = src.getObjectId(); RevCommit srcCommit = revWalk.parseCommit(srcObjectId); // get the parent of the commit to cherry-pick if (srcCommit.getParentCount() == 0) throw new CantMergeCommitException("Commit with zero parents cannot be merged"); if (srcCommit.getParentCount() > 1) throw new MultipleParentsNotAllowedException( MessageFormat.format(JGitText.get().canOnlyCherryPickCommitsWithOneParent, srcCommit.name(), Integer.valueOf(srcCommit.getParentCount()))); RevCommit srcParent = srcCommit.getParent(0); revWalk.parseHeaders(srcParent); ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE.newMerger(repo); merger.setWorkingTreeIterator(new FileTreeIterator(repo)); merger.setBase(srcParent.getTree()); if (merger.merge(headCommit, srcCommit)) { DirCacheCheckout dco = new DirCacheCheckout(repo, headCommit.getTree(), repo.lockDirCache(), merger.getResultTreeId()); dco.setFailOnConflict(true); dco.checkout(); cherryPickedRefs.add(src); } else { if (merger.failed()) return new CherryPickResult(merger.getFailingPaths()); // there are merge conflicts String message = new MergeMessageFormatter().formatWithConflicts(srcCommit.getFullMessage(), merger.getUnmergedPaths()); repo.writeCherryPickHead(srcCommit.getId()); repo.writeMergeCommitMsg(message); return CherryPickResult.CONFLICT; } } catch (IOException e) { throw new JGitInternalException( MessageFormat.format(JGitText.get().exceptionCaughtDuringExecutionOfCherryPickCommand, e), e); } return new CherryPickResult(newHead, cherryPickedRefs); }
From source file:org.jboss.forge.git.Clone.java
License:Eclipse Distribution License
private void doCheckout(final Ref branch) throws IOException { if (branch == null) throw new Die(CLIText.get().cannotChekoutNoHeadsAdvertisedByRemote); if (!Constants.HEAD.equals(branch.getName())) { RefUpdate u = db.updateRef(Constants.HEAD); u.disableRefLog();/*from ww w . j a v a 2s . c o m*/ u.link(branch.getName()); } final RevCommit commit = parseCommit(branch); final RefUpdate u = db.updateRef(Constants.HEAD); u.setNewObjectId(commit); u.forceUpdate(); DirCache dc = db.lockDirCache(); DirCacheCheckout co = new DirCacheCheckout(db, dc, commit.getTree()); co.checkout(); }
From source file:org.jboss.forge.git.GitUtils.java
License:Open Source License
public static CherryPickResult cherryPickNoMerge(final Git git, Ref src) throws GitAPIException, CantMergeCommitWithZeroParentsException { // Does the same as the original git-cherryPick // except commiting after running merger Repository repo = git.getRepository(); RevCommit newHead = null;//ww w . jav a 2 s . c om List<Ref> cherryPickedRefs = new LinkedList<Ref>(); RevWalk revWalk = new RevWalk(repo); try { // get the head commit Ref headRef = repo.getRef(Constants.HEAD); if (headRef == null) throw new NoHeadException(JGitText.get().commitOnRepoWithoutHEADCurrentlyNotSupported); RevCommit headCommit = revWalk.parseCommit(headRef.getObjectId()); newHead = headCommit; // get the commit to be cherry-picked // handle annotated tags ObjectId srcObjectId = src.getPeeledObjectId(); if (srcObjectId == null) srcObjectId = src.getObjectId(); RevCommit srcCommit = revWalk.parseCommit(srcObjectId); // get the parent of the commit to cherry-pick if (srcCommit.getParentCount() == 0) throw new CantMergeCommitWithZeroParentsException("Commit with zero parents cannot be merged"); if (srcCommit.getParentCount() > 1) throw new MultipleParentsNotAllowedException( MessageFormat.format(JGitText.get().canOnlyCherryPickCommitsWithOneParent, srcCommit.name(), Integer.valueOf(srcCommit.getParentCount()))); RevCommit srcParent = srcCommit.getParent(0); revWalk.parseHeaders(srcParent); ResolveMerger merger = (ResolveMerger) MergeStrategy.RESOLVE.newMerger(repo); merger.setWorkingTreeIterator(new FileTreeIterator(repo)); merger.setBase(srcParent.getTree()); if (merger.merge(headCommit, srcCommit)) { DirCacheCheckout dco = new DirCacheCheckout(repo, headCommit.getTree(), repo.lockDirCache(), merger.getResultTreeId()); dco.setFailOnConflict(true); dco.checkout(); cherryPickedRefs.add(src); } else { if (merger.failed()) return new CherryPickResult(merger.getFailingPaths()); // there are merge conflicts String message = new MergeMessageFormatter().formatWithConflicts(srcCommit.getFullMessage(), merger.getUnmergedPaths()); repo.writeCherryPickHead(srcCommit.getId()); repo.writeMergeCommitMsg(message); return CherryPickResult.CONFLICT; } } catch (IOException e) { throw new JGitInternalException( MessageFormat.format(JGitText.get().exceptionCaughtDuringExecutionOfCherryPickCommand, e), e); } finally { revWalk.release(); } return new CherryPickResult(newHead, cherryPickedRefs); }
From source file:org.jboss.tools.openshift.egit.core.EGitUtils.java
License:Open Source License
public static void cloneRepository(String uri, String remoteName, File destination, PostCloneTask postCloneTask, IProgressMonitor monitor) throws URISyntaxException, InvocationTargetException, InterruptedException { URIish gitUri = new URIish(uri); CloneOperation cloneOperation = new CloneOperation(gitUri, true, null, destination, Constants.HEAD, remoteName, DEFAULT_TIMEOUT); if (postCloneTask != null) { cloneOperation.addPostCloneTask(postCloneTask); }/* w ww. j av a 2 s . c om*/ cloneOperation.run(monitor); // RepositoryUtil repositoryUtil = // Activator.getDefault().getRepositoryUtil(); // repositoryUtil.addConfiguredRepository(new File(destination, // Constants.DOT_GIT)); }
From source file:org.jboss.tools.openshift.egit.core.EGitUtils.java
License:Open Source License
/** * Merges the given uri to HEAD in the given repository. The given branch is * the branch in the local repo the fetched HEAD is fetched to. * /*from w w w. j a v a 2s. c o m*/ * @param branch * @param uri * @param repository * @param monitor * @throws CoreException * @throws InvocationTargetException */ public static void mergeWithRemote(URIish uri, String branch, Repository repository, IProgressMonitor monitor) throws CoreException, InvocationTargetException { RefSpec ref = new RefSpec().setSource(Constants.HEAD).setDestination(branch); fetch(uri, Collections.singletonList(ref), repository, monitor); merge(branch, repository, monitor); }
From source file:org.jboss.tools.openshift.egit.core.EGitUtils.java
License:Open Source License
/** * Returns the changes in the index of the HEAD branch in the given * repository. Returns the index diff if there are changes, * <code>null</code> otherwise. * //from w ww . j a va 2 s . c o m * @param repo * the repository to get index changes for * @param monitor * the monitor to report progress to * @return the changes in the index or null; * @throws IOException */ public static IndexDiff getIndexChanges(Repository repo, IProgressMonitor monitor) throws IOException { EclipseGitProgressTransformer jgitMonitor = new EclipseGitProgressTransformer(monitor); IndexDiff indexDiff = new IndexDiff(repo, Constants.HEAD, IteratorService.createInitialIterator(repo)); if (!indexDiff.diff(jgitMonitor, 0, 0, NLS.bind("Repository: {0}", repo.getDirectory().getPath()))) { return null; } return indexDiff; }
From source file:org.jboss.tools.openshift.egit.core.EGitUtils.java
License:Open Source License
private static boolean isNonTrackingBranchAhead(Repository repo, String remote, IProgressMonitor monitor) throws URISyntaxException, InvocationTargetException, IOException { RemoteConfig remoteConfig = new RemoteConfig(repo.getConfig(), remote); FetchResult fetchResult = fetch(remoteConfig, repo, monitor); Ref ref = fetchResult.getAdvertisedRef(Constants.HEAD); if (ref == null) { return false; }/*from w ww.j a va2s .c o m*/ Ref currentBranchRef = repo.getRef(repo.getBranch()); RevWalk walk = new RevWalk(repo); RevCommit localCommit = walk.parseCommit(currentBranchRef.getObjectId()); RevCommit trackingCommit = walk.parseCommit(ref.getObjectId()); walk.setRevFilter(RevFilter.MERGE_BASE); walk.markStart(localCommit); walk.markStart(trackingCommit); RevCommit mergeBase = walk.next(); walk.reset(); walk.setRevFilter(RevFilter.ALL); int aheadCount = RevWalkUtils.count(walk, localCommit, mergeBase); return aheadCount > 0; }
From source file:org.jboss.tools.openshift.egit.internal.test.util.TestRepository.java
License:Open Source License
public boolean removedFromIndex(String path) throws IOException { DirCacheEntry dc = getDirCacheEntry(path); if (dc == null) return true; Ref ref = repository.getRef(Constants.HEAD); RevCommit c = new RevWalk(repository).parseCommit(ref.getObjectId()); TreeWalk tw = TreeWalk.forPath(repository, path, c.getTree()); return tw == null || dc.getObjectId().equals(tw.getObjectId(0)); }
From source file:org.jboss.tools.openshift.express.internal.ui.server.CommitDialog.java
License:Open Source License
/** Retrieve file status * @param path/*ww w. ja va2 s .c om*/ * @return file status * @throws IOException */ private Status getFileStatus(String path) throws IOException { FileTreeIterator fileTreeIterator = new FileTreeIterator(repository); IndexDiff indexDiff = new IndexDiff(repository, Constants.HEAD, fileTreeIterator); Set<String> repositoryPaths = Collections.singleton(path); indexDiff.setFilter(PathFilterGroup.createFromStrings(repositoryPaths)); indexDiff.diff(null, 0, 0, ""); //$NON-NLS-1$ return getFileStatus(path, indexDiff); }
From source file:org.jboss.tools.tycho.sitegenerator.GenerateRepositoryFacadeMojo.java
License:Open Source License
private ModelNode createRevisionObject() throws IOException, FileNotFoundException { ModelNode res = new ModelNode(); File repoRoot = findRepoRoot(this.project.getBasedir()); FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository gitRepo = builder.setGitDir(new File(repoRoot, ".git")).readEnvironment() // scan environment GIT_* variables .findGitDir() // scan up the file system tree .build();/* ww w .j a v a2 s. com*/ Ref head = gitRepo.getRef(Constants.HEAD); res.get("HEAD").set(head.getObjectId().getName()); if (head.getTarget() != null && head.getTarget().getName() != null) { res.get("currentBranch").set(head.getTarget().getName()); } ModelNode knownReferences = new ModelNode(); for (Entry<String, Ref> entry : gitRepo.getAllRefs().entrySet()) { if (entry.getKey().startsWith(Constants.R_REMOTES) && entry.getValue().getObjectId().getName().equals(head.getObjectId().getName())) { ModelNode reference = new ModelNode(); String remoteName = entry.getKey().substring(Constants.R_REMOTES.length()); remoteName = remoteName.substring(0, remoteName.indexOf('/')); String remoteUrl = gitRepo.getConfig().getString("remote", remoteName, "url"); String branchName = entry.getKey() .substring(Constants.R_REMOTES.length() + 1 + remoteName.length()); reference.get("name").set(remoteName); reference.get("url").set(remoteUrl); reference.get("ref").set(branchName); knownReferences.add(reference); } } res.get("knownReferences").set(knownReferences); return res; }