From d685279825d342a4f0c947bb19763d945a8e2b84 Mon Sep 17 00:00:00 2001 From: Daniel Beck Date: Tue, 24 Sep 2019 12:28:54 +0200 Subject: [PATCH 1/6] Use HTTPS URLs in pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index daefa756..6fe5e4a9 100644 --- a/pom.xml +++ b/pom.xml @@ -46,14 +46,14 @@ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ From 49103941d1832f3f0b3f5932c05f4a962b397258 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sat, 21 Aug 2021 16:14:14 -0700 Subject: [PATCH 2/6] [JENKINS-66326] Prepare SCM Sync Configuration for core Guava upgrade --- .../utils/Checksums.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/utils/Checksums.java b/src/main/java/hudson/plugins/scm_sync_configuration/utils/Checksums.java index c66ae455..c3a98306 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/utils/Checksums.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/utils/Checksums.java @@ -1,11 +1,10 @@ package hudson.plugins.scm_sync_configuration.utils; -import com.google.common.io.ByteStreams; -import com.google.common.io.Files; - import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.zip.CRC32; +import java.util.zip.CheckedInputStream; import java.util.zip.Checksum; /** @@ -13,14 +12,33 @@ * Utility class allowing to provide easy access to jenkins files checksums */ public class Checksums { + + private static final int BUF_SIZE = 0x1000; // 4K + public static boolean fileAndByteArrayContentAreEqual(File file, byte[] content) throws IOException { if(!file.exists()){ return content == null || content.length == 0; } + long fileChecksum; + CheckedInputStream in = null; + try { + in = new CheckedInputStream(new FileInputStream(file), createChecksum()); + byte[] buffer = new byte[BUF_SIZE]; + while (in.read(buffer, 0, buffer.length) >= 0) { + // keep updating checksum + } + fileChecksum = in.getChecksum().getValue(); + } finally { + if (in != null) { + in.close(); + } + } + Checksum checksum = createChecksum(); - long fileChecksum = Files.getChecksum(file, checksum); - long contentChecksum = ByteStreams.getChecksum(ByteStreams.newInputStreamSupplier(content), checksum); + checksum.update(content, 0, content.length); + long contentChecksum = checksum.getValue(); + return fileChecksum == contentChecksum; } From abad6c51e503eb47abcbfdb6b4d574a478239141 Mon Sep 17 00:00:00 2001 From: sunnyqeen Date: Fri, 23 Sep 2022 10:55:22 +0200 Subject: [PATCH 3/6] jelly files table to div --- .../ScmSyncConfigurationPlugin/config.jelly | 9 +++++---- .../ScmSyncConfigurationPageDecorator/footer.jelly | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly index 043a21a3..676f9650 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly @@ -1,14 +1,15 @@ + - +
-
+
@@ -40,12 +41,12 @@ --> - +
-
+
diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationPageDecorator/footer.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationPageDecorator/footer.jelly index a27be1d2..16a827d0 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationPageDecorator/footer.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationPageDecorator/footer.jelly @@ -1,3 +1,4 @@ + @@ -68,13 +69,13 @@ } - +
-
+
\ No newline at end of file From be6afb725d6203888c40a355ee0b2fc4494393d7 Mon Sep 17 00:00:00 2001 From: sunnyqeen Date: Tue, 27 Sep 2022 17:35:37 +0200 Subject: [PATCH 4/6] bugfix for windwows platform --- .../extensions/ScmSyncConfigurationItemListener.java | 2 +- .../strategies/AbstractScmSyncStrategy.java | 2 ++ .../model/JobOrFolderConfigurationEntityMatcher.java | 2 ++ .../strategies/model/PatternsEntityMatcher.java | 3 ++- .../java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java | 2 +- .../hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java | 2 +- 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationItemListener.java b/src/main/java/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationItemListener.java index 3a0cce4a..55fdf473 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationItemListener.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/extensions/ScmSyncConfigurationItemListener.java @@ -57,7 +57,7 @@ public void onLocationChanged(Item item, String oldFullName, String newFullName) // Figure out where the item previously might have been. File oldDir = null; Jenkins jenkins = Jenkins.getInstance(); - int i = oldFullName.lastIndexOf('/'); + int i = oldFullName.replace('\\', '/').lastIndexOf('/'); String oldSimpleName = i > 0 ? oldFullName.substring(i+1) : oldFullName; Object oldParent = i > 0 ? jenkins.getItemByFullName(oldFullName.substring(0, i)) : jenkins; Object newParent = item.getParent(); diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/AbstractScmSyncStrategy.java b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/AbstractScmSyncStrategy.java index 4723403f..1c7b9449 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/AbstractScmSyncStrategy.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/AbstractScmSyncStrategy.java @@ -99,11 +99,13 @@ public List collect(File directory) { if (pathRelativeToRoot == null) { throw new IllegalArgumentException(directory.getAbsolutePath() + " is not under " + jenkinsRoot.getAbsolutePath()); } + pathRelativeToRoot = pathRelativeToRoot.replace('\\', '/'); final String restrictedPath = pathRelativeToRoot.endsWith("/") ? pathRelativeToRoot : pathRelativeToRoot + '/'; selector = new FileSelector() { @Override public boolean isSelected(File basedir, String pathRelativeToBasedir, File file) throws BuildException { // Only include directories leading to our directory (parent directories and the directory itself) and then whatever is below. + pathRelativeToBasedir = pathRelativeToBasedir.replace('\\', '/'); if (file.isDirectory()) { pathRelativeToBasedir = pathRelativeToBasedir.endsWith("/") ? pathRelativeToBasedir : pathRelativeToBasedir + '/'; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/JobOrFolderConfigurationEntityMatcher.java b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/JobOrFolderConfigurationEntityMatcher.java index 2da878c5..49532335 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/JobOrFolderConfigurationEntityMatcher.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/JobOrFolderConfigurationEntityMatcher.java @@ -53,6 +53,7 @@ public boolean matches(Saveable saveable, File file) { @Override public boolean matches(Saveable saveable, String pathRelativeToRoot, boolean isDirectory) { if ((saveable instanceof AbstractItem) && pathRelativeToRoot != null) { + pathRelativeToRoot = pathRelativeToRoot.replace('\\', '/'); if (isDirectory) { if (!pathRelativeToRoot.endsWith("/")) { pathRelativeToRoot += '/'; @@ -80,6 +81,7 @@ public boolean isSelected(File basedir, String pathRelativeToBaseDir, File file) if (originalSelector != null && !originalSelector.isSelected(basedir, pathRelativeToBaseDir, file)) { return false; } + pathRelativeToBaseDir = pathRelativeToBaseDir.replace('\\', '/'); if (CONFIGS_TO_MATCH.matcher(pathRelativeToBaseDir).matches()) { return true; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/PatternsEntityMatcher.java b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/PatternsEntityMatcher.java index cbf74aa5..dd6150fa 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/PatternsEntityMatcher.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/model/PatternsEntityMatcher.java @@ -35,6 +35,7 @@ public boolean matches(Saveable saveable, File file) { public boolean matches(Saveable saveable, String pathRelativeToRoot, boolean isDirectory) { if (pathRelativeToRoot != null) { // Guard our own SCM workspace and the war directory. User-defined includes might inadvertently include those if they start with * or **! + pathRelativeToRoot = pathRelativeToRoot.replace('\\', '/'); if (pathRelativeToRoot.equals(SCM_WORKING_DIRECTORY) || pathRelativeToRoot.startsWith(SCM_WORKING_DIRECTORY + '/')) { return false; } else if (pathRelativeToRoot.equals(WAR_DIRECTORY) || pathRelativeToRoot.startsWith(WAR_DIRECTORY + '/')) { @@ -47,7 +48,7 @@ public boolean matches(Saveable saveable, String pathRelativeToRoot, boolean isD return true; } else if (isDirectory) { // pathRelativeFromRoot is be a directory, and the pattern end in a file name. In this case, we must claim a match. - int i = pattern.lastIndexOf('/'); + int i = pattern.replace('\\', '/').lastIndexOf('/'); if (directoryName == null) { directoryName = pathRelativeToRoot.endsWith("/") ? pathRelativeToRoot.substring(0, pathRelativeToRoot.length() - 1) : pathRelativeToRoot; } diff --git a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java index 99b91c6e..9e9d1c0e 100644 --- a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java +++ b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java @@ -17,7 +17,7 @@ public void initRepo(File path) throws Exception { } public String createUrl(String url) { - return "scm:git:" + url; + return "scm:git:file://" + url.replace('\\', '/'); } public Class getClazz() { diff --git a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java index 337dd9bd..ac2b5d90 100644 --- a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java +++ b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java @@ -14,7 +14,7 @@ public void initRepo(File path) throws Exception { } public String createUrl(String url) { - return "scm:svn:file://" + url; + return "scm:svn:file://" + url.replace('\\', '/'); } public Class getClazz() { From c84d7255770eda769cfc29ccc18e67355c59f8ad Mon Sep 17 00:00:00 2001 From: sunnyqeen Date: Sat, 1 Oct 2022 14:26:53 +0200 Subject: [PATCH 5/6] add escape-by-default header to all jelly files --- .../help/manualSynchronizationIncludes.jelly | 1 + .../ScmSyncConfigurationPlugin/scms/git/config.jelly | 1 + .../ScmSyncConfigurationPlugin/scms/git/url-help.jelly | 1 + .../ScmSyncConfigurationPlugin/scms/none/config.jelly | 1 + .../ScmSyncConfigurationPlugin/scms/svn/config.jelly | 1 + .../ScmSyncConfigurationPlugin/scms/svn/url-help.jelly | 1 + .../resources/hudson/plugins/scm_sync_configuration/reload.jelly | 1 + src/main/resources/index.jelly | 1 + 8 files changed, 8 insertions(+) diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/help/manualSynchronizationIncludes.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/help/manualSynchronizationIncludes.jelly index 71ef9cee..9531eb63 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/help/manualSynchronizationIncludes.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/help/manualSynchronizationIncludes.jelly @@ -1,3 +1,4 @@ +
${%List of ant-like includes allowing to specify additional files to synchronize with the repository}.
diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/config.jelly index c12808fd..493e648f 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/config.jelly @@ -1,3 +1,4 @@ + diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/url-help.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/url-help.jelly index e5c23d37..e3489c22 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/url-help.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/git/url-help.jelly @@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> +
diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/none/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/none/config.jelly index 92945348..31786667 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/none/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/none/config.jelly @@ -1,3 +1,4 @@ + \ No newline at end of file diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/config.jelly index 4fdfb427..631b07b2 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/config.jelly @@ -1,3 +1,4 @@ + diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/url-help.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/url-help.jelly index 28acfe2b..9c9cd694 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/url-help.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/scms/svn/url-help.jelly @@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> +
diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/reload.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/reload.jelly index 49d20bf4..92010413 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/reload.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/reload.jelly @@ -1,3 +1,4 @@ + diff --git a/src/main/resources/index.jelly b/src/main/resources/index.jelly index 4708b457..4efed9a1 100644 --- a/src/main/resources/index.jelly +++ b/src/main/resources/index.jelly @@ -1,3 +1,4 @@ +
This plugin allows you to synchronize your hudson configuration files with an SCM, allowing you to specify a commit message every time a config file is modified.
\ No newline at end of file From ab8a34ba9edbc2b1aa736b26845c95b35703a52c Mon Sep 17 00:00:00 2001 From: sunnyqeen Date: Mon, 3 Oct 2022 15:15:30 +0200 Subject: [PATCH 6/6] fix file protocol in test --- .../java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java | 2 +- .../hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java index 9e9d1c0e..150341bd 100644 --- a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java +++ b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestGit.java @@ -17,7 +17,7 @@ public void initRepo(File path) throws Exception { } public String createUrl(String url) { - return "scm:git:file://" + url.replace('\\', '/'); + return "scm:git:file:///" + url.replace('\\', '/'); } public Class getClazz() { diff --git a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java index ac2b5d90..0613eb50 100644 --- a/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java +++ b/src/test/java/hudson/plugins/test/utils/scms/ScmUnderTestSubversion.java @@ -14,7 +14,7 @@ public void initRepo(File path) throws Exception { } public String createUrl(String url) { - return "scm:svn:file://" + url.replace('\\', '/'); + return "scm:svn:file:///" + url.replace('\\', '/'); } public Class getClazz() {