summaryrefslogtreecommitdiff
path: root/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java')
-rw-r--r--plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java41
1 files changed, 23 insertions, 18 deletions
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java
index 8aade42edc1c..49ea87d44f6e 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnDiffProvider.java
@@ -32,7 +32,12 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.idea.svn.commandLine.SvnBindException;
import org.jetbrains.idea.svn.history.LatestExistentSearcher;
+import org.jetbrains.idea.svn.info.InfoConsumer;
+import org.jetbrains.idea.svn.info.Info;
+import org.jetbrains.idea.svn.status.Status;
+import org.jetbrains.idea.svn.status.StatusType;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNPropertyValue;
import org.tmatesoft.svn.core.SVNURL;
@@ -55,13 +60,13 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
}
public VcsRevisionNumber getCurrentRevision(VirtualFile file) {
- final SVNInfo svnInfo = myVcs.getInfo(new File(file.getPresentableUrl()));
+ final Info svnInfo = myVcs.getInfo(new File(file.getPresentableUrl()));
return getRevision(svnInfo);
}
@Nullable
- private static VcsRevisionNumber getRevision(@Nullable SVNInfo info) {
+ private static VcsRevisionNumber getRevision(@Nullable Info info) {
VcsRevisionNumber result = null;
if (info != null) {
@@ -106,11 +111,11 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
}
@NotNull
- private static ISVNInfoHandler createInfoHandler(@NotNull final Map<VirtualFile, VcsRevisionNumber> revisionMap,
+ private static InfoConsumer createInfoHandler(@NotNull final Map<VirtualFile, VcsRevisionNumber> revisionMap,
@NotNull final Map<String, VirtualFile> fileMap) {
- return new ISVNInfoHandler() {
+ return new InfoConsumer() {
@Override
- public void handleInfo(SVNInfo info) throws SVNException {
+ public void consume(Info info) throws SVNException {
if (info != null) {
VirtualFile file = fileMap.get(info.getFile().getAbsolutePath());
@@ -132,7 +137,7 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
}
private VcsRevisionDescription getCurrentRevisionDescription(File path) {
- final SVNInfo svnInfo = myVcs.getInfo(path);
+ final Info svnInfo = myVcs.getInfo(path);
if (svnInfo == null) {
return null;
}
@@ -187,20 +192,20 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
}
// not clear why we need it, with remote check..
- SVNStatus svnStatus = getFileStatus(new File(selectedFile.getPresentableUrl()), false);
+ Status svnStatus = getFileStatus(new File(selectedFile.getPresentableUrl()), false);
if (svnStatus != null && svnRevision.equals(svnStatus.getRevision())) {
return SvnContentRevision.createBaseRevision(myVcs, filePath, svnRevision);
}
return SvnContentRevision.createRemote(myVcs, filePath, svnRevision);
}
- private SVNStatus getFileStatus(File file, boolean remote) {
- SVNStatus result = null;
+ private Status getFileStatus(File file, boolean remote) {
+ Status result = null;
try {
- result = myVcs.getFactory(file).createStatusClient().doStatus(file, remote, false);
+ result = myVcs.getFactory(file).createStatusClient().doStatus(file, remote);
}
- catch (SVNException e) {
+ catch (SvnBindException e) {
LOG.debug(e);
}
@@ -217,10 +222,10 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
}
private ItemLatestState getLastRevision(final File file) {
- final SVNStatus svnStatus = getFileStatus(file, true);
+ final Status svnStatus = getFileStatus(file, true);
if (svnStatus == null || itemExists(svnStatus) && SVNRevision.UNDEFINED.equals(svnStatus.getRemoteRevision())) {
// IDEADEV-21785 (no idea why this can happen)
- final SVNInfo info = myVcs.getInfo(file, SVNRevision.HEAD);
+ final Info info = myVcs.getInfo(file, SVNRevision.HEAD);
if (info == null || info.getURL() == null) {
LOG.info("No SVN status returned for " + file.getPath());
return defaultResult();
@@ -232,8 +237,8 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
WorkingCopyFormat format = myVcs.getWorkingCopyFormat(file);
long revision = -1;
- // skipped for 1.8
- if (!WorkingCopyFormat.ONE_DOT_EIGHT.equals(format)) {
+ // skipped for >= 1.8
+ if (format.less(WorkingCopyFormat.ONE_DOT_EIGHT)) {
// get really latest revision
// TODO: Algorithm seems not to be correct in all cases - for instance, when some subtree was deleted and replaced by other
// TODO: with same names. pegRevision should be used somehow but this complicates the algorithm
@@ -254,8 +259,8 @@ public class SvnDiffProvider extends DiffProviderEx implements DiffProvider, Dif
return createResult(svnStatus.getRevision(), exists, false);
}
- private boolean itemExists(SVNStatus svnStatus) {
- return ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteContentsStatus()) &&
- ! SVNStatusType.STATUS_DELETED.equals(svnStatus.getRemoteNodeStatus());
+ private boolean itemExists(Status svnStatus) {
+ return ! StatusType.STATUS_DELETED.equals(svnStatus.getRemoteContentsStatus()) &&
+ ! StatusType.STATUS_DELETED.equals(svnStatus.getRemoteNodeStatus());
}
}