Merge fixes of some exceptions made for 121.
authorKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Sat, 11 Aug 2012 11:20:24 +0000 (15:20 +0400)
committerKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Sat, 11 Aug 2012 11:20:24 +0000 (15:20 +0400)
platform/platform-api/src/com/intellij/openapi/diff/FileContent.java
platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeHighlighterHolder.java
platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ui/MergePanel2.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/ShowDiffAction.java
plugins/git4idea/src/git4idea/history/GitHistoryUtils.java
plugins/hg4idea/src/org/zmlx/hg4idea/HgRevisionNumber.java

index 84c2500233c4d57c1838f8ff853384cf3dcb43c1..409bd9bda4dec32b157092757812adf4d9b97469 100644 (file)
@@ -20,7 +20,6 @@ import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.fileEditor.FileDocumentManager;
 import com.intellij.openapi.fileEditor.OpenFileDescriptor;
 import com.intellij.openapi.fileTypes.FileType;
-import com.intellij.openapi.fileTypes.FileTypeManager;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.vfs.LocalFileSystem;
@@ -69,7 +68,7 @@ public class FileContent extends DiffContent {
     return myFile.getFileType().isBinary();
   }
 
-  public static FileContent createFromTempFile(Project project, String name, String ext, byte[] content) throws IOException {
+  public static FileContent createFromTempFile(Project project, String name, String ext, @NotNull byte[] content) throws IOException {
     final File tempFile = FileUtil.createTempFile(name, ext);
     tempFile.deleteOnExit();
     FileUtil.writeToFile(tempFile, content);
index d98d5ab393e8f050356b185e0fccda52f2ff406e..327b70596b6d1fdae36d869ef99a6b382b76047e 100644 (file)
@@ -62,7 +62,7 @@ class ChangeHighlighterHolder {
   private void highlighterCreated(RangeHighlighter highlighter, TextAttributes attrs, boolean applied) {
     if (attrs != null) {
       Color color = attrs.getErrorStripeColor();
-      if (applied) {
+      if (color != null && applied) {
         color = makeColorForApplied(color);
       }
       highlighter.setErrorStripeMarkColor(color);
@@ -70,7 +70,8 @@ class ChangeHighlighterHolder {
     myHighlighters.add(highlighter);
   }
 
-  private static Color makeColorForApplied(Color color) {
+  @NotNull
+  private static Color makeColorForApplied(@NotNull Color color) {
     return new Color(color.getRed(), color.getGreen(), color.getBlue(), APPLIED_CHANGE_TRANSPARENCY);
   }
 
index bfe6fea6f4e8aab79ec1794f19154c21c8b93aab..1653b3eda712a9296fc8be71f5d9f2058454f42d 100644 (file)
@@ -548,7 +548,9 @@ public class MergePanel2 implements DiffViewer {
 
   public void setColorScheme(EditorColorsScheme scheme) {
     for (Editor editor : getEditors()) {
-      ((EditorEx)editor).setColorsScheme(scheme);
+      if (editor != null) {
+        ((EditorEx)editor).setColorsScheme(scheme);
+      }
     }
     myPanel.setColorScheme(scheme);
   }
index 0b8ce1c89bde6a16433df43e00989f5bc801cee8..ca413b20ced6ebbbe018518b953831446d5401b1 100644 (file)
@@ -218,10 +218,11 @@ public class ShowDiffAction extends AnAction implements DumbAware {
                                               fileName,
                                               ArrayUtil.EMPTY_BYTE_ARRAY);
     } else {
+      byte[] content = ((BinaryContentRevision)contentRevision).getBinaryContent();
       fileContent = FileContent.createFromTempFile(project,
                                               contentRevision.getFile().getName(),
                                               contentRevision.getFile().getName(),
-                                              ((BinaryContentRevision)contentRevision).getBinaryContent());
+                                              content == null ? ArrayUtil.EMPTY_BYTE_ARRAY : content);
     }
     return fileContent;
   }
index cf2d93c9a57bb25dc7c4545d369898807d21a856..c00bb3748bf68840d5d326796267e4313bd44aa1 100644 (file)
@@ -194,7 +194,7 @@ public class GitHistoryUtils {
       return null;
     }
     final List<Change> changes = record.parseChanges(project, root);
-    boolean exists = FileStatus.DELETED.equals(changes.get(0).getFileStatus());
+    boolean exists = changes.isEmpty() || !FileStatus.DELETED.equals(changes.get(0).getFileStatus());
     record.setUsedHandler(h);
     return new ItemLatestState(new GitRevisionNumber(record.getHash(), record.getDate()), exists, false);
   }
index 5c78a863d0ec4268625ba6e97548a6faf6208e88..b59af628eefa580547e937908f0ec9601f6efb6d 100644 (file)
@@ -111,6 +111,14 @@ public class HgRevisionNumber implements VcsRevisionNumber {
       return 0;
     }
 
+    // One of the revisions is local. Local is "greater" than any from the history.
+    if (changeset.isEmpty()) {
+      return 1;
+    }
+    if (other.changeset.isEmpty()) {
+      return -1;
+    }
+
     // compare revision numbers.
     final int revCompare = java.lang.Long.valueOf(getRevisionNumber()).compareTo(java.lang.Long.valueOf(other.getRevisionNumber()));
     if (revCompare != 0) {