diff --git a/plugins/git4idea/src/META-INF/plugin.xml b/plugins/git4idea/src/META-INF/plugin.xml
index e0c65226536f..fe62f7c555a4 100644
--- a/plugins/git4idea/src/META-INF/plugin.xml
+++ b/plugins/git4idea/src/META-INF/plugin.xml
@@ -74,7 +74,9 @@
- git4idea.repo.GitRepositoryManager
+ git4idea.repo.GitRepositoryManager
+ git4idea.repo.GitRepositoryManagerImpl
+ git4idea.test.GitTestRepositoryManager
diff --git a/plugins/git4idea/src/git4idea/GitUtil.java b/plugins/git4idea/src/git4idea/GitUtil.java
index 841ca77aedfc..adcc40604db6 100644
--- a/plugins/git4idea/src/git4idea/GitUtil.java
+++ b/plugins/git4idea/src/git4idea/GitUtil.java
@@ -15,6 +15,7 @@
*/
package git4idea;
+import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
@@ -561,7 +562,11 @@ public class GitUtil {
}
public static boolean justOneGitRepository(Project project) {
- return !GitRepositoryManager.getInstance(project).moreThanOneRoot();
+ GitRepositoryManager manager = getRepositoryManager(project);
+ if (manager == null) {
+ return true;
+ }
+ return !manager.moreThanOneRoot();
}
public static List sortRepositories(@NotNull Collection repositories) {
@@ -708,4 +713,9 @@ public class GitUtil {
}
return affectedChanges;
}
+
+ @Nullable
+ public static GitRepositoryManager getRepositoryManager(@NotNull Project project) {
+ return ServiceManager.getService(project, GitRepositoryManager.class);
+ }
}
diff --git a/plugins/git4idea/src/git4idea/actions/GitCompareWithBranchAction.java b/plugins/git4idea/src/git4idea/actions/GitCompareWithBranchAction.java
index 6182aedb53e2..45c32dbddf20 100644
--- a/plugins/git4idea/src/git4idea/actions/GitCompareWithBranchAction.java
+++ b/plugins/git4idea/src/git4idea/actions/GitCompareWithBranchAction.java
@@ -37,6 +37,7 @@ import com.intellij.ui.components.JBList;
import git4idea.GitBranch;
import git4idea.GitFileRevision;
import git4idea.GitRevisionNumber;
+import git4idea.GitUtil;
import git4idea.history.GitHistoryUtils;
import git4idea.repo.GitRepository;
import git4idea.repo.GitRepositoryManager;
@@ -64,7 +65,11 @@ public class GitCompareWithBranchAction extends DumbAwareAction {
final VirtualFile file = getAffectedFile(event);
- GitRepository repository = GitRepositoryManager.getInstance(project).getRepositoryForFile(file);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager == null) {
+ return;
+ }
+ GitRepository repository = manager.getRepositoryForFile(file);
assert repository != null;
final String head = repository.getCurrentRevision();
@@ -126,7 +131,14 @@ public class GitCompareWithBranchAction extends DumbAwareAction {
return;
}
- GitRepository repository = GitRepositoryManager.getInstance(project).getRepositoryForFile(vFiles[0]);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager == null) {
+ presentation.setEnabled(false);
+ presentation.setVisible(true);
+ return;
+ }
+
+ GitRepository repository = manager.getRepositoryForFile(vFiles[0]);
if (repository == null || repository.isFresh() || noBranchesToCompare(repository)) {
presentation.setEnabled(false);
presentation.setVisible(true);
diff --git a/plugins/git4idea/src/git4idea/actions/GitMerge.java b/plugins/git4idea/src/git4idea/actions/GitMerge.java
index 575fd9368e2d..b4e0645d2b7f 100644
--- a/plugins/git4idea/src/git4idea/actions/GitMerge.java
+++ b/plugins/git4idea/src/git4idea/actions/GitMerge.java
@@ -22,6 +22,7 @@ import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.update.ActionInfo;
import com.intellij.openapi.vfs.VirtualFile;
import git4idea.GitRevisionNumber;
+import git4idea.GitUtil;
import git4idea.commands.GitHandlerUtil;
import git4idea.commands.GitLineHandler;
import git4idea.i18n.GitBundle;
@@ -71,7 +72,10 @@ public class GitMerge extends GitRepositoryAction {
}
finally {
exceptions.addAll(h.errors());
- GitRepositoryManager.getInstance(project).updateRepository(root, GitRepository.TrackedTopic.ALL_CURRENT);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ manager.updateRepository(root, GitRepository.TrackedTopic.ALL_CURRENT);
+ }
}
if (exceptions.size() != 0) {
return;
diff --git a/plugins/git4idea/src/git4idea/actions/GitPull.java b/plugins/git4idea/src/git4idea/actions/GitPull.java
index 0d2cf7c1fe4b..9dad1b3a5f9c 100644
--- a/plugins/git4idea/src/git4idea/actions/GitPull.java
+++ b/plugins/git4idea/src/git4idea/actions/GitPull.java
@@ -71,7 +71,12 @@ public class GitPull extends GitRepositoryAction {
new Task.Modal(project, GitBundle.message("pulling.title", dialog.getRemote()), true) {
@Override
public void run(@NotNull ProgressIndicator indicator) {
- GitRepository repository = GitRepositoryManager.getInstance(project).getRepositoryForRoot(dialog.gitRoot());
+ final GitRepositoryManager repositoryManager = GitUtil.getRepositoryManager(myProject);
+ if (repositoryManager == null) {
+ return;
+ }
+
+ GitRepository repository = repositoryManager.getRepositoryForRoot(dialog.gitRoot());
assert repository != null : "Repository can't be null for root " + dialog.gitRoot();
String remoteOrUrl = dialog.getRemote();
@@ -108,13 +113,13 @@ public class GitPull extends GitRepositoryAction {
@Override
protected void onSuccess() {
GitMergeUtil.showUpdates(GitPull.this, project, exceptions, root, currentRev, beforeLabel, getActionName(), ActionInfo.UPDATE);
- GitRepositoryManager.getInstance(project).updateRepository(root, GitRepository.TrackedTopic.ALL);
+ repositoryManager.updateRepository(root, GitRepository.TrackedTopic.ALL);
}
@Override
protected void onFailure() {
GitUIUtil.notifyGitErrors(project, "Error pulling " + dialog.getRemote(), "", handlerReference.get().errors());
- GitRepositoryManager.getInstance(project).updateRepository(root, GitRepository.TrackedTopic.ALL);
+ repositoryManager.updateRepository(root, GitRepository.TrackedTopic.ALL);
}
});
}
diff --git a/plugins/git4idea/src/git4idea/actions/GitRebaseActionBase.java b/plugins/git4idea/src/git4idea/actions/GitRebaseActionBase.java
index cc692911cb96..452dd6c157bb 100644
--- a/plugins/git4idea/src/git4idea/actions/GitRebaseActionBase.java
+++ b/plugins/git4idea/src/git4idea/actions/GitRebaseActionBase.java
@@ -19,7 +19,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vfs.VirtualFile;
-import git4idea.commands.*;
+import git4idea.GitUtil;
+import git4idea.commands.GitLineHandler;
+import git4idea.commands.GitTask;
+import git4idea.commands.GitTaskResult;
+import git4idea.commands.GitTaskResultHandlerAdapter;
import git4idea.i18n.GitBundle;
import git4idea.rebase.GitInteractiveRebaseEditorHandler;
import git4idea.rebase.GitRebaseEditorService;
@@ -62,7 +66,10 @@ public abstract class GitRebaseActionBase extends GitRepositoryAction {
@Override
protected void run(GitTaskResult taskResult) {
editor.close();
- GitRepositoryManager.getInstance(project).updateRepository(root, GitRepository.TrackedTopic.ALL_CURRENT);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ manager.updateRepository(root, GitRepository.TrackedTopic.ALL_CURRENT);
+ }
notifyAboutErrorResult(taskResult, resultListener, exceptions, project);
}
});
diff --git a/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java b/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java
index a9fffc8cc91c..54d403158bff 100644
--- a/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java
+++ b/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java
@@ -15,7 +15,10 @@
*/
package git4idea.actions;
-import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.actionSystem.ActionPlaces;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.DumbAwareAction;
@@ -113,7 +116,11 @@ public abstract class GitRepositoryAction extends DumbAwareAction {
final VirtualFile[] files = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY);
if (files != null) {
for (VirtualFile file : files) {
- final GitRepository repositoryForFile = GitRepositoryManager.getInstance(project).getRepositoryForFile(file);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager == null) {
+ return false;
+ }
+ final GitRepository repositoryForFile = manager.getRepositoryForFile(file);
if (repositoryForFile != null && repositoryForFile.getState() == GitRepository.State.REBASING) {
return true;
}
diff --git a/plugins/git4idea/src/git4idea/actions/GitResetHead.java b/plugins/git4idea/src/git4idea/actions/GitResetHead.java
index 69bb0a6fc754..b84f5e33810c 100644
--- a/plugins/git4idea/src/git4idea/actions/GitResetHead.java
+++ b/plugins/git4idea/src/git4idea/actions/GitResetHead.java
@@ -18,6 +18,7 @@ package git4idea.actions;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vfs.VirtualFile;
+import git4idea.GitUtil;
import git4idea.commands.GitHandlerUtil;
import git4idea.commands.GitLineHandler;
import git4idea.i18n.GitBundle;
@@ -57,6 +58,9 @@ public class GitResetHead extends GitRepositoryAction {
GitLineHandler h = d.handler();
affectedRoots.add(d.getGitRoot());
GitHandlerUtil.doSynchronously(h, GitBundle.getString("resetting.title"), h.printableCommandLine());
- GitRepositoryManager.getInstance(project).updateRepository(d.getGitRoot(), GitRepository.TrackedTopic.ALL_CURRENT);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ manager.updateRepository(d.getGitRoot(), GitRepository.TrackedTopic.ALL_CURRENT);
+ }
}
}
diff --git a/plugins/git4idea/src/git4idea/actions/GitResolveConflictsAction.java b/plugins/git4idea/src/git4idea/actions/GitResolveConflictsAction.java
index a6dc83176c91..69fadd69153f 100644
--- a/plugins/git4idea/src/git4idea/actions/GitResolveConflictsAction.java
+++ b/plugins/git4idea/src/git4idea/actions/GitResolveConflictsAction.java
@@ -24,9 +24,9 @@ import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vcs.changes.ContentRevision;
import com.intellij.openapi.vfs.VirtualFile;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.repo.GitRepository;
-import git4idea.repo.GitRepositoryManager;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@@ -71,7 +71,7 @@ public class GitResolveConflictsAction extends GitAction {
AbstractVcsHelper.getInstance(project).showMergeDialog(new ArrayList(conflictedFiles), GitVcs.getInstance(project).getMergeProvider());
for (VirtualFile conflictedFile : conflictedFiles) {
- final GitRepository repo = GitRepositoryManager.getInstance(project).getRepositoryForFile(conflictedFile);
+ final GitRepository repo = GitUtil.getRepositoryManager(project).getRepositoryForFile(conflictedFile);
if (repo != null) {
repo.update(GitRepository.TrackedTopic.ALL_CURRENT);
}
diff --git a/plugins/git4idea/src/git4idea/actions/GitRevert.java b/plugins/git4idea/src/git4idea/actions/GitRevert.java
index 571f0f8bbb05..29fbb90a3b52 100644
--- a/plugins/git4idea/src/git4idea/actions/GitRevert.java
+++ b/plugins/git4idea/src/git4idea/actions/GitRevert.java
@@ -23,6 +23,7 @@ import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vcs.changes.ui.RollbackChangesDialog;
import com.intellij.openapi.vfs.VirtualFile;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.i18n.GitBundle;
import git4idea.repo.GitRepository;
@@ -50,9 +51,12 @@ public class GitRevert extends BasicAction {
}
RollbackChangesDialog.rollbackChanges(project, changes);
for (VirtualFile conflictedFile : affectedFiles) {
- final GitRepository repo = GitRepositoryManager.getInstance(project).getRepositoryForFile(conflictedFile);
- if (repo != null) {
- repo.update(GitRepository.TrackedTopic.ALL_CURRENT);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ final GitRepository repo = manager.getRepositoryForFile(conflictedFile);
+ if (repo != null) {
+ repo.update(GitRepository.TrackedTopic.ALL_CURRENT);
+ }
}
}
return false;
diff --git a/plugins/git4idea/src/git4idea/changes/GitChangeUtils.java b/plugins/git4idea/src/git4idea/changes/GitChangeUtils.java
index 4e06200c7d00..789ff3a680d7 100644
--- a/plugins/git4idea/src/git4idea/changes/GitChangeUtils.java
+++ b/plugins/git4idea/src/git4idea/changes/GitChangeUtils.java
@@ -404,7 +404,7 @@ public class GitChangeUtils {
fullComment = commentSubject;
}
else {
- fullComment = commentBody + "\n\n" + commentSubject;
+ fullComment = commentSubject + "\n" + commentBody;
}
GitRevisionNumber thisRevision = new GitRevisionNumber(revisionNumber, commitDate);
diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java
index 6ef8e74e2f68..18de6c810cb3 100644
--- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java
+++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java
@@ -330,8 +330,10 @@ public class GitCheckinEnvironment implements CheckinEnvironment {
}
handler.endOptions();
handler.run();
- GitRepositoryManager.getInstance(project).updateRepository(root, GitRepository.TrackedTopic.CURRENT_REVISION,
- GitRepository.TrackedTopic.STATE);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ manager.updateRepository(root, GitRepository.TrackedTopic.CURRENT_REVISION, GitRepository.TrackedTopic.STATE);
+ }
}
catch (VcsException ex) {
exceptions.add(ex);
@@ -474,9 +476,10 @@ public class GitCheckinEnvironment implements CheckinEnvironment {
handler.addParameters(paths);
handler.run();
}
- GitRepositoryManager.getInstance(project).updateRepository(root,
- GitRepository.TrackedTopic.CURRENT_REVISION,
- GitRepository.TrackedTopic.STATE);
+ GitRepositoryManager manager = GitUtil.getRepositoryManager(project);
+ if (manager != null) {
+ manager.updateRepository(root, GitRepository.TrackedTopic.CURRENT_REVISION, GitRepository.TrackedTopic.STATE);
+ }
}
diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinHandlerFactory.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinHandlerFactory.java
index f0bf62dd7d97..b45df4d672e5 100644
--- a/plugins/git4idea/src/git4idea/checkin/GitCheckinHandlerFactory.java
+++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinHandlerFactory.java
@@ -28,6 +28,7 @@ import com.intellij.openapi.vcs.checkin.CheckinHandler;
import com.intellij.openapi.vcs.checkin.VcsCheckinHandlerFactory;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.PairConsumer;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.config.GitConfigUtil;
import git4idea.config.GitVersion;
@@ -241,7 +242,10 @@ public class GitCheckinHandlerFactory extends VcsCheckinHandlerFactory {
*/
@Nullable
private DetachedRoot getDetachedRoot() {
- GitRepositoryManager repositoryManager = GitRepositoryManager.getInstance(myPanel.getProject());
+ GitRepositoryManager repositoryManager = GitUtil.getRepositoryManager(myPanel.getProject());
+ if (repositoryManager == null) {
+ return null;
+ }
for (VirtualFile root : myPanel.getRoots()) {
GitRepository repository = repositoryManager.getRepositoryForRoot(root);
if (repository == null) {
diff --git a/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java b/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java
index cceba3283cb8..a0ea8be656f2 100644
--- a/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java
+++ b/plugins/git4idea/src/git4idea/commands/GitCompoundResult.java
@@ -16,8 +16,8 @@
package git4idea.commands;
import com.intellij.openapi.project.Project;
+import git4idea.GitUtil;
import git4idea.repo.GitRepository;
-import git4idea.repo.GitRepositoryManager;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
@@ -90,6 +90,6 @@ public final class GitCompoundResult {
}
private boolean onlyOneRepositoryInTheProject() {
- return !GitRepositoryManager.getInstance(myProject).moreThanOneRoot();
+ return !GitUtil.getRepositoryManager(myProject).moreThanOneRoot();
}
}
diff --git a/plugins/git4idea/src/git4idea/config/GitVcsPanel.java b/plugins/git4idea/src/git4idea/config/GitVcsPanel.java
index 038951c9bcae..8cff73be669b 100644
--- a/plugins/git4idea/src/git4idea/config/GitVcsPanel.java
+++ b/plugins/git4idea/src/git4idea/config/GitVcsPanel.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.ui.components.JBCheckBox;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.i18n.GitBundle;
import git4idea.repo.GitRepositoryManager;
@@ -74,7 +75,7 @@ public class GitVcsPanel {
myConvertTextFilesComboBox.setSelectedItem(CRLF_ASK);
myGitField.addBrowseFolderListener(GitBundle.getString("find.git.title"), GitBundle.getString("find.git.description"), project,
FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor());
- final GitRepositoryManager repositoryManager = GitRepositoryManager.getInstance(project);
+ final GitRepositoryManager repositoryManager = GitUtil.getRepositoryManager(myProject);
mySyncBranchControl.setVisible(repositoryManager != null && repositoryManager.moreThanOneRoot());
}
diff --git a/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java b/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java
index a433ba6d5117..0863d4d10dfb 100644
--- a/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java
+++ b/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java
@@ -26,12 +26,12 @@ import com.intellij.openapi.vcs.FilePathImpl;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.history.VcsRevisionNumber;
import com.intellij.openapi.vcs.merge.MergeDialogCustomizer;
-import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ArrayUtil;
import com.intellij.util.AsynchConsumer;
import git4idea.GitBranch;
import git4idea.GitTag;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.branch.GitBranchesCollection;
import git4idea.commands.GitCommand;
@@ -43,7 +43,6 @@ import git4idea.history.wholeTree.AbstractHash;
import git4idea.history.wholeTree.CommitHashPlusParents;
import git4idea.merge.GitConflictResolver;
import git4idea.repo.GitRepository;
-import git4idea.repo.GitRepositoryManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -116,7 +115,7 @@ public class LowLevelAccessImpl implements LowLevelAccess {
// uses cached version
public CachedRefs getRefs() throws VcsException {
final CachedRefs refs = new CachedRefs();
- final GitRepository repositoryForRoot = GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(myRoot);
+ final GitRepository repositoryForRoot = GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(myRoot);
final GitBranchesCollection branches;
if (repositoryForRoot != null) {
branches = repositoryForRoot.getBranches();
diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java
index f81db8e39e81..f5bc8f60ee8d 100644
--- a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java
+++ b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java
@@ -57,6 +57,7 @@ import com.intellij.util.ui.AdjustComponentWhenShown;
import com.intellij.util.ui.ColumnInfo;
import com.intellij.util.ui.UIUtil;
import com.intellij.vcsUtil.VcsUtil;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.changes.GitChangeUtils;
import git4idea.history.browser.*;
@@ -2326,7 +2327,7 @@ public class GitLogUI implements Disposable {
if (commitAt.holdsDecoration() || myTableModel.isStashed(commitAt)) return;
final GitRepository repository =
- GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
+ GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
if (repository == null) return;
new GitBranchOperationsProcessor(repository, myRefresh).checkout(commitAt.getHash().getString());
}
@@ -2350,7 +2351,7 @@ public class GitLogUI implements Disposable {
if (commitAt.holdsDecoration() || myTableModel.isStashed(commitAt)) return;
final GitRepository repository =
- GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
+ GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
if (repository == null) return;
String reference = commitAt.getHash().getString();
@@ -2390,7 +2391,7 @@ public class GitLogUI implements Disposable {
if (commitAt.holdsDecoration() || myTableModel.isStashed(commitAt)) return;
final GitRepository repository =
- GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
+ GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(commitAt.selectRepository(myRootsUnderVcs));
if (repository == null) return;
new GitCreateNewTag(myProject, repository, commitAt.getHash().getString(), myRefresh).execute();
}
diff --git a/plugins/git4idea/src/git4idea/merge/GitPullDialog.java b/plugins/git4idea/src/git4idea/merge/GitPullDialog.java
index d468164ef748..471fa9956f06 100644
--- a/plugins/git4idea/src/git4idea/merge/GitPullDialog.java
+++ b/plugins/git4idea/src/git4idea/merge/GitPullDialog.java
@@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.DocumentAdapter;
import com.intellij.util.ArrayUtil;
import git4idea.GitDeprecatedRemote;
+import git4idea.GitUtil;
import git4idea.GitVcs;
import git4idea.commands.GitCommand;
import git4idea.commands.GitHandlerUtil;
@@ -31,7 +32,6 @@ import git4idea.commands.GitSimpleHandler;
import git4idea.i18n.GitBundle;
import git4idea.jgit.GitHttpAdapter;
import git4idea.repo.GitRepository;
-import git4idea.repo.GitRepositoryManager;
import git4idea.util.GitUIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -183,7 +183,7 @@ public class GitPullDialog extends DialogWrapper {
@NotNull
private Collection getRemoteBranches(@NotNull GitDeprecatedRemote remote) {
if (GitHttpAdapter.shouldUseJGit(remote.fetchUrl())) {
- GitRepository repository = GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(gitRoot());
+ GitRepository repository = GitUtil.getRepositoryManager(myProject).getRepositoryForRoot(gitRoot());
if (repository == null) {
return Collections.emptyList();
}
diff --git a/plugins/git4idea/src/git4idea/push/GitPushDialog.java b/plugins/git4idea/src/git4idea/push/GitPushDialog.java
index cb4bcb804291..1c4f10560023 100644
--- a/plugins/git4idea/src/git4idea/push/GitPushDialog.java
+++ b/plugins/git4idea/src/git4idea/push/GitPushDialog.java
@@ -30,7 +30,6 @@ import git4idea.GitUtil;
import git4idea.history.browser.GitCommit;
import git4idea.repo.GitRemote;
import git4idea.repo.GitRepository;
-import git4idea.repo.GitRepositoryManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -67,7 +66,7 @@ public class GitPushDialog extends DialogWrapper {
myProject = project;
myPusher = new GitPusher(myProject, new EmptyProgressIndicator());
- myRepositories = GitRepositoryManager.getInstance(myProject).getRepositories();
+ myRepositories = GitUtil.getRepositoryManager(myProject).getRepositories();
myLoadingPanel = new JBLoadingPanel(new BorderLayout(), this.getDisposable());
diff --git a/plugins/git4idea/src/git4idea/push/GitPusher.java b/plugins/git4idea/src/git4idea/push/GitPusher.java
index e752c3a8322e..e8907f052130 100644
--- a/plugins/git4idea/src/git4idea/push/GitPusher.java
+++ b/plugins/git4idea/src/git4idea/push/GitPusher.java
@@ -122,7 +122,7 @@ public final class GitPusher {
public GitPusher(@NotNull Project project, @NotNull ProgressIndicator indicator) {
myProject = project;
myProgressIndicator = indicator;
- myRepositoryManager = GitRepositoryManager.getInstance(myProject);
+ myRepositoryManager = GitUtil.getRepositoryManager(myProject);
myRepositories = myRepositoryManager.getRepositories();
mySettings = GitVcsSettings.getInstance(myProject);
myPushSettings = GitPushSettings.getInstance(myProject);
diff --git a/plugins/git4idea/src/git4idea/repo/GitRepositoryManager.java b/plugins/git4idea/src/git4idea/repo/GitRepositoryManager.java
index f86db345304d..e75e8583e8d3 100644
--- a/plugins/git4idea/src/git4idea/repo/GitRepositoryManager.java
+++ b/plugins/git4idea/src/git4idea/repo/GitRepositoryManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,253 +15,52 @@
*/
package git4idea.repo;
-import com.intellij.ProjectTopics;
-import com.intellij.openapi.Disposable;
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.components.AbstractProjectComponent;
-import com.intellij.openapi.components.ServiceManager;
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.project.DumbAwareRunnable;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ModuleRootEvent;
-import com.intellij.openapi.roots.ModuleRootListener;
-import com.intellij.openapi.startup.StartupManager;
-import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.vcs.AbstractVcs;
-import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.vfs.VirtualFileManager;
-import com.intellij.openapi.vfs.newvfs.BulkFileListener;
-import com.intellij.openapi.vfs.newvfs.events.VFileEvent;
-import com.intellij.util.ArrayUtil;
-import com.intellij.util.Consumer;
-import com.intellij.util.concurrency.QueueProcessor;
-import com.intellij.util.messages.MessageBus;
-import git4idea.GitUtil;
-import git4idea.PlatformFacade;
-import git4idea.roots.GitRootProblemNotifier;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.*;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.List;
/**
* GitRepositoryManager initializes and stores {@link GitRepository GitRepositories} for Git roots defined in the project.
* @author Kirill Likhodedov
*/
-public final class GitRepositoryManager extends AbstractProjectComponent implements Disposable {
-
- private static final Logger LOG = Logger.getInstance(GitRepositoryManager.class);
-
- @NotNull private final AbstractVcs myVcs;
- @NotNull private final ProjectLevelVcsManager myVcsManager;
-
- @NotNull private final Map myRepositories = new HashMap();
- @NotNull private final Set myListeners = new HashSet();
-
- @NotNull private final ReentrantReadWriteLock REPO_LOCK = new ReentrantReadWriteLock();
-
- @NotNull private final Object ROOT_SCAN_STUB_OBJECT = new Object();
- private final Consumer