[Git] IDEA-69696 Git: moved file is marked added until explicit refresh
authorKirill Likhodedov <kirill.likhodedov@jetbrains.com>
Wed, 18 May 2011 15:16:38 +0000 (19:16 +0400)
committerKirill Likhodedov <kirill.likhodedov@jetbrains.com>
Thu, 19 May 2011 07:42:31 +0000 (11:42 +0400)
Don't use FilePath.getPath() since it queries the VirtualFile, use the IO file.

[Reviewed by Max]
(cherry picked from commit 5e99bbd3b6a89472fd689a89c604447fc6a29e95)

plugins/git4idea/src/git4idea/GitUtil.java
plugins/git4idea/src/git4idea/changes/ChangeCollector.java

index e856243da9a739306caa50911da201f93682834b..d4e8c0892d386fb1b71bb2c011d12ad2a4712c88 100644 (file)
@@ -246,14 +246,16 @@ public class GitUtil {
    */
   @Nullable
   public static VirtualFile getGitRootOrNull(final FilePath filePath) {
-    File file = filePath.getIOFile();
-    while (file != null && (!file.exists() || !file.isDirectory() || !new File(file, ".git").exists())) {
-      file = file.getParentFile();
-    }
-    if (file == null) {
-      return null;
+    return getGitRootOrNull(filePath.getIOFile());
+  }
+
+  @Nullable
+  public static VirtualFile getGitRootOrNull(final File file) {
+    File root = file;
+    while (root != null && (!root.exists() || !root.isDirectory() || !new File(root, ".git").exists())) {
+      root = root.getParentFile();
     }
-    return LocalFileSystem.getInstance().findFileByIoFile(file);
+    return LocalFileSystem.getInstance().findFileByIoFile(root);
   }
 
   /**
index f2a8740e78bd726e1a5197e461bf29f414b095f2..634d66f7618b934f157bd97fdeababcc52cd87d4 100644 (file)
@@ -156,8 +156,9 @@ class ChangeCollector {
   }
 
   private void addToPaths(FilePath pathToAdd, List<String> paths) {
-    if (myVcsRoot.equals(GitUtil.getGitRootOrNull(pathToAdd))) {
-      paths.add(pathToAdd.getPath());
+    File file = pathToAdd.getIOFile();
+    if (myVcsRoot.equals(GitUtil.getGitRootOrNull(file))) {
+      paths.add(file.getPath());
     }
   }