Package org.eclipse.jgit.lib

Examples of org.eclipse.jgit.lib.Ref


  private void checkout(Repository repo, FetchResult result)
      throws JGitInternalException,
      MissingObjectException, IncorrectObjectTypeException, IOException {

    Ref head = result.getAdvertisedRef(branch);
    if (branch.equals(Constants.HEAD)) {
      Ref foundBranch = findBranchToCheckout(result);
      if (foundBranch != null)
        head = foundBranch;
    }

    if (head == null || head.getObjectId() == null)
View Full Code Here


      co.checkout();
    }
  }

  private Ref findBranchToCheckout(FetchResult result) {
    Ref foundBranch = null;
    final Ref idHEAD = result.getAdvertisedRef(Constants.HEAD);
    for (final Ref r : result.getAdvertisedRefs()) {
      final String n = r.getName();
      if (!n.startsWith(Constants.R_HEADS))
        continue;
      if (idHEAD == null)
        continue;
      if (r.getObjectId().equals(idHEAD.getObjectId())) {
        foundBranch = r;
        break;
      }
    }
    return foundBranch;
View Full Code Here

    RevWalk walk = new RevWalk(repo);
    ObjectInserter inserter = repo.newObjectInserter();
    NoteMap map = NoteMap.newEmptyMap();
    RevCommit notesCommit = null;
    try {
      Ref ref = repo.getRef(notesRef);
      // if we have a notes ref, use it
      if (ref != null) {
        notesCommit = walk.parseCommit(ref.getObjectId());
        map = NoteMap.read(walk.getObjectReader(), notesCommit);
      }
      map.set(id, null, inserter);
      commitNoteMap(walk, map, notesCommit, inserter,
          "Notes removed by 'git notes remove'");
View Full Code Here

        name = line.substring(tab + 1);
        id = ObjectId.fromString(line.substring(0, tab));
        if (name.endsWith("^{}")) { //$NON-NLS-1$
          name = name.substring(0, name.length() - 3);
          final Ref prior = avail.get(name);
          if (prior == null)
            throw outOfOrderAdvertisement(name);

          if (prior.getPeeledObjectId() != null)
            throw duplicateAdvertisement(name + "^{}"); //$NON-NLS-1$

          avail.put(name, new ObjectIdRef.PeeledTag(
              Ref.Storage.NETWORK, name,
              prior.getObjectId(), id));
        } else {
          Ref prior = avail.put(name, new ObjectIdRef.PeeledNonTag(
              Ref.Storage.NETWORK, name, id));
          if (prior != null)
            throw duplicateAdvertisement(name);
        }
      }
View Full Code Here

                  mergeStrategy.getName(),
                  Integer.valueOf(commits.size())));

    RevWalk revWalk = null;
    try {
      Ref head = repo.getRef(Constants.HEAD);
      if (head == null)
        throw new NoHeadException(
            JGitText.get().commitOnRepoWithoutHEADCurrentlyNotSupported);
      StringBuilder refLogMessage = new StringBuilder("merge ");

      // Check for FAST_FORWARD, ALREADY_UP_TO_DATE
      revWalk = new RevWalk(repo);

      // we know for now there is only one commit
      Ref ref = commits.get(0);

      refLogMessage.append(ref.getName());

      // handle annotated tags
      ObjectId objectId = ref.getPeeledObjectId();
      if (objectId == null)
        objectId = ref.getObjectId();

      RevCommit srcCommit = revWalk.lookupCommit(objectId);

      ObjectId headId = head.getObjectId();
      if (headId == null) {
        revWalk.parseHeaders(srcCommit);
        DirCacheCheckout dco = new DirCacheCheckout(repo,
            repo.lockDirCache(), srcCommit.getTree());
        dco.setFailOnConflict(true);
        dco.checkout();
        RefUpdate refUpdate = repo
            .updateRef(head.getTarget().getName());
        refUpdate.setNewObjectId(objectId);
        refUpdate.setExpectedOldObjectId(null);
        refUpdate.setRefLogMessage("initial pull", false);
        if (refUpdate.update() != Result.NEW)
          throw new NoHeadException(
              JGitText.get().commitOnRepoWithoutHEADCurrentlyNotSupported);
        setCallable(false);
        return new MergeResult(srcCommit, srcCommit, new ObjectId[] {
            null, srcCommit }, MergeStatus.FAST_FORWARD,
            mergeStrategy, null, null);
      }

      RevCommit headCommit = revWalk.lookupCommit(headId);

      if (revWalk.isMergedInto(srcCommit, headCommit)) {
        setCallable(false);
        return new MergeResult(headCommit, srcCommit, new ObjectId[] {
            headCommit, srcCommit },
            MergeStatus.ALREADY_UP_TO_DATE, mergeStrategy, null, null);
      } else if (revWalk.isMergedInto(headCommit, srcCommit)) {
        // FAST_FORWARD detected: skip doing a real merge but only
        // update HEAD
        refLogMessage.append(": " + MergeStatus.FAST_FORWARD);
        DirCacheCheckout dco = new DirCacheCheckout(repo,
            headCommit.getTree(), repo.lockDirCache(),
            srcCommit.getTree());
        dco.setFailOnConflict(true);
        dco.checkout();

        updateHead(refLogMessage, srcCommit, headId);
        setCallable(false);
        return new MergeResult(srcCommit, srcCommit, new ObjectId[] {
            headCommit, srcCommit }, MergeStatus.FAST_FORWARD,
            mergeStrategy, null, null);
      } else {

        String mergeMessage = new MergeMessageFormatter().format(
            commits, head);
        repo.writeMergeCommitMsg(mergeMessage);
        repo.writeMergeHeads(Arrays.asList(ref.getObjectId()));
        ThreeWayMerger merger = (ThreeWayMerger) mergeStrategy
            .newMerger(repo);
        boolean noProblems;
        Map<String, org.eclipse.jgit.merge.MergeResult<?>> lowLevelResults = null;
        Map<String, MergeFailureReason> failingPaths = null;
        List<String> unmergedPaths = null;
        if (merger instanceof ResolveMerger) {
          ResolveMerger resolveMerger = (ResolveMerger) merger;
          resolveMerger.setCommitNames(new String[] {
              "BASE", "HEAD", ref.getName() });
          resolveMerger.setWorkingTreeIterator(new FileTreeIterator(repo));
          noProblems = merger.merge(headCommit, srcCommit);
          lowLevelResults = resolveMerger
              .getMergeResults();
          failingPaths = resolveMerger.getFailingPaths();
View Full Code Here

    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;

      // loop through all refs to be cherry-picked
      for (Ref src : commits) {
View Full Code Here

        if (upstreamMode != null)
          command.setUpstreamMode(upstreamMode);
        command.call();
      }

      Ref headRef = repo.getRef(Constants.HEAD);
      String refLogMessage = "checkout: moving from "
          + headRef.getTarget().getName();
      ObjectId branch = repo.resolve(name);
      if (branch == null)
        throw new RefNotFoundException(MessageFormat.format(JGitText
            .get().refNotResolved, name));

      RevWalk revWalk = new RevWalk(repo);
      AnyObjectId headId = headRef.getObjectId();
      RevCommit headCommit = headId == null ? null : revWalk
          .parseCommit(headId);
      RevCommit newCommit = revWalk.parseCommit(branch);
      RevTree headTree = headCommit == null ? null : headCommit.getTree();
      DirCacheCheckout dco = new DirCacheCheckout(repo, headTree,
          repo.lockDirCache(), newCommit.getTree());
      dco.setFailOnConflict(true);
      try {
        dco.checkout();
      } catch (CheckoutConflictException e) {
        status = new CheckoutResult(Status.CONFLICTS, dco
            .getConflicts());
        throw e;
      }
      Ref ref = repo.getRef(name);
      if (ref != null && !ref.getName().startsWith(Constants.R_HEADS))
        ref = null;
      RefUpdate refUpdate = repo.updateRef(Constants.HEAD, ref == null);
      refUpdate.setForceUpdate(force);
      refUpdate.setRefLogMessage(refLogMessage + " to "
          + newCommit.getName(), false);
      Result updateResult;
      if (ref != null)
        updateResult = refUpdate.link(ref.getName());
      else {
        refUpdate.setNewObjectId(newCommit);
        updateResult = refUpdate.forceUpdate();
      }
View Full Code Here

      if (line == null)
        throw new TransportException("Empty ref: " + name);

      if (line.startsWith("ref: ")) {
        final String target = line.substring("ref: ".length());
        Ref r = avail.get(target);
        if (r == null)
          r = readRef(avail, ROOT_DIR + target, target);
        if (r == null)
          r = new ObjectIdRef.Unpeeled(Ref.Storage.NEW, target, null);
        r = new SymbolicRef(name, r);
        avail.put(r.getName(), r);
        return r;
      }

      if (ObjectId.isId(line)) {
        final Ref r = new ObjectIdRef.Unpeeled(loose(avail.get(name)),
            name, ObjectId.fromString(line));
        avail.put(r.getName(), r);
        return r;
      }

      throw new TransportException("Bad ref: " + name + ": " + line);
    }
View Full Code Here

   * @return the Ref after reset
   */
  public Ref call() throws IOException {
    checkCallable();

    Ref r;
    RevCommit commit;

    try {
      RepositoryState state = repo.getRepositoryState();
      final boolean merging = state.equals(RepositoryState.MERGING)
View Full Code Here

        br = toBufferedReader(openInputStream(conn));
        try {
          String line = br.readLine();
          if (line != null && line.startsWith(RefDirectory.SYMREF)) {
            String target = line.substring(RefDirectory.SYMREF.length());
            Ref r = refs.get(target);
            if (r == null)
              r = new ObjectIdRef.Unpeeled(Ref.Storage.NEW, target, null);
            r = new SymbolicRef(Constants.HEAD, r);
            refs.put(r.getName(), r);
          } else if (line != null && ObjectId.isId(line)) {
            Ref r = new ObjectIdRef.Unpeeled(Ref.Storage.NETWORK,
                Constants.HEAD, ObjectId.fromString(line));
            refs.put(r.getName(), r);
          }
        } finally {
          br.close();
        }
        break;
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.lib.Ref

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.