diff --git a/plugins/svn4idea/lib/sqljet.jar b/plugins/svn4idea/lib/sqljet.jar index 8f6deb52e0da..9052b2081825 100644 Binary files a/plugins/svn4idea/lib/sqljet.jar and b/plugins/svn4idea/lib/sqljet.jar differ diff --git a/plugins/svn4idea/lib/svnkit-javahl.jar b/plugins/svn4idea/lib/svnkit-javahl.jar index 0aabf3462f36..f3b71cd5884c 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 42fc82b86df2..c067b39fcbca 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 9294dd66d028..c63397138c6b 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 9f52a04c8f0a..72e1483fe77a 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/svn/SvnConfiguration.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfiguration.java index 741c24b6bf1c..aeca3931d9db 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfiguration.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnConfiguration.java @@ -76,6 +76,7 @@ public class SvnConfiguration implements PersistentStateComponent { public static final String UPGRADE_AUTO_16 = "auto1.6"; public static final String UPGRADE_AUTO_17 = "auto1.7"; public static final String UPGRADE_NONE = "none"; + public static final String CLEANUP_ON_START_RUN = "cleanupOnStartRun"; public String USER = ""; public String PASSWORD = ""; @@ -93,6 +94,7 @@ public class SvnConfiguration implements PersistentStateComponent { private SvnAuthenticationManager myInteractiveManager; private String myUpgradeMode; private SvnSupportOptions mySupportOptions; + private boolean myCleanupRun; private int myMaxAnnotateRevisions = ourMaxAnnotateRevisionsDefault; private final static long DEFAULT_SSH_TIMEOUT = 30 * 1000; public long mySSHConnectionTimeout = DEFAULT_SSH_TIMEOUT; @@ -405,6 +407,10 @@ public class SvnConfiguration implements PersistentStateComponent { if (autoUpdateAfterCommit != null) { myAutoUpdateAfterCommit = Boolean.parseBoolean(autoUpdateAfterCommit.getValue()); } + final Attribute cleanupRun = element.getAttribute(CLEANUP_ON_START_RUN); + if (cleanupRun != null) { + myCleanupRun = Boolean.parseBoolean(cleanupRun.getValue()); + } } @SuppressWarnings({"HardCodedStringLiteral"}) @@ -439,6 +445,7 @@ public class SvnConfiguration implements PersistentStateComponent { element.setAttribute("maxAnnotateRevisions", "" + myMaxAnnotateRevisions); element.setAttribute("myUseAcceleration", "" + myUseAcceleration); element.setAttribute("myAutoUpdateAfterCommit", "" + myAutoUpdateAfterCommit); + element.setAttribute(CLEANUP_ON_START_RUN, "" + myCleanupRun); } public boolean isAutoUpdateAfterCommit() { @@ -567,4 +574,12 @@ public class SvnConfiguration implements PersistentStateComponent { commandLine, nothing } + + public boolean isCleanupRun() { + return myCleanupRun; + } + + public void setCleanupRun(boolean cleanupRun) { + myCleanupRun = cleanupRun; + } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnVcs.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnVcs.java index 50f35abf515b..ed74c88a1a8b 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnVcs.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnVcs.java @@ -260,11 +260,45 @@ public class SvnVcs extends AbstractVcs { public void postStartup() { if (myProject.isDefault()) return; myCopiesRefreshManager = new SvnCopiesRefreshManager(myProject, (SvnFileUrlMappingImpl) getSvnFileUrlMapping()); + if (! myConfiguration.isCleanupRun()) { + if (cleanup17copies()) { + myConfiguration.setCleanupRun(true); + } + } invokeRefreshSvnRoots(true); myWorkingCopiesContent.activate(); } + private boolean cleanup17copies() { + final boolean[] result = new boolean[1]; + result[0] = true; + final Runnable runnable = new Runnable() { + public void run() { + myCopiesRefreshManager.getCopiesRefresh().synchRequest(); + final List infos = getAllWcInfos(); + for (WCInfo info : infos) { + if (WorkingCopyFormat.ONE_DOT_SEVEN.equals(info.getFormat())) { + try { + createWCClient().doCleanup(new File(info.getPath())); + } + catch (SVNException e) { + LOG.info(e); + result[0] = false; } + } + } + } + }; + + if (ApplicationManager.getApplication().isDispatchThread()) { + ProgressManager.getInstance().runProcessWithProgressSynchronously(runnable, + "Cleanup working copies", true, myProject); + } else { + runnable.run(); + } + return result[0]; + } + public void invokeRefreshSvnRoots(final boolean asynchronous) { REFRESH_LOG.debug("refresh: ", new Throwable()); if (myCopiesRefreshManager != null) {