Example usage for org.eclipse.jgit.lib IndexDiff IndexDiff

List of usage examples for org.eclipse.jgit.lib IndexDiff IndexDiff

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib IndexDiff IndexDiff.

Prototype

public IndexDiff(Repository repository, ObjectId objectId, WorkingTreeIterator workingTreeIterator)
        throws IOException 

Source Link

Document

Construct an Indexdiff

Usage

From source file:com.github.koraktor.mavanagaiata.git.jgit.JGitRepository.java

License:Open Source License

public boolean isDirty(boolean ignoreUntracked) throws GitRepositoryException {
    try {/*  w w w . j  a  va 2  s.  com*/
        FileTreeIterator workTreeIterator = new FileTreeIterator(this.repository);
        IndexDiff indexDiff = new IndexDiff(this.repository, this.getHeadObject(), workTreeIterator);
        indexDiff.diff();

        if (!ignoreUntracked && !indexDiff.getUntracked().isEmpty()) {
            return true;
        }

        return !(indexDiff.getAdded().isEmpty() && indexDiff.getChanged().isEmpty()
                && indexDiff.getRemoved().isEmpty() && indexDiff.getMissing().isEmpty()
                && indexDiff.getModified().isEmpty() && indexDiff.getConflicting().isEmpty());

    } catch (IOException e) {
        throw new GitRepositoryException("Could not create repository diff.", e);
    }
}

From source file:com.rimerosolutions.ant.git.tasks.UpToDateTask.java

License:Apache License

@Override
protected void doExecute() throws BuildException {
    Repository repo = git.getRepository();

    FileTreeIterator workingTreeIterator = new FileTreeIterator(repo);

    try {/*from   ww w .  j  ava  2  s  .  com*/
        IndexDiff diff = new IndexDiff(repo, Constants.HEAD, workingTreeIterator);
        diff.diff();

        Status status = new Status(diff);

        if (!status.isClean()) {
            if (modificationExistProperty != null) {
                getProject().setProperty(modificationExistProperty, "true");
            }

            if (isFailOnError()) {
                StringBuilder msg = new StringBuilder();
                msg.append("The Git tree was modified.");
                msg.append("\n").append("Changed:").append(status.getChanged());
                msg.append("\n").append("Added:").append(status.getAdded());
                msg.append("\n").append("Modified:").append(status.getModified());
                msg.append("\n").append("Missing:").append(status.getMissing());
                msg.append("\n").append("Removed:").append(status.getRemoved());
                msg.append("\n").append("Untracked:").append(status.getUntracked());

                throw new GitBuildException(String.format(STATUS_NOT_CLEAN_TEMPLATE, msg.toString()));
            }
        } else {
            log(MESSAGE_UPTODATE_SUCCESS);
        }
    } catch (IOException ioe) {
        throw new GitBuildException(MESSAGE_UPTODATE_FAILED, ioe);
    }

}

From source file:com.stormcloud.ide.api.git.GitManager.java

License:Open Source License

@Override
public IndexState getIndexState(String repository) throws GitManagerException {

    IndexState indexState = new IndexState();

    try {//from w ww .  j  av  a  2s .c  o  m

        Git git = Git.open(new File(repository));

        IndexDiff diff = new IndexDiff(git.getRepository(), "HEAD", new FileTreeIterator(git.getRepository()));

        diff.diff();

        indexState.setAdded(diff.getAdded());
        indexState.setAssumeUnchanged(diff.getAssumeUnchanged());
        indexState.setChanged(diff.getChanged());
        indexState.setConflicting(diff.getConflicting());
        indexState.setIgnoredNotInIndex(diff.getIgnoredNotInIndex());
        indexState.setMissing(diff.getMissing());
        indexState.setModified(diff.getModified());
        indexState.setRemoved(diff.getRemoved());
        indexState.setUntracked(diff.getUntracked());
        indexState.setUntrackedFolders(diff.getUntrackedFolders());

    } catch (IOException e) {
        LOG.error(e);
        throw new GitManagerException(e);
    }

    return indexState;
}

From source file:com.stormcloud.ide.api.git.GitManager.java

License:Open Source License

@Override
public boolean isModified(String repository) throws GitManagerException {

    try {/*from   w  ww.j  a  v  a2 s .c o m*/

        Git git = Git.open(new File(repository));

        IndexDiff diff = new IndexDiff(git.getRepository(), "HEAD", new FileTreeIterator(git.getRepository()));

        diff.diff();

        if (!diff.getAdded().isEmpty()) {
            return true;
        }

        if (!diff.getChanged().isEmpty()) {
            return true;
        }

        if (!diff.getMissing().isEmpty()) {
            return true;
        }

        if (!diff.getModified().isEmpty()) {
            return true;
        }

        if (!diff.getRemoved().isEmpty()) {
            return true;
        }

        if (!diff.getUntracked().isEmpty()) {
            return true;
        }

        if (!diff.getUntrackedFolders().isEmpty()) {
            return true;
        }

    } catch (IOException e) {
        LOG.error(e);
        throw new GitManagerException(e);
    }

    return false;
}

From source file:com.stormcloud.ide.api.git.GitManager.java

License:Open Source License

@Override
public void log(String repo) throws GitManagerException {

    try {/*w w  w .j  ava2s.  c om*/
        File gitDir = new File(repo + "/.git");
        LOG.info("gitDir:" + gitDir);
        Repository repository = new FileRepository(gitDir);

        WorkingTreeIterator fileTreeIterator = new FileTreeIterator(repository);

        IndexDiff indexDiff = new IndexDiff(repository, Constants.HEAD, fileTreeIterator);

        boolean hasDiff = indexDiff.diff();

        LOG.info("hasDiff " + hasDiff);

        if (hasDiff) {

            for (String file : indexDiff.getAdded()) {
                LOG.info("Added " + file);
            }

            for (String file : indexDiff.getAssumeUnchanged()) {
                LOG.info("Assume Unchanged " + file);
            }

            for (String file : indexDiff.getChanged()) {
                LOG.info("Changed " + file);
            }

            for (String file : indexDiff.getConflicting()) {
                LOG.info("Conflicting " + file);
            }

            for (String file : indexDiff.getIgnoredNotInIndex()) {
                LOG.info("Ignored not in index " + file);
            }

            for (String file : indexDiff.getMissing()) {
                LOG.info("Missing " + file);
            }

            for (String file : indexDiff.getModified()) {
                LOG.info("Modified " + file);
            }

            for (String file : indexDiff.getRemoved()) {
                LOG.info("Removed " + file);
            }

            for (String file : indexDiff.getUntracked()) {
                LOG.info("Untracked " + file);
            }

            for (String file : indexDiff.getUntrackedFolders()) {
                LOG.info("Untracked Folders " + file);
            }
        }

    } catch (IOException e) {
        LOG.error(e);
        throw new GitManagerException(e);
    }

}

From source file:com.stormcloud.ide.api.git.GitManager.java

License:Open Source License

@Override
public String getStatus(String file, String userHome) throws GitManagerException {

    String tmpRelativePath = new File(file).getAbsolutePath().replaceFirst(userHome + "/projects", "")
            .replaceFirst("/", "");

    String project;/*from w  w  w.j a  v a 2s  .  c  om*/

    if (tmpRelativePath.contains("/")) {

        project = tmpRelativePath.substring(0, tmpRelativePath.indexOf('/'));

    } else {

        project = tmpRelativePath;
    }

    String repository = userHome + "/projects/" + project;
    String relativePath = tmpRelativePath.replaceFirst(project, "").replaceFirst("/", "");

    String status = "unmodified";

    try {

        Git git = Git.open(new File(repository));

        IndexDiff diff = new IndexDiff(git.getRepository(), "HEAD", new FileTreeIterator(git.getRepository()));

        diff.setFilter(PathFilterGroup.createFromStrings(relativePath));

        diff.diff();

        if (!diff.getModified().isEmpty() || !diff.getChanged().isEmpty()) {
            return "modified";
        }

        if (!diff.getMissing().isEmpty() || !diff.getRemoved().isEmpty()) {
            return "missing";
        }

        if (!diff.getUntracked().isEmpty() || !diff.getUntrackedFolders().isEmpty()
                || !diff.getAdded().isEmpty()) {

            return "untracked";
        }

        if (!diff.getConflicting().isEmpty()) {
            return "conflict";
        }

        return status;

    } catch (IOException e) {
        LOG.error(e);
        throw new GitManagerException(e);
    }
}

From source file:jetbrains.buildServer.buildTriggers.vcs.git.agent.command.impl.CleanCommandImpl.java

License:Apache License

@NotNull
private WorkingDirStatus getWorkingDirStatus(@NotNull Repository repo) {
    FileTreeIterator workingTreeIt = new FileTreeIterator(repo);
    try {//from w w w . ja  v  a  2 s . c  om
        IndexDiff diff = new IndexDiff(repo, Constants.HEAD, workingTreeIt);
        diff.diff();
        return new WorkingDirStatus(diff);
    } catch (IOException e) {
        throw new JGitInternalException(e.getMessage(), e);
    }
}

From source file:org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.java

License:Open Source License

private IndexDiffData calcIndexDiffDataIncremental(IProgressMonitor monitor, String jobName,
        Collection<String> filesToUpdate, Collection<IResource> resourcesToUpdate) throws IOException {
    if (indexDiffData == null)
        // Incremental update not possible without prior indexDiffData
        // -> do full refresh instead
        return calcIndexDiffDataFull(monitor, jobName);

    EclipseGitProgressTransformer jgitMonitor = new EclipseGitProgressTransformer(monitor);

    List<String> treeFilterPaths = calcTreeFilterPaths(filesToUpdate);

    WorkingTreeIterator iterator = IteratorService.createInitialIterator(repository);
    if (iterator == null)
        return null; // workspace is closed
    IndexDiff diffForChangedResources = new IndexDiff(repository, Constants.HEAD, iterator);
    diffForChangedResources.setFilter(PathFilterGroup.createFromStrings(treeFilterPaths));
    diffForChangedResources.diff(jgitMonitor, 0, 0, jobName);
    return new IndexDiffData(indexDiffData, filesToUpdate, resourcesToUpdate, diffForChangedResources);
}

From source file:org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.java

License:Open Source License

private IndexDiffData calcIndexDiffDataFull(IProgressMonitor monitor, String jobName) throws IOException {
    EclipseGitProgressTransformer jgitMonitor = new EclipseGitProgressTransformer(monitor);

    IndexDiff newIndexDiff;//  w  w  w .  j  a  v a  2s  . com
    WorkingTreeIterator iterator = IteratorService.createInitialIterator(repository);
    if (iterator == null)
        return null; // workspace is closed
    newIndexDiff = new IndexDiff(repository, Constants.HEAD, iterator);
    newIndexDiff.diff(jgitMonitor, 0, 0, jobName);
    return new IndexDiffData(newIndexDiff);
}

From source file:org.eclipse.egit.ui.internal.actions.CommitActionHandler.java

License:Open Source License

private void buildIndexHeadDiffList(IProject[] selectedProjects, IProgressMonitor monitor)
        throws IOException, OperationCanceledException {
    HashMap<Repository, HashSet<IProject>> repositories = new HashMap<Repository, HashSet<IProject>>();

    for (IProject project : selectedProjects) {
        RepositoryMapping repositoryMapping = RepositoryMapping.getMapping(project);
        assert repositoryMapping != null;

        Repository repository = repositoryMapping.getRepository();

        HashSet<IProject> projects = repositories.get(repository);

        if (projects == null) {
            projects = new HashSet<IProject>();
            repositories.put(repository, projects);
        }/*  w ww  .j  a  v a2 s. c  o m*/

        projects.add(project);
    }

    monitor.beginTask(UIText.CommitActionHandler_caculatingChanges, repositories.size());
    for (Map.Entry<Repository, HashSet<IProject>> entry : repositories.entrySet()) {
        Repository repository = entry.getKey();
        monitor.subTask(NLS.bind(UIText.CommitActionHandler_repository, repository.getDirectory().getPath()));
        HashSet<IProject> projects = entry.getValue();

        IndexDiff indexDiff = new IndexDiff(repository, Constants.HEAD,
                IteratorService.createInitialIterator(repository));
        indexDiff.diff();
        indexDiffs.put(repository, indexDiff);

        for (IProject project : projects) {
            includeList(project, indexDiff.getAdded(), indexChanges);
            includeList(project, indexDiff.getChanged(), indexChanges);
            includeList(project, indexDiff.getRemoved(), indexChanges);
            includeList(project, indexDiff.getMissing(), notIndexed);
            includeList(project, indexDiff.getModified(), notIndexed);
            includeList(project, indexDiff.getUntracked(), notTracked);
        }
        if (monitor.isCanceled())
            throw new OperationCanceledException();
        monitor.worked(1);
    }
    monitor.done();
}