Search in sources :

Example 31 with RepositoryCommit

use of org.eclipse.egit.ui.internal.commit.RepositoryCommit in project egit by eclipse.

the class OpenInCommitViewerHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    Repository repository = getRepository(event);
    RevCommit commit = getSelectedCommit(event, repository);
    if (commit != null)
        CommitEditor.openQuiet((new RepositoryCommit(repository, commit)));
    return null;
}
Also used : Repository(org.eclipse.jgit.lib.Repository) RepositoryCommit(org.eclipse.egit.ui.internal.commit.RepositoryCommit) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 32 with RepositoryCommit

use of org.eclipse.egit.ui.internal.commit.RepositoryCommit in project egit by eclipse.

the class StashesMenu method createStashItem.

private static ActionContributionItem createStashItem(final Repository repo, final RevCommit stashCommit, int index) {
    String text = MessageFormat.format(UIText.StashesMenu_StashItemText, Integer.valueOf(index), stashCommit.getShortMessage());
    Action action = new Action(text) {

        @Override
        public void run() {
            RepositoryCommit repositoryCommit = new RepositoryCommit(repo, stashCommit);
            repositoryCommit.setStash(true);
            CommitEditor.openQuiet(repositoryCommit);
        }
    };
    return new ActionContributionItem(action);
}
Also used : Action(org.eclipse.jface.action.Action) ActionContributionItem(org.eclipse.jface.action.ActionContributionItem) RepositoryCommit(org.eclipse.egit.ui.internal.commit.RepositoryCommit)

Example 33 with RepositoryCommit

use of org.eclipse.egit.ui.internal.commit.RepositoryCommit in project egit by eclipse.

the class CommitSearchQuery method walkRepository.

private void walkRepository(Repository repository, Pattern pattern, IProgressMonitor monitor) throws IOException {
    try (RevWalk walk = new RevWalk(repository)) {
        walk.setRetainBody(true);
        List<RevCommit> commits = new LinkedList<>();
        if (this.settings.isAllBranches()) {
            for (Ref ref : repository.getRefDatabase().getRefs(Constants.R_HEADS).values()) if (!ref.isSymbolic())
                commits.add(walk.parseCommit(ref.getObjectId()));
            for (Ref ref : repository.getRefDatabase().getRefs(Constants.R_REMOTES).values()) if (!ref.isSymbolic())
                commits.add(walk.parseCommit(ref.getObjectId()));
        } else {
            ObjectId headCommit = repository.resolve(Constants.HEAD);
            if (headCommit != null)
                commits.add(walk.parseCommit(headCommit));
        }
        if (!commits.isEmpty()) {
            walk.markStart(commits);
            for (RevCommit commit : walk) {
                if (monitor.isCanceled())
                    throw new OperationCanceledException();
                for (SearchMatcher matcher : this.matchers) if (matcher.matches(pattern, commit)) {
                    result.addResult(new RepositoryCommit(repository, commit));
                    break;
                }
            }
        }
    }
}
Also used : Ref(org.eclipse.jgit.lib.Ref) ObjectId(org.eclipse.jgit.lib.ObjectId) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) RevWalk(org.eclipse.jgit.revwalk.RevWalk) RepositoryCommit(org.eclipse.egit.ui.internal.commit.RepositoryCommit) LinkedList(java.util.LinkedList) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 34 with RepositoryCommit

use of org.eclipse.egit.ui.internal.commit.RepositoryCommit in project egit by eclipse.

the class CommitSearchResultsPage method configureViewer.

private void configureViewer(StructuredViewer viewer) {
    viewer.setComparator(new CommitSorter());
    viewer.setContentProvider(new WorkbenchContentProvider() {

        @Override
        public Object[] getElements(Object element) {
            if (getLayout() == FLAG_LAYOUT_TREE) {
                Map<Repository, RepositoryMatch> repos = new HashMap<>();
                for (Object inputElement : getInput().getElements()) {
                    RepositoryCommit commit = (RepositoryCommit) inputElement;
                    RepositoryMatch match = repos.get(commit.getRepository());
                    if (match == null) {
                        match = new RepositoryMatch(commit.getRepository());
                        repos.put(commit.getRepository(), match);
                    }
                    match.addCommit(commit);
                }
                return repos.values().toArray();
            }
            return super.getElements(element);
        }
    });
    viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new CommitResultLabelProvider(getLayout())));
}
Also used : WorkbenchContentProvider(org.eclipse.ui.model.WorkbenchContentProvider) DelegatingStyledCellLabelProvider(org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider) HashMap(java.util.HashMap) Map(java.util.Map) RepositoryCommit(org.eclipse.egit.ui.internal.commit.RepositoryCommit)

Aggregations

RepositoryCommit (org.eclipse.egit.ui.internal.commit.RepositoryCommit)34 RevCommit (org.eclipse.jgit.revwalk.RevCommit)15 Repository (org.eclipse.jgit.lib.Repository)13 Test (org.junit.Test)10 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)7 IOException (java.io.IOException)6 ExecutionException (org.eclipse.core.commands.ExecutionException)6 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)6 ArrayList (java.util.ArrayList)5 ObjectId (org.eclipse.jgit.lib.ObjectId)5 UIText (org.eclipse.egit.ui.internal.UIText)4 RevWalk (org.eclipse.jgit.revwalk.RevWalk)4 IEditorPart (org.eclipse.ui.IEditorPart)4 CommitEditorInput (org.eclipse.egit.ui.internal.commit.CommitEditorInput)3 PartInitException (org.eclipse.ui.PartInitException)3 Map (java.util.Map)2 AtomicReference (java.util.concurrent.atomic.AtomicReference)2 IResource (org.eclipse.core.resources.IResource)2 CoreException (org.eclipse.core.runtime.CoreException)2 IAdaptable (org.eclipse.core.runtime.IAdaptable)2