Search in sources :

Example 21 with ChangeBrowserSettings

use of com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings in project intellij-community by JetBrains.

the class AbstractVcsHelperImpl method showChangesBrowser.

public void showChangesBrowser(final CommittedChangesProvider provider, final RepositoryLocation location, @Nls String title, Component parent) {
    final ChangesBrowserSettingsEditor filterUI = provider.createFilterUI(true);
    ChangeBrowserSettings settings = provider.createDefaultSettings();
    boolean ok;
    if (filterUI != null) {
        final CommittedChangesFilterDialog dlg = new CommittedChangesFilterDialog(myProject, filterUI, settings);
        dlg.show();
        ok = dlg.getExitCode() == DialogWrapper.OK_EXIT_CODE;
        settings = dlg.getSettings();
    } else {
        ok = true;
    }
    if (ok) {
        if (myProject.isDefault() || (ProjectLevelVcsManager.getInstance(myProject).getAllActiveVcss().length == 0) || (!ModalityState.NON_MODAL.equals(ModalityState.current()))) {
            final List<CommittedChangeList> versions = new ArrayList<>();
            if (parent == null || !parent.isValid()) {
                parent = WindowManager.getInstance().suggestParentWindow(myProject);
            }
            final CommittedChangesTableModel model = new CommittedChangesTableModel(versions, true);
            final AsynchronousListsLoader[] task = new AsynchronousListsLoader[1];
            final ChangeBrowserSettings finalSettings = settings;
            final ChangesBrowserDialog dlg = createChangesBrowserDialog(model, title, filterUI != null, parent, new Consumer<ChangesBrowserDialog>() {

                @Override
                public void consume(ChangesBrowserDialog changesBrowserDialog) {
                    task[0] = new AsynchronousListsLoader(myProject, provider, location, finalSettings, changesBrowserDialog);
                    ProgressManager.getInstance().run(task[0]);
                }
            });
            dlg.startLoading();
            dlg.show();
            if (task[0] != null) {
                task[0].cancel();
                final List<VcsException> exceptions = task[0].getExceptions();
                if (!exceptions.isEmpty()) {
                    Messages.showErrorDialog(myProject, VcsBundle.message("browse.changes.error.message", exceptions.get(0).getMessage()), VcsBundle.message("browse.changes.error.title"));
                    return;
                }
                if (!task[0].isRevisionsReturned()) {
                    Messages.showInfoMessage(myProject, VcsBundle.message("browse.changes.nothing.found"), VcsBundle.message("browse.changes.nothing.found.title"));
                }
            }
        } else {
            openCommittedChangesTab(provider, location, settings, 0, title);
        }
    }
}
Also used : CommittedChangeList(com.intellij.openapi.vcs.versionBrowser.CommittedChangeList) ChangesBrowserSettingsEditor(com.intellij.openapi.vcs.versionBrowser.ChangesBrowserSettingsEditor) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings)

Example 22 with ChangeBrowserSettings

use of com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings in project intellij-community by JetBrains.

the class CvsCommittedChangesProvider method loadCommittedChanges.

public void loadCommittedChanges(ChangeBrowserSettings settings, RepositoryLocation location, int maxCount, final AsynchConsumer<CommittedChangeList> consumer) throws VcsException {
    try {
        final CvsRepositoryLocation cvsLocation = (CvsRepositoryLocation) location;
        final String module = cvsLocation.getModuleName();
        final CvsEnvironment connectionSettings = cvsLocation.getEnvironment();
        if (connectionSettings.isOffline()) {
            return;
        }
        final CvsChangeListsBuilder builder = new CvsChangeListsBuilder(module, connectionSettings, myProject, cvsLocation.getRootFile());
        final Date dateTo = settings.getDateBeforeFilter();
        Date dateFrom = settings.getDateAfterFilter();
        if (dateFrom == null) {
            final Calendar calendar = Calendar.getInstance();
            calendar.set(1970, Calendar.MARCH, 2);
            dateFrom = calendar.getTime();
        }
        final ChangeBrowserSettings.Filter filter = settings.createFilter();
        final Set<CvsChangeList> controlSet = new HashSet<>();
        final LoadHistoryOperation operation = new LoadHistoryOperation(connectionSettings, module, dateFrom, dateTo, wrapper -> {
            final List<RevisionWrapper> wrappers = builder.revisionWrappersFromLog(wrapper);
            if (wrappers != null) {
                for (RevisionWrapper revisionWrapper : wrappers) {
                    final CvsChangeList changeList = builder.addRevision(revisionWrapper);
                    if (controlSet.contains(changeList))
                        continue;
                    controlSet.add(changeList);
                    if (filter.accepts(changeList)) {
                        consumer.consume(changeList);
                    }
                }
            }
        });
        final CvsResult executionResult = operation.run(myProject);
        if (executionResult.isCanceled()) {
            throw new ProcessCanceledException();
        } else if (executionResult.hasErrors()) {
            throw executionResult.composeError();
        }
    } finally {
        consumer.finished();
    }
}
Also used : CvsResult(com.intellij.openapi.cvsIntegration.CvsResult) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings) CvsEnvironment(com.intellij.cvsSupport2.connections.CvsEnvironment) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException)

Example 23 with ChangeBrowserSettings

use of com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings in project intellij-community by JetBrains.

the class SvnCommittedViewTest method testCopyAndModify.

@Test
public void testCopyAndModify() throws Exception {
    final File trunk = new File(myTempDirFixture.getTempDirPath(), "trunk");
    trunk.mkdir();
    Thread.sleep(100);
    final File folder = new File(trunk, "folder");
    folder.mkdir();
    Thread.sleep(100);
    new File(folder, "f1.txt").createNewFile();
    new File(folder, "f2.txt").createNewFile();
    Thread.sleep(100);
    runInAndVerifyIgnoreOutput("import", "-m", "test", trunk.getAbsolutePath(), myRepoUrl + "/trunk");
    update();
    runInAndVerifyIgnoreOutput("copy", myWorkingCopyDir.getPath() + "/trunk", myWorkingCopyDir.getPath() + "/branch");
    runInAndVerifyIgnoreOutput("propset", "testprop", "testval", myWorkingCopyDir.getPath() + "/branch/folder");
    checkin();
    final SvnVcs vcs = SvnVcs.getInstance(myProject);
    vcs.invokeRefreshSvnRoots();
    final CommittedChangesProvider<SvnChangeList, ChangeBrowserSettings> committedChangesProvider = vcs.getCommittedChangesProvider();
    final List<SvnChangeList> changeListList = committedChangesProvider.getCommittedChanges(committedChangesProvider.createDefaultSettings(), new SvnRepositoryLocation(myRepoUrl + "/branch"), 0);
    checkList(changeListList, 2, new Data[] { new Data(new File(myWorkingCopyDir.getPath(), "branch").getAbsolutePath(), FileStatus.ADDED, "- copied from /trunk"), new Data(new File(myWorkingCopyDir.getPath(), "branch/folder").getAbsolutePath(), FileStatus.MODIFIED, "- copied from /trunk/folder") });
}
Also used : SvnRepositoryLocation(org.jetbrains.idea.svn.history.SvnRepositoryLocation) SvnChangeList(org.jetbrains.idea.svn.history.SvnChangeList) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) VfsUtilCore.virtualToIoFile(com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile) Test(org.junit.Test)

Example 24 with ChangeBrowserSettings

use of com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings in project intellij-community by JetBrains.

the class SvnCommittedViewTest method testReplaced.

@Test
public void testReplaced() throws Exception {
    enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD);
    enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE);
    VirtualFile d1 = createDirInCommand(myWorkingCopyDir, "d1");
    VirtualFile f11 = createFileInCommand(d1, "f11.txt", "123\n456");
    VirtualFile f12 = createFileInCommand(d1, "f12.txt", "----");
    // r1, addition without history
    checkin();
    File dir = virtualToIoFile(d1);
    final String d1Path = dir.getAbsolutePath();
    runInAndVerifyIgnoreOutput("delete", d1Path);
    boolean created = dir.mkdir();
    Assert.assertTrue(created);
    runInAndVerifyIgnoreOutput("add", d1Path);
    checkin();
    final SvnVcs vcs = SvnVcs.getInstance(myProject);
    vcs.invokeRefreshSvnRoots();
    final CommittedChangesProvider<SvnChangeList, ChangeBrowserSettings> committedChangesProvider = vcs.getCommittedChangesProvider();
    final List<SvnChangeList> changeListList = committedChangesProvider.getCommittedChanges(committedChangesProvider.createDefaultSettings(), new SvnRepositoryLocation(myRepoUrl), 0);
    checkList(changeListList, 2, new Data[] { new Data(absPath(d1), FileStatus.MODIFIED, "- replaced") });
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) SvnRepositoryLocation(org.jetbrains.idea.svn.history.SvnRepositoryLocation) SvnChangeList(org.jetbrains.idea.svn.history.SvnChangeList) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) VfsUtilCore.virtualToIoFile(com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile) Test(org.junit.Test)

Example 25 with ChangeBrowserSettings

use of com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings in project intellij-community by JetBrains.

the class SvnCommittedChangesProvider method loadCommittedChanges.

@Override
public void loadCommittedChanges(@NotNull ChangeBrowserSettings settings, @NotNull RepositoryLocation location, int maxCount, @NotNull AsynchConsumer<CommittedChangeList> consumer) throws VcsException {
    try {
        SvnRepositoryLocation svnLocation = (SvnRepositoryLocation) location;
        String repositoryRoot = getRepositoryRoot(svnLocation);
        ChangeBrowserSettings.Filter filter = settings.createFilter();
        Consumer<LogEntry> resultConsumer = logEntry -> {
            SvnChangeList list = new SvnChangeList(myVcs, svnLocation, logEntry, repositoryRoot);
            if (filter.accepts(list)) {
                consumer.consume(list);
            }
        };
        SvnTarget target = SvnTarget.fromURL(svnLocation.toSvnUrl(), createBeforeRevision(settings));
        getCommittedChangesImpl(settings, target, maxCount, resultConsumer, false, true);
    } finally {
        consumer.finished();
    }
}
Also used : AsynchConsumer(com.intellij.util.AsynchConsumer) SvnBindException(org.jetbrains.idea.svn.commandLine.SvnBindException) VcsRevisionNumber(com.intellij.openapi.vcs.history.VcsRevisionNumber) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Date(java.util.Date) ProgressManager.progress(com.intellij.openapi.progress.ProgressManager.progress) VcsCommittedViewAuxiliary(com.intellij.openapi.vcs.changes.committed.VcsCommittedViewAuxiliary) VcsCommittedListsZipper(com.intellij.openapi.vcs.changes.committed.VcsCommittedListsZipper) PairConsumer(com.intellij.util.PairConsumer) SvnBundle.message(org.jetbrains.idea.svn.SvnBundle.message) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings) ApplicationManager.getApplication(com.intellij.openapi.application.ApplicationManager.getApplication) Collections.singletonList(java.util.Collections.singletonList) ConfigureBranchesAction(org.jetbrains.idea.svn.branchConfig.ConfigureBranchesAction) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException) MessageBusConnection(com.intellij.util.messages.MessageBusConnection) SvnUtil(org.jetbrains.idea.svn.SvnUtil) ProgressManager.progress2(com.intellij.openapi.progress.ProgressManager.progress2) SvnVcs(org.jetbrains.idea.svn.SvnVcs) FileUtil(com.intellij.openapi.util.io.FileUtil) Logger(com.intellij.openapi.diagnostic.Logger) com.intellij.openapi.vcs(com.intellij.openapi.vcs) CommittedChangeList(com.intellij.openapi.vcs.versionBrowser.CommittedChangeList) VcsUtil(com.intellij.vcsUtil.VcsUtil) DataOutput(java.io.DataOutput) DecoratorManager(com.intellij.openapi.vcs.changes.committed.DecoratorManager) SVNException(org.tmatesoft.svn.core.SVNException) Collection(java.util.Collection) Set(java.util.Set) VcsConfigurationChangeListener(com.intellij.openapi.vcs.changes.committed.VcsConfigurationChangeListener) IOException(java.io.IOException) DefaultActionGroup(com.intellij.openapi.actionSystem.DefaultActionGroup) File(java.io.File) ContainerUtil.newArrayList(com.intellij.util.containers.ContainerUtil.newArrayList) Nullable(org.jetbrains.annotations.Nullable) StatusType(org.jetbrains.idea.svn.status.StatusType) Depth(org.jetbrains.idea.svn.api.Depth) List(java.util.List) SVNRevision(org.tmatesoft.svn.core.wc.SVNRevision) SVNURL(org.tmatesoft.svn.core.SVNURL) ContainerUtil.newHashSet(com.intellij.util.containers.ContainerUtil.newHashSet) Pair(com.intellij.openapi.util.Pair) DataInput(java.io.DataInput) ChangesBrowserSettingsEditor(com.intellij.openapi.vcs.versionBrowser.ChangesBrowserSettingsEditor) Registry(com.intellij.openapi.util.registry.Registry) NotNull(org.jetbrains.annotations.NotNull) SvnTarget(org.tmatesoft.svn.core.wc2.SvnTarget) Consumer(com.intellij.util.Consumer) ChangeBrowserSettings(com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings) SvnTarget(org.tmatesoft.svn.core.wc2.SvnTarget)

Aggregations

ChangeBrowserSettings (com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings)29 VirtualFile (com.intellij.openapi.vfs.VirtualFile)19 SvnChangeList (org.jetbrains.idea.svn.history.SvnChangeList)16 SvnRepositoryLocation (org.jetbrains.idea.svn.history.SvnRepositoryLocation)15 Test (org.junit.Test)14 CommittedChangeList (com.intellij.openapi.vcs.versionBrowser.CommittedChangeList)9 SvnVcs (org.jetbrains.idea.svn.SvnVcs)9 File (java.io.File)7 VfsUtilCore.virtualToIoFile (com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile)5 Pair (com.intellij.openapi.util.Pair)4 NotNull (org.jetbrains.annotations.NotNull)4 ProcessCanceledException (com.intellij.openapi.progress.ProcessCanceledException)3 ChangesBrowserSettingsEditor (com.intellij.openapi.vcs.versionBrowser.ChangesBrowserSettingsEditor)3 DefaultActionGroup (com.intellij.openapi.actionSystem.DefaultActionGroup)2 ApplicationManager.getApplication (com.intellij.openapi.application.ApplicationManager.getApplication)2 Logger (com.intellij.openapi.diagnostic.Logger)2 ProgressManager.progress (com.intellij.openapi.progress.ProgressManager.progress)2 ProgressManager.progress2 (com.intellij.openapi.progress.ProgressManager.progress2)2 FileUtil (com.intellij.openapi.util.io.FileUtil)2 Registry (com.intellij.openapi.util.registry.Registry)2