From 2b8332069a76fe494d4b98c97e807db2bf5bc95f Mon Sep 17 00:00:00 2001 From: thkim Date: Tue, 12 Jan 2021 08:56:18 +0900 Subject: [PATCH] [JENKINS-10222]cleaning out workspace unnecessarily when polling SCM (SVN) --- .../java/hudson/scm/subversion/UpdateUpdater.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/hudson/scm/subversion/UpdateUpdater.java b/src/main/java/hudson/scm/subversion/UpdateUpdater.java index 5b30261d8..e214960e9 100755 --- a/src/main/java/hudson/scm/subversion/UpdateUpdater.java +++ b/src/main/java/hudson/scm/subversion/UpdateUpdater.java @@ -44,6 +44,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * {@link WorkspaceUpdater} that uses "svn update" as much as possible. @@ -85,10 +86,10 @@ protected SvnCommandToUse getSvnCommandToUse() throws IOException { try { SVNInfo svnInfo = parseSvnInfo(module); - String url = location.getSVNURL().toString(); - String wcUrl = svnInfo.getURL().toString(); + SVNURL url = location.getSVNURL(); + SVNURL wcUrl = svnInfo.getURL(); - if (!wcUrl.equals(url)) { + if (!isEqualsRepository(url, wcUrl)) { if (isSameRepository(location, svnInfo)) { listener.getLogger().println("Switching from " + wcUrl + " to " + url); return SvnCommandToUse.SWITCH; @@ -109,6 +110,14 @@ protected SvnCommandToUse getSvnCommandToUse() throws IOException { return SvnCommandToUse.UPDATE; } + private boolean isEqualsRepository(SVNURL url1, SVNURL url2) { + return Objects.equals(url1.getProtocol(), url2.getProtocol()) + && url1.getPort() == url2.getPort() + && Objects.equals(url1.getHost(), url2.getHost()) + && Objects.equals(url1.getPath(), url2.getPath()) + && Objects.equals(url1.getUserInfo(), url2.getUserInfo()); + } + private boolean isSameRepository(ModuleLocation location, SVNInfo svnkitInfo) throws SVNException { return location.getSVNURL().toString().startsWith(svnkitInfo.getRepositoryRootURL().toString()); }