List of usage examples for org.eclipse.jgit.lib AnyObjectId equals
@Override public final boolean equals(Object o)
From source file:org.eclipse.egit.ui.internal.history.GitHistoryPage.java
License:Open Source License
void initAndStartRevWalk(boolean forceNewWalk) throws IllegalStateException { try {// w w w . j a v a 2s .com if (trace) GitTraceLocation.getTrace().traceEntry(GitTraceLocation.HISTORYVIEW.getLocation()); cancelRefreshJob(); Repository db = input.getRepository(); AnyObjectId headId; try { headId = db.resolve(Constants.HEAD); } catch (IOException e) { throw new IllegalStateException(NLS.bind(UIText.GitHistoryPage_errorParsingHead, Activator.getDefault().getRepositoryUtil().getRepositoryName(db))); } if (headId == null) throw new IllegalStateException(NLS.bind(UIText.GitHistoryPage_errorParsingHead, Activator.getDefault().getRepositoryUtil().getRepositoryName(db))); List<String> paths = buildFilterPaths(input.getItems(), input.getFileList(), db); if (forceNewWalk || pathChange(pathFilters, paths) || currentWalk == null || !headId.equals(currentHeadId)) { // TODO Do not dispose SWTWalk just because HEAD changed // In theory we should be able to update the graph and // not dispose of the SWTWalk, even if HEAD was reset to // HEAD^1 and the old HEAD commit should not be visible. // currentHeadId = headId; if (currentWalk != null) currentWalk.release(); currentWalk = new SWTWalk(db); currentWalk.sort(RevSort.COMMIT_TIME_DESC, true); currentWalk.sort(RevSort.BOUNDARY, true); highlightFlag = currentWalk.newFlag("highlight"); //$NON-NLS-1$ } else { currentWalk.reset(); } try { if (store.getBoolean(UIPreferences.RESOURCEHISTORY_SHOW_ALL_BRANCHES)) { markStartAllRefs(Constants.R_HEADS); markStartAllRefs(Constants.R_REMOTES); } else currentWalk.markStart(currentWalk.parseCommit(headId)); } catch (IOException e) { throw new IllegalStateException(NLS.bind(UIText.GitHistoryPage_errorReadingHeadCommit, headId, db.getDirectory().getAbsolutePath()), e); } final TreeWalk fileWalker = new TreeWalk(db); fileWalker.setRecursive(true); if (paths.size() > 0) { pathFilters = paths; currentWalk.setTreeFilter( AndTreeFilter.create(PathFilterGroup.createFromStrings(paths), TreeFilter.ANY_DIFF)); fileWalker.setFilter(currentWalk.getTreeFilter().clone()); } else { pathFilters = null; currentWalk.setTreeFilter(TreeFilter.ALL); fileWalker.setFilter(TreeFilter.ANY_DIFF); } fileViewer.setTreeWalk(db, fileWalker); fileViewer.refresh(); fileViewer.addSelectionChangedListener(commentViewer); commentViewer.setTreeWalk(fileWalker); commentViewer.setDb(db); commentViewer.refresh(); final SWTCommitList list; list = new SWTCommitList(graph.getControl().getDisplay()); list.source(currentWalk); final GenerateHistoryJob rj = new GenerateHistoryJob(this, list); rj.addJobChangeListener(new JobChangeAdapter() { @Override public void done(final IJobChangeEvent event) { final Control graphctl = graph.getControl(); if (job != rj || graphctl.isDisposed()) return; graphctl.getDisplay().asyncExec(new Runnable() { public void run() { if (job == rj) job = null; } }); } }); job = rj; if (trace) GitTraceLocation.getTrace().trace(GitTraceLocation.HISTORYVIEW.getLocation(), "Scheduling GenerateHistoryJob"); //$NON-NLS-1$ schedule(rj); } finally { if (trace) GitTraceLocation.getTrace().traceExit(GitTraceLocation.HISTORYVIEW.getLocation()); } }
From source file:org.eclipse.egit.ui.internal.synchronize.mapping.GitTreeTraversal.java
License:Open Source License
private static IResource[] getResourcesImpl(Repository repo, AnyObjectId baseId, AnyObjectId remoteId, IPath path) {// w w w . ja va2s . com if (remoteId.equals(zeroId())) return new IResource[0]; TreeWalk tw = new TreeWalk(repo); List<IResource> result = new ArrayList<IResource>(); IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); tw.reset(); tw.setRecursive(false); tw.setFilter(TreeFilter.ANY_DIFF); try { tw.addTree(new FileTreeIterator(repo)); if (!baseId.equals(zeroId())) tw.addTree(baseId); int actualNth = tw.addTree(remoteId); while (tw.next()) { int objectType = tw.getFileMode(actualNth).getObjectType(); IPath childPath = path.append(tw.getNameString()); IResource resource = null; if (objectType == Constants.OBJ_BLOB) resource = root.getFileForLocation(childPath); else if (objectType == Constants.OBJ_TREE) resource = root.getContainerForLocation(childPath); if (resource != null) result.add(resource); } } catch (IOException e) { Activator.logError(e.getMessage(), e); } return result.toArray(new IResource[result.size()]); }