From d99d5a99766ea22c9096e70c7fbdca107d332c49 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 5 Jun 2012 14:05:44 +0400 Subject: [PATCH] IDEA-86863 Subversion: "file is changed on server" marker is shown for all locally changed files in 1.6 working copy --- .../src/org/jetbrains/idea/svn/SvnDiffProvider.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java index 661a0a647234..7398b38e7da4 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java @@ -162,7 +162,7 @@ public class SvnDiffProvider implements DiffProvider, DiffMixin { final SVNStatusClient client = myVcs.createStatusClient(); try { final SVNStatus svnStatus = client.doStatus(file, true); - if (svnStatus == null) { + if (svnStatus == null || itemExists(svnStatus) && SVNRevision.UNDEFINED.equals(svnStatus.getRemoteRevision())) { // IDEADEV-21785 (no idea why this can happen) final SVNInfo info = myVcs.createWCClient().doInfo(file, SVNRevision.HEAD); if (info == null || info.getURL() == null) { @@ -171,8 +171,7 @@ public class SvnDiffProvider implements DiffProvider, DiffMixin { } return createResult(info.getCommittedRevision(), true, false); } - final boolean exists = ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteContentsStatus()) && - ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteNodeStatus()); + final boolean exists = itemExists(svnStatus); if (! exists) { // get really latest revision final LatestExistentSearcher searcher = new LatestExistentSearcher(myVcs, svnStatus.getURL()); @@ -191,4 +190,9 @@ public class SvnDiffProvider implements DiffProvider, DiffMixin { return defaultResult(); } } + + private boolean itemExists(SVNStatus svnStatus) { + return ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteContentsStatus()) && + ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteNodeStatus()); + } }