From bccbeb8a9c1bd87108b6a932d3939b1bfc8441a4 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Fri, 13 May 2016 19:52:23 +0300 Subject: [PATCH] IDEA-153870 don't fail completely if the submodule is not registered If submodule has changed, it appears as a dir locally changed in the main repository => is among filesToCheckin. Its .git dir is found by GitUtil.gitRoots() because it searches the FS rather than looks into mappings (which is inconsistent, but changing it now is frightening). --- .../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 dd7d8507803f..e845a66c1742 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java @@ -76,8 +76,6 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.List; -import static com.intellij.util.ObjectUtils.assertNotNull; - public class GitCheckinEnvironment implements CheckinEnvironment { private static final Logger log = Logger.getInstance(GitCheckinEnvironment.class.getName()); @NonNls private static final String GIT_COMMIT_MSG_FILE_PREFIX = "git-commit-msg-"; // the file name prefix for commit message file @@ -121,7 +119,11 @@ public class GitCheckinEnvironment implements CheckinEnvironment { LinkedHashSet messages = ContainerUtil.newLinkedHashSet(); GitRepositoryManager manager = GitUtil.getRepositoryManager(myProject); for (VirtualFile root : GitUtil.gitRoots(Arrays.asList(filesToCheckin))) { - GitRepository repository = assertNotNull(manager.getRepositoryForRoot(root)); + GitRepository repository = manager.getRepositoryForRoot(root); + if (repository == null) { // unregistered nested submodule found by GitUtil.getGitRoot + log.warn("Unregistered repository: " + root); + continue; + } File mergeMsg = repository.getRepositoryFiles().getMergeMessageFile(); File squashMsg = repository.getRepositoryFiles().getSquashMessageFile(); try {