Examples of IDiffContainer


Examples of org.eclipse.compare.structuremergeviewer.IDiffContainer

      RevCommit compareCommit, IProgressMonitor monitor)
      throws IOException, InterruptedException {
    boolean useIndex = compareVersion.equals(CompareTreeView.INDEX_VERSION);
    boolean checkIgnored = false;

    IDiffContainer result = new DiffNode(Differencer.CONFLICTING);

    TreeWalk tw = new TreeWalk(repository);

    // filter by selected resources
    if (filterPathStrings.size() > 1) {
View Full Code Here

Examples of org.eclipse.compare.structuremergeviewer.IDiffContainer

      return false;
    return true;
  }

  private void add(IDiffContainer result, String filePath, DiffNode diffNode) {
    IDiffContainer container = getFileParent(result, filePath);
    container.add(diffNode);
    diffNode.setParent(container);

  }
View Full Code Here

Examples of org.eclipse.compare.structuremergeviewer.IDiffContainer

  }

  private IDiffContainer getFileParent(IDiffContainer root, String filePath) {
    IPath path = new Path(filePath);
    IDiffContainer child = root;
    if (diffRoots.isEmpty()) {
      for (int i = 0; i < path.segmentCount() - 1; i++)
        child = getOrCreateChild(child, path.segment(i));
      return child;
    } else {
View Full Code Here

Examples of org.eclipse.compare.structuremergeviewer.IDiffContainer

      RevCommit headCommit,
      RevCommit ancestorCommit, List<String> filterPaths, RevWalk rw,
      IProgressMonitor monitor) throws IOException, InterruptedException {

    monitor.setTaskName(UIText.GitMergeEditorInput_CalculatingDiffTaskName);
    IDiffContainer result = new DiffNode(Differencer.CONFLICTING);

    TreeWalk tw = new TreeWalk(repository);
    try {
      int dirCacheIndex = tw.addTree(new DirCacheIterator(repository
          .readDirCache()));
      int fileTreeIndex = tw.addTree(new FileTreeIterator(repository));
      int repositoryTreeIndex = tw.addTree(rw.parseTree(repository
          .resolve(Constants.HEAD)));

      // skip ignored resources
      NotIgnoredFilter notIgnoredFilter = new NotIgnoredFilter(
          fileTreeIndex);
      // filter by selected resources
      if (filterPaths.size() > 1) {
        List<TreeFilter> suffixFilters = new ArrayList<TreeFilter>();
        for (String filterPath : filterPaths)
          suffixFilters.add(PathFilter.create(filterPath));
        TreeFilter otf = OrTreeFilter.create(suffixFilters);
        tw.setFilter(AndTreeFilter.create(otf, notIgnoredFilter));
      } else if (filterPaths.size() > 0) {
        String path = filterPaths.get(0);
        if (path.length() == 0)
          tw.setFilter(notIgnoredFilter);
        else
          tw.setFilter(AndTreeFilter.create(PathFilter.create(path),
              notIgnoredFilter));
      } else
        tw.setFilter(notIgnoredFilter);

      tw.setRecursive(true);

      while (tw.next()) {
        if (monitor.isCanceled())
          throw new InterruptedException();
        String gitPath = tw.getPathString();
        monitor.setTaskName(gitPath);

        FileTreeIterator fit = tw.getTree(fileTreeIndex,
            FileTreeIterator.class);
        if (fit == null)
          continue;

        DirCacheIterator dit = tw.getTree(dirCacheIndex,
            DirCacheIterator.class);

        final DirCacheEntry dirCacheEntry = dit == null ? null : dit
            .getDirCacheEntry();

        boolean conflicting = dirCacheEntry != null
            && dirCacheEntry.getStage() > 0;

        AbstractTreeIterator rt = tw.getTree(repositoryTreeIndex,
            AbstractTreeIterator.class);

        // compare local file against HEAD to see if it was modified
        boolean modified = rt != null
            && !fit.getEntryObjectId()
                .equals(rt.getEntryObjectId());

        // if this is neither conflicting nor changed, we skip it
        if (!conflicting && !modified)
          continue;

        ITypedElement right;
        if (conflicting) {
          GitFileRevision revision = GitFileRevision.inIndex(
              repository, gitPath, DirCacheEntry.STAGE_3);
          String encoding = CompareCoreUtils.getResourceEncoding(
              repository, gitPath);
          right = new FileRevisionTypedElement(revision, encoding);
        } else
          right = CompareUtils.getFileRevisionTypedElement(gitPath,
              headCommit, repository);

        // can this really happen?
        if (right instanceof EmptyTypedElement)
          continue;

        IFileRevision rev;
        // if the file is not conflicting (as it was auto-merged)
        // we will show the auto-merged (local) version

        Path repositoryPath = new Path(repository.getWorkTree()
            .getAbsolutePath());
        IPath location = repositoryPath
            .append(fit.getEntryPathString());
        IFile file = ResourceUtil.getFileForLocation(location);
        if (!conflicting || useWorkspace) {
          if (file != null)
            rev = new LocalFileRevision(file);
          else
            rev = new WorkingTreeFileRevision(location.toFile());
        } else {
          rev = GitFileRevision.inIndex(repository, gitPath,
              DirCacheEntry.STAGE_2);
        }

        IRunnableContext runnableContext = getContainer();
        if (runnableContext == null)
          runnableContext = PlatformUI.getWorkbench().getProgressService();

        EditableRevision leftEditable;
        if (file != null)
          leftEditable = new ResourceEditableRevision(rev, file,
              runnableContext);
        else
          leftEditable = new LocationEditableRevision(rev, location,
              runnableContext);
        // make sure we don't need a round trip later
        try {
          leftEditable.cacheContents(monitor);
        } catch (CoreException e) {
          throw new IOException(e.getMessage());
        }

        int kind = Differencer.NO_CHANGE;
        if (conflicting)
          kind = Differencer.CONFLICTING;
        else if (modified)
          kind = Differencer.PSEUDO_CONFLICT;

        IDiffContainer fileParent = getFileParent(result,
            repositoryPath, file, location);

        ITypedElement anc;
        if (ancestorCommit != null)
          anc = CompareUtils.getFileRevisionTypedElement(gitPath,
View Full Code Here

Examples of org.eclipse.compare.structuremergeviewer.IDiffContainer

        projectName = project.getName();
      }
    }

    IPath path = location.makeRelativeTo(repositoryPath);
    IDiffContainer child = root;
    for (int i = 0; i < path.segmentCount() - 1; i++) {
      if (i == projectSegment)
        child = getOrCreateChild(child, projectName, true);
      else
        child = getOrCreateChild(child, path.segment(i), false);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.