diff --git a/plugins/svn4idea/lib/svnkit-javahl.jar b/plugins/svn4idea/lib/svnkit-javahl.jar index ea2554565a5d..aa143ae37dd3 100644 Binary files a/plugins/svn4idea/lib/svnkit-javahl.jar and b/plugins/svn4idea/lib/svnkit-javahl.jar differ diff --git a/plugins/svn4idea/lib/svnkit-javahl16.zip b/plugins/svn4idea/lib/svnkit-javahl16.zip index 2d73f0dd9c88..7fd682bcfa07 100644 Binary files a/plugins/svn4idea/lib/svnkit-javahl16.zip and b/plugins/svn4idea/lib/svnkit-javahl16.zip differ diff --git a/plugins/svn4idea/lib/svnkit.jar b/plugins/svn4idea/lib/svnkit.jar index 552022927ed7..ef03e4373508 100644 Binary files a/plugins/svn4idea/lib/svnkit.jar and b/plugins/svn4idea/lib/svnkit.jar differ diff --git a/plugins/svn4idea/lib/svnkitsrc.zip b/plugins/svn4idea/lib/svnkitsrc.zip index 89b8bab380a0..2e1c77a4fcc1 100644 Binary files a/plugins/svn4idea/lib/svnkitsrc.zip and b/plugins/svn4idea/lib/svnkitsrc.zip differ diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn17/SvnVcs17.java b/plugins/svn4idea/src/org/jetbrains/idea/svn17/SvnVcs17.java index 0d070d3436a2..06a9ac6bd57b 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn17/SvnVcs17.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn17/SvnVcs17.java @@ -87,7 +87,6 @@ import org.tmatesoft.svn.core.internal.wc.SVNAdminUtil; import org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea14; import org.tmatesoft.svn.core.internal.wc.admin.SVNAdminAreaFactory; import org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess; -import org.tmatesoft.svn.core.internal.wc17.SVNWCClient17; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; import org.tmatesoft.svn.core.wc.*; @@ -590,10 +589,6 @@ public class SvnVcs17 extends AbstractVcs { return new SVNWCClient(myConfiguration.getAuthenticationManager(this), myConfiguration.getOptions(myProject)); } - public SVNWCClient17 createWC17Client() { - return new SVNWCClient17(myConfiguration.getAuthenticationManager(this), myConfiguration.getOptions(myProject)); - } - public SVNCopyClient createCopyClient() { return new SVNCopyClient(myConfiguration.getAuthenticationManager(this), myConfiguration.getOptions(myProject)); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn17/actions/CompareWithBranchAction.java b/plugins/svn4idea/src/org/jetbrains/idea/svn17/actions/CompareWithBranchAction.java index a0e17d7949b5..cf576a6993fa 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn17/actions/CompareWithBranchAction.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn17/actions/CompareWithBranchAction.java @@ -50,9 +50,7 @@ import org.tmatesoft.svn.core.internal.wc.admin.SVNAdminAreaInfo; import org.tmatesoft.svn.core.internal.wc.admin.SVNEntry; import org.tmatesoft.svn.core.internal.wc.admin.SVNReporter; import org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess; -import org.tmatesoft.svn.core.internal.wc17.SVNBaseClient17; import org.tmatesoft.svn.core.internal.wc17.SVNReporter17; -import org.tmatesoft.svn.core.internal.wc17.SVNWCClient17; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.wc.*; @@ -179,7 +177,6 @@ public class CompareWithBranchAction extends AnAction implements DumbAware { private void report17DirDiff(SvnVcs17 vcs, SVNURL url) throws SVNException { final File ioFile = new File(myVirtualFile.getPath()); - final SVNWCClient17 wcClient17 = vcs.createWC17Client(); final SVNWCClient wcClient = vcs.createWCClient(); final SVNInfo info1 = wcClient.doInfo(ioFile, SVNRevision.HEAD); @@ -193,9 +190,17 @@ public class CompareWithBranchAction extends AnAction implements DumbAware { SVNErrorManager.error(err, SVNLogType.WC); } - final SVNWCContext wcClientContext = wcClient17.getContext(); final SVNReporter17 reporter17 = - new SVNReporter17(ioFile, wcClientContext, false, true, SVNDepth.INFINITY, false, false, true, false, + new SVNReporter17(ioFile, new SVNWCContext(SvnConfiguration17.getInstance(myProject).getOptions(myProject), new ISVNEventHandler() { + @Override + public void handleEvent(SVNEvent event, double progress) throws SVNException { + } + + @Override + public void checkCancelled() throws SVNCancelException { + } + }), + false, true, SVNDepth.INFINITY, false, false, true, false, SVNDebugLog.getDefaultLog()); SVNRepository repository = null; SVNRepository repository2 = null; @@ -204,7 +209,7 @@ public class CompareWithBranchAction extends AnAction implements DumbAware { long rev = repository.getLatestRevision(); repository2 = vcs.createRepository(url.toString()); SvnDiffEditor diffEditor = new SvnDiffEditor(myVirtualFile, repository2, rev, true); - repository.diff(url, rev, rev, null, true, true, false, reporter17, + repository.diff(url, rev, rev, null, true, SVNDepth.INFINITY, false, reporter17, SVNCancellableEditor.newInstance(diffEditor, new SvnProgressCanceller(), null)); changes.addAll(diffEditor.getChangesMap().values()); } finally { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn17/rollback/SvnRollbackEnvironment17.java b/plugins/svn4idea/src/org/jetbrains/idea/svn17/rollback/SvnRollbackEnvironment17.java index 5cb0dfee0091..dd6655b1e84b 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn17/rollback/SvnRollbackEnvironment17.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn17/rollback/SvnRollbackEnvironment17.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.svn17.rollback; +import com.intellij.openapi.application.PathManager; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Trinity; import com.intellij.openapi.util.io.FileUtil; @@ -34,12 +35,14 @@ import org.jetbrains.idea.svn17.MoveRenameReplaceCheck; import org.jetbrains.idea.svn17.SvnBundle; import org.jetbrains.idea.svn17.SvnChangeProvider; import org.jetbrains.idea.svn17.SvnVcs17; +import org.tmatesoft.svn.core.SVNDepth; import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.wc.*; import java.io.File; +import java.io.IOException; import java.util.*; /** @@ -86,6 +89,9 @@ public class SvnRollbackEnvironment17 extends DefaultRollbackEnvironment { } }); + final List> fromTo = collector.getFromTo(); + final List> fromToModified = new ArrayList>(); + moveRenamesToTmp(exceptions, fromTo, fromToModified); // adds (deletes) // deletes (adds) // modifications @@ -95,13 +101,8 @@ public class SvnRollbackEnvironment17 extends DefaultRollbackEnvironment { final List edits = checker.getForEdits(); reverter.revert(edits.toArray(new File[edits.size()]), false); - final List> fromTo = collector.getFromTo(); - for (Trinity trinity : fromTo) { - if (trinity.getFirst().exists()) { - // parent successfully renamed/moved - trinity.getSecond().renameTo(trinity.getThird()); - } - } + moveGroup(exceptions, fromToModified); + final List> toBeDeleted = collector.getToBeDeleted(); for (Pair pair : toBeDeleted) { if (pair.getFirst().exists()) { @@ -110,6 +111,38 @@ public class SvnRollbackEnvironment17 extends DefaultRollbackEnvironment { } } + private void moveRenamesToTmp(List exceptions, + List> fromTo, + List> fromToModified) { + try { + final File tmp = FileUtil.createTempDirectory("forRename", ""); + for (Trinity trinity : fromTo) { + final File tmpFile = FileUtil.createTempFile(tmp, trinity.getSecond().getName(), "", false); + tmpFile.mkdirs(); + FileUtil.delete(tmpFile); + FileUtil.rename(trinity.getSecond(), tmpFile); + fromToModified.add(new Trinity(trinity.getFirst(), tmpFile, trinity.getThird())); + } + } + catch (IOException e) { + exceptions.add(new VcsException(e)); + } + } + + private void moveGroup(List exceptions, List> fromTo) { + for (Trinity trinity : fromTo) { + if (trinity.getFirst().exists()) { + // parent successfully renamed/moved + try { + FileUtil.rename(trinity.getSecond(), trinity.getThird()); + } + catch (IOException e) { + exceptions.add(new VcsException(e)); + } + } + } + } + private static class Reverter { private final SVNWCClient myClient; private final List myExceptions; @@ -122,7 +155,7 @@ public class SvnRollbackEnvironment17 extends DefaultRollbackEnvironment { public void revert(final File[] files, final boolean recursive) { if (files.length == 0) return; try { - myClient.doRevert(files, recursive); + myClient.doRevert(files, recursive ? SVNDepth.INFINITY : SVNDepth.EMPTY, null); } catch (SVNException e) { if (e.getErrorMessage().getErrorCode() != SVNErrorCode.WC_NOT_DIRECTORY) { diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java index 7ed6a12f8417..721f5adc485a 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnRenameTest.java @@ -221,7 +221,6 @@ public class SvnRenameTest extends SvnTestCase { } // IDEA-13824 - @Bombed(user = "irengrig", month = Calendar.FEBRUARY, day = 20, description = "waiting for svnkit bugfix SVNKIT-136") @Test public void testRenameFileRenameDir() throws Exception { final VirtualFile child = prepareDirectoriesForRename(); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/MultipleRefreshesTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/MultipleRefreshesTest.java index 52efd8412809..95c19f71fb37 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/MultipleRefreshesTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/MultipleRefreshesTest.java @@ -47,7 +47,9 @@ public class MultipleRefreshesTest { @Parameterized.Parameters public static List data() { final ArrayList result = new ArrayList(10); - for (int i = 0; i < 100; i++) { + //for (int i = 0; i < 100; i++) { + // todo debug + for (int i = 0; i < 1; i++) { result.add(new Object[]{i}); } return result; diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnNativeListsTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnNativeListsTest.java index f55da009f2eb..99eb4024063f 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnNativeListsTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnNativeListsTest.java @@ -51,6 +51,8 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); @@ -77,9 +79,13 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); checkin(); deleteFileInCommand(file); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); @@ -97,9 +103,13 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); checkin(); editFileInCommand(myProject, file, "111"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); @@ -118,15 +128,21 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); checkin(); editFileInCommand(myProject, file, "111"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); verify(runSvn("status"), "", "--- Changelist 'newOne':", "M a.txt"); renameFileInCommand(file, "b.txt"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); verify(runSvn("status"), "", "--- Changelist 'newOne':", "A + b.txt", "D a.txt"); @@ -147,10 +163,14 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); checkin(); renameFileInCommand(file, "b.txt"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); @@ -169,16 +189,22 @@ public class SvnNativeListsTest extends SvnTestCase { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD); enableSilentOperation(VcsConfiguration.StandardConfirmation.REMOVE); final VirtualFile file = createFileInCommand("a.txt", "old content"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); checkin(); renameFileInCommand(file, "b.txt"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); ensureAddedToNativeList(); verify(runSvn("status"), "", "--- Changelist 'newOne':", "A + b.txt", "D a.txt"); renameFileInCommand(file, "c.txt"); + myDirtyScopeManager.markEverythingDirty(); + myChangeListManager.ensureUpToDate(false); sleepABit(); verify(runSvn("status"), "", "--- Changelist 'newOne':", "A + c.txt", "D a.txt"); diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnRenameTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnRenameTest.java index e16842214e91..00808a2641bc 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnRenameTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnRenameTest.java @@ -178,7 +178,6 @@ public class SvnRenameTest extends SvnTestCase { return "{" + StringUtil.join(changes, StringUtil.createToStringFunction(Change.class), ",") + "}"; } - @Bombed(user = "irengrig", year = 2012, month = Calendar.FEBRUARY, day = 15) // IDEADEV-19223 @Test public void testRollbackRenameWithUnversioned() throws Exception { @@ -226,7 +225,7 @@ public class SvnRenameTest extends SvnTestCase { Assert.assertTrue(new File(unversionedDirFile, "c.txt").exists()); } - @Bombed(user = "irengrig", year = 2012, month = Calendar.FEBRUARY, day = 15) + @Bombed(user = "irengrig", year = 2012, month = Calendar.FEBRUARY, day = 25, description = "waiting for svnkit fix (reported 18.02)") // IDEA-13824 @Test public void testRenameFileRenameDir() throws Exception { diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnTestDirtyScopeStateTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnTestDirtyScopeStateTest.java index f5e93a00387c..04b11bb95601 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnTestDirtyScopeStateTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn17/SvnTestDirtyScopeStateTest.java @@ -25,7 +25,6 @@ public class SvnTestDirtyScopeStateTest extends SvnTestCase { myInitChangeListManager = false; } - @Bombed(user = "irengrig", year = 2012, month = Calendar.FEBRUARY, day = 15) @Test public void testWhatIsDirty() throws Exception { enableSilentOperation(VcsConfiguration.StandardConfirmation.ADD);