From 734007eccfba2fa56d9421a41807f7d2b41350e9 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 12:57:21 +0400 Subject: [PATCH 1/7] EA-35763 Fix already disposed --- .../src/git4idea/repo/GitRepositoryUpdater.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/plugins/git4idea/src/git4idea/repo/GitRepositoryUpdater.java b/plugins/git4idea/src/git4idea/repo/GitRepositoryUpdater.java index 4a31f78873cf..5bf34489e979 100644 --- a/plugins/git4idea/src/git4idea/repo/GitRepositoryUpdater.java +++ b/plugins/git4idea/src/git4idea/repo/GitRepositoryUpdater.java @@ -16,6 +16,7 @@ package git4idea.repo; import com.intellij.openapi.Disposable; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -54,9 +55,15 @@ final class GitRepositoryUpdater implements Disposable, BulkFileListener { myHeadsDir = VcsUtil.getVirtualFile(myRepositoryFiles.getRefsHeadsPath()); myRemotesDir = VcsUtil.getVirtualFile(myRepositoryFiles.getRefsRemotesPath()); - myUpdateQueue = new QueueProcessor(new Updater(repository), repository.getProject().getDisposed()); - myMessageBusConnection = repository.getProject().getMessageBus().connect(); - myMessageBusConnection.subscribe(VirtualFileManager.VFS_CHANGES, this); + Project project = repository.getProject(); + myUpdateQueue = new QueueProcessor(new Updater(repository), project.getDisposed()); + if (!project.isDisposed()) { + myMessageBusConnection = project.getMessageBus().connect(); + myMessageBusConnection.subscribe(VirtualFileManager.VFS_CHANGES, this); + } + else { + myMessageBusConnection = null; + } } private static void visitGitDirVfs(@NotNull VirtualFile gitDir) { @@ -85,7 +92,9 @@ final class GitRepositoryUpdater implements Disposable, BulkFileListener { if (myWatchRequest != null) { LocalFileSystem.getInstance().removeWatchedRoot(myWatchRequest); } - myMessageBusConnection.disconnect(); + if (myMessageBusConnection != null) { + myMessageBusConnection.disconnect(); + } } @Override From 6e5a6bab5e83457c7aadb313d1d39de028ef7e6c Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 13:04:00 +0400 Subject: [PATCH 2/7] IDEA-85405 Force update current branch info after checkout to avoid issues of the async refresh. --- .../git4idea/src/git4idea/branch/GitCheckoutOperation.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java b/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java index 139ac72b22aa..47169747ef0f 100644 --- a/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java +++ b/plugins/git4idea/src/git4idea/branch/GitCheckoutOperation.java @@ -236,7 +236,9 @@ class GitCheckoutOperation extends GitBranchOperation { // See http://youtrack.jetbrains.com/issue/IDEA-80573 sleepABit(); refreshRoot(repository); - // repository state will be auto-updated with this VFS refresh => no need to call GitRepository#update(). + // repository state will be auto-updated with this VFS refresh => in general there is no need to call GitRepository#update() + // but to avoid problems of the asynchronous refresh, let's force update the repository info. + repository.update(GitRepository.TrackedTopic.CURRENT_BRANCH, GitRepository.TrackedTopic.CURRENT_REVISION); } } From 0e196cf60ba1f7cea507701b3f6ddb80887abb3a Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 13:20:39 +0400 Subject: [PATCH 3/7] EA-35557 Fix already disposed --- .../git4idea/src/git4idea/repo/GitUntrackedFilesHolder.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/git4idea/src/git4idea/repo/GitUntrackedFilesHolder.java b/plugins/git4idea/src/git4idea/repo/GitUntrackedFilesHolder.java index 356ba991486b..feabdb62c367 100644 --- a/plugins/git4idea/src/git4idea/repo/GitUntrackedFilesHolder.java +++ b/plugins/git4idea/src/git4idea/repo/GitUntrackedFilesHolder.java @@ -104,8 +104,10 @@ public class GitUntrackedFilesHolder implements Disposable, BulkFileListener { } void setupVfsListener(@NotNull Project project) { - MessageBusConnection connection = project.getMessageBus().connect(this); - connection.subscribe(VirtualFileManager.VFS_CHANGES, this); + if (!project.isDisposed()) { + MessageBusConnection connection = project.getMessageBus().connect(this); + connection.subscribe(VirtualFileManager.VFS_CHANGES, this); + } } @Override From daa7bc4b53f6a6b18d403bbb48cca7eab8bf8b15 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 13:25:51 +0400 Subject: [PATCH 4/7] EA-35260 Fix already disposed --- plugins/git4idea/src/git4idea/GitUtil.java | 3 +++ .../git4idea/src/git4idea/commands/GitCompoundResult.java | 6 +----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/git4idea/src/git4idea/GitUtil.java b/plugins/git4idea/src/git4idea/GitUtil.java index 8556b790634b..f4be63494bea 100644 --- a/plugins/git4idea/src/git4idea/GitUtil.java +++ b/plugins/git4idea/src/git4idea/GitUtil.java @@ -608,6 +608,9 @@ public class GitUtil { } public static boolean justOneGitRepository(Project project) { + if (project.isDisposed()) { + return true; + } GitRepositoryManager manager = getRepositoryManager(project); if (manager == null) { return true; diff --git a/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java b/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java index a0ea8be656f2..cfc906f03bd6 100644 --- a/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java +++ b/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java @@ -79,7 +79,7 @@ public final class GitCompoundResult { GitCommandResult result = entry.getValue(); if (!result.success()) { sb.append("

"); - if (!onlyOneRepositoryInTheProject()) { + if (!GitUtil.justOneGitRepository(myProject)) { sb.append("" + repository.getPresentableUrl() + ":
"); } sb.append(result.getErrorOutputAsHtmlString()); @@ -88,8 +88,4 @@ public final class GitCompoundResult { } return sb.toString(); } - - private boolean onlyOneRepositoryInTheProject() { - return !GitUtil.getRepositoryManager(myProject).moreThanOneRoot(); - } } From 665c7f02a5a78f1b5ac28e925d72815518b9a420 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 13:39:37 +0400 Subject: [PATCH 5/7] EA-35798 Fix already disposed --- .../src/git4idea/checkin/GitCheckinEnvironment.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java index a2e21ae6f5ec..19c3319527da 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java @@ -476,9 +476,11 @@ public class GitCheckinEnvironment implements CheckinEnvironment { handler.addParameters(paths); handler.run(); } - GitRepositoryManager manager = GitUtil.getRepositoryManager(project); - if (manager != null) { - manager.updateRepository(root, GitRepository.TrackedTopic.CURRENT_REVISION, GitRepository.TrackedTopic.STATE); + if (!project.isDisposed()) { + GitRepositoryManager manager = GitUtil.getRepositoryManager(project); + if (manager != null) { + manager.updateRepository(root, GitRepository.TrackedTopic.CURRENT_REVISION, GitRepository.TrackedTopic.STATE); + } } } From 8760d87cfcd62b1b48bb1f478b277d880890a218 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 13:40:20 +0400 Subject: [PATCH 6/7] EA-34972 Fix already disposed --- .../convert/GitFileSeparatorConverter.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/plugins/git4idea/src/git4idea/convert/GitFileSeparatorConverter.java b/plugins/git4idea/src/git4idea/convert/GitFileSeparatorConverter.java index 66118a1f85e2..7ed54d9a1cfe 100644 --- a/plugins/git4idea/src/git4idea/convert/GitFileSeparatorConverter.java +++ b/plugins/git4idea/src/git4idea/convert/GitFileSeparatorConverter.java @@ -50,6 +50,9 @@ public class GitFileSeparatorConverter { final GitVcsSettings settings, Map> sortedChanges, final List exceptions) { + if (project.isDisposed()) { + return true; + } final GitVcsSettings.ConversionPolicy conversionPolicy = settings.getLineSeparatorsConversion(); if (conversionPolicy != GitVcsSettings.ConversionPolicy.NONE) { LocalFileSystem lfs = LocalFileSystem.getInstance(); @@ -77,10 +80,10 @@ public class GitFileSeparatorConverter { } } // check crlf for real - for (Iterator>> i = files.entrySet().iterator(); i.hasNext();) { + for (Iterator>> i = files.entrySet().iterator(); i.hasNext(); ) { Map.Entry> e = i.next(); Set fs = e.getValue(); - for (Iterator j = fs.iterator(); j.hasNext();) { + for (Iterator j = fs.iterator(); j.hasNext(); ) { VirtualFile f = j.next(); String detectedLineSeparator = LoadTextUtil.detectLineSeparator(f, true); if (detectedLineSeparator == null || nl.equals(detectedLineSeparator)) { @@ -105,15 +108,18 @@ public class GitFileSeparatorConverter { settings.setLineSeparatorsConversion(GitVcsSettings.ConversionPolicy.CONVERT); } selectedFiles = d.getSelectedFiles(); - } else if (d.getExitCode() == GitConvertFilesDialog.DO_NOT_CONVERT) { + } + else if (d.getExitCode() == GitConvertFilesDialog.DO_NOT_CONVERT) { if (d.isDontShowAgainChosen()) { settings.setLineSeparatorsConversion(GitVcsSettings.ConversionPolicy.NONE); } - } else { + } + else { //noinspection ThrowableInstanceNeverThrown exceptions.add(new VcsException("Commit was cancelled in file conversion dialog")); } - } else { + } + else { ArrayList fileList = new ArrayList(); for (Set fileSet : files.values()) { fileList.addAll(fileSet); @@ -127,7 +133,8 @@ public class GitFileSeparatorConverter { } try { LoadTextUtil.changeLineSeparator(project, GitConvertFilesDialog.class.getName(), f, nl); - } catch (IOException e) { + } + catch (IOException e) { //noinspection ThrowableInstanceNeverThrown exceptions.add(new VcsException("Failed to change line separators for the file: " + f.getPresentableUrl(), e)); } From 3b1c806dc8a86792017ce79a8bd30685ffb4d344 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 Apr 2012 14:44:44 +0400 Subject: [PATCH 7/7] IDEA-85462 Mercurial: log files are polluted with mercurial logs Never log.info for silent commands. log.debug everything the command and the output. --- .../org/zmlx/hg4idea/execution/HgCommandExecutor.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandExecutor.java b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandExecutor.java index 1bdd028d9d93..44a186947467 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandExecutor.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandExecutor.java @@ -189,22 +189,31 @@ public final class HgCommandExecutor { final String cmdString = String.format("%s %s %s", executable, operation, arguments == null ? "" : StringUtils.join(arguments, " ")); // log command - LOG.info(cmdString); if (!myIsSilent) { + LOG.info(cmdString); myVcs.showMessageInConsole(cmdString, ConsoleViewContentType.NORMAL_OUTPUT.getAttributes()); } + else { + LOG.debug(cmdString); + } // log output if needed if (!myIsSilent && myShowOutput) { LOG.info(result.getRawOutput()); myVcs.showMessageInConsole(result.getRawOutput(), ConsoleViewContentType.SYSTEM_OUTPUT.getAttributes()); } + else { + LOG.debug(result.getRawOutput()); + } // log error if (!myIsSilent) { LOG.info(result.getRawError()); myVcs.showMessageInConsole(result.getRawError(), ConsoleViewContentType.ERROR_OUTPUT.getAttributes()); } + else { + LOG.debug(result.getRawError()); + } } private void showError(Exception e) {