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

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

Introduction

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

Prototype

public boolean diff() throws IOException 

Source Link

Document

Run the diff operation.

Usage

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

License:Open Source License

public boolean isDirty(boolean ignoreUntracked) throws GitRepositoryException {
    try {/*from   ww w . ja va  2s . c o  m*/
        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  w  w w .j a  v a  2s  .  c  o  m
        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 {//w  w  w . j a v a2  s . co 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  w  w  .j  av a  2s .  c  om

        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 {/*from w ww  .j  a  v a2 s.co  m*/
        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;//  w w  w  .j a  v  a  2s. com

    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. j  a v  a 2s .  co  m
        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.ui.internal.actions.CommitAction.java

License:Open Source License

private void buildIndexHeadDiffList() throws IOException, CoreException {
    HashMap<Repository, HashSet<IProject>> repositories = new HashMap<Repository, HashSet<IProject>>();

    for (IProject project : getProjectsInRepositoryOfSelectedResources()) {
        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);
        }//from w  w  w. ja  v a 2s . c  o m

        projects.add(project);
    }

    for (Map.Entry<Repository, HashSet<IProject>> entry : repositories.entrySet()) {
        Repository repository = entry.getKey();
        HashSet<IProject> projects = entry.getValue();

        Tree head = repository.mapTree(Constants.HEAD);
        GitIndex index = repository.getIndex();
        IndexDiff indexDiff = new IndexDiff(head, index);
        indexDiff.diff();

        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);
            addUntrackedFiles(repository, project);
        }
    }
}

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);
        }/*from   w w w.ja v  a 2s  .  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();
}

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

License:Open Source License

private boolean isStaged(Repository repository, IPath location) {
    String resRelPath = RepositoryMapping.getMapping(location).getRepoRelativePath(location);

    // This action at the moment only works for files anyway
    if (resRelPath == null || resRelPath.length() == 0) {
        return false;
    }//  www  .  ja  v  a  2  s.c o m

    try {
        FileTreeIterator fileTreeIterator = new FileTreeIterator(repository);
        IndexDiff indexDiff = new IndexDiff(repository, Constants.HEAD, fileTreeIterator);
        indexDiff.setFilter(PathFilterGroup.createFromStrings(Collections.singletonList(resRelPath)));
        indexDiff.diff();

        return indexDiff.getAdded().contains(resRelPath) || indexDiff.getChanged().contains(resRelPath)
                || indexDiff.getRemoved().contains(resRelPath);
    } catch (IOException e) {
        Activator.error(NLS.bind(UIText.GitHistoryPage_errorLookingUpPath, location.toString()), e);
        return false;
    }
}