Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package plexus-io for openSUSE:Factory checked in at 2026-10-20 12:38:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/plexus-io (Old) and /work/SRC/openSUSE:Factory/.plexus-io.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plexus-io" Tue Oct 20 12:38:35 2026 rev:10 rq:1386170 version:3.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/plexus-io/plexus-io.changes 2026-09-29 17:50:47.092725314 +0200 +++ /work/SRC/openSUSE:Factory/.plexus-io.new.3698736/plexus-io.changes 2026-10-20 12:40:10.250131316 +0200 @@ -1,0 +2,14 @@ +Mon Oct 19 05:28:52 UTC 2026 - Fridrich Strba <[email protected]> + +- Update to version 3.8.1 + * Bug Fixes + + Apply default excludes on Windows + * Documentation updates + + Drop the Source Xref menu item + * Maintenance + * Drop the Source Xref menu item + * Build + + Allow running the release drafter by hand + + Use the shared release-drafter workflow from master + +------------------------------------------------------------------- Old: ---- plexus-io-3.8.0.tar.gz New: ---- plexus-io-3.8.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ plexus-io.spec ++++++ --- /var/tmp/diff_new_pack.FK5BaP/_old 2026-10-20 12:40:11.145168775 +0200 +++ /var/tmp/diff_new_pack.FK5BaP/_new 2026-10-20 12:40:11.147168859 +0200 @@ -17,7 +17,7 @@ Name: plexus-io -Version: 3.8.0 +Version: 3.8.1 Release: 0 Summary: Plexus IO Components License: Apache-2.0 @@ -25,7 +25,7 @@ URL: https://github.com/codehaus-plexus/%{name} Source0: https://github.com/codehaus-plexus/%{name}/archive/%{name}-%{version}.tar.gz Source1: %{name}-build.xml -Source2: http://www.apache.org/licenses/LICENSE-2.0.txt +Source2: https://www.apache.org/licenses/LICENSE-2.0.txt BuildRequires: ant BuildRequires: apache-commons-io BuildRequires: atinject ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.FK5BaP/_old 2026-10-20 12:40:11.198170994 +0200 +++ /var/tmp/diff_new_pack.FK5BaP/_new 2026-10-20 12:40:11.203171203 +0200 @@ -1,6 +1,6 @@ -mtime: 1790596255 -commit: 400d8ac4eb814bfc6d81935c8fc72faf2583184b8f3ff661d89de9b464e30c53 +mtime: 1792388030 +commit: 9104cd3721263aa7c01669c712627acff9b9409ec96f8f9dec3c193e2b2c9117 url: https://src.opensuse.org/java-packages/plexus-io -revision: 400d8ac4eb814bfc6d81935c8fc72faf2583184b8f3ff661d89de9b464e30c53 +revision: 9104cd3721263aa7c01669c712627acff9b9409ec96f8f9dec3c193e2b2c9117 projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-10-19 07:33:50.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ plexus-io-3.8.0.tar.gz -> plexus-io-3.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/.github/workflows/maven.yml new/plexus-io-plexus-io-3.8.1/.github/workflows/maven.yml --- old/plexus-io-plexus-io-3.8.0/.github/workflows/maven.yml 2026-09-19 02:25:52.000000000 +0200 +++ new/plexus-io-plexus-io-3.8.1/.github/workflows/maven.yml 2026-10-18 22:54:10.000000000 +0200 @@ -17,7 +17,7 @@ name: GitHub CI -on: [push, pull_request] +on: [push, pull_request, workflow_dispatch] jobs: build: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/.github/workflows/release-drafter.yml new/plexus-io-plexus-io-3.8.1/.github/workflows/release-drafter.yml --- old/plexus-io-plexus-io-3.8.0/.github/workflows/release-drafter.yml 2026-09-19 02:25:52.000000000 +0200 +++ new/plexus-io-plexus-io-3.8.1/.github/workflows/release-drafter.yml 2026-10-18 22:54:10.000000000 +0200 @@ -20,7 +20,8 @@ push: branches: - master + workflow_dispatch: jobs: update_release_draft: name: Update Release Notes Draft - uses: codehaus-plexus/.github/.github/workflows/[email protected] + uses: codehaus-plexus/.github/.github/workflows/release-drafter.yml@master diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/pom.xml new/plexus-io-plexus-io-3.8.1/pom.xml --- old/plexus-io-plexus-io-3.8.0/pom.xml 2026-09-19 02:25:52.000000000 +0200 +++ new/plexus-io-plexus-io-3.8.1/pom.xml 2026-10-18 22:54:10.000000000 +0200 @@ -9,7 +9,7 @@ </parent> <artifactId>plexus-io</artifactId> - <version>3.8.0</version> + <version>3.8.1</version> <name>Plexus IO Components</name> <description>A component providing a uniform view of file, archive and in-memory resources, with selectors and @@ -18,7 +18,7 @@ <scm> <connection>scm:git:https://github.com/codehaus-plexus/plexus-io.git</connection> <developerConnection>${project.scm.connection}</developerConnection> - <tag>plexus-io-3.8.0</tag> + <tag>plexus-io-3.8.1</tag> <url>http://github.com/codehaus-plexus/plexus-io</url> </scm> <issueManagement> @@ -34,7 +34,7 @@ <properties> <slf4jVersion>1.7.36</slf4jVersion> - <project.build.outputTimestamp>2026-09-19T00:25:48Z</project.build.outputTimestamp> + <project.build.outputTimestamp>2026-10-18T20:54:05Z</project.build.outputTimestamp> </properties> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/src/main/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelector.java new/plexus-io-plexus-io-3.8.1/src/main/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelector.java --- old/plexus-io-plexus-io-3.8.0/src/main/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelector.java 2026-09-19 02:25:52.000000000 +0200 +++ new/plexus-io-plexus-io-3.8.1/src/main/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelector.java 2026-10-18 22:54:10.000000000 +0200 @@ -93,12 +93,20 @@ } private static @Nonnull String getCanonicalName(@Nonnull String pName) { - return pName.replace('/', File.separatorChar).replace('\\', File.separatorChar); + return getCanonicalName(pName, File.separatorChar); } - private String asPattern(@Nonnull String pPattern) { - String pattern = getCanonicalName(pPattern.trim()); - if (pattern.endsWith(File.separator)) { + private static @Nonnull String getCanonicalName(@Nonnull String pName, char separatorChar) { + return pName.replace('/', separatorChar).replace('\\', separatorChar); + } + + private static String asPattern(@Nonnull String pPattern) { + return asPattern(pPattern, File.separatorChar); + } + + private static String asPattern(@Nonnull String pPattern, char separatorChar) { + String pattern = getCanonicalName(pPattern.trim(), separatorChar); + if (pattern.endsWith(String.valueOf(separatorChar))) { pattern += "**"; } return pattern; @@ -132,19 +140,25 @@ public void setExcludes(@Nullable String[] excludes) { this.excludes = excludes; final String[] defaultExcludes = useDefaultExcludes ? FileUtils.getDefaultExcludes() : new String[] {}; - if (excludes == null) { - computedExcludes = MatchPatterns.from(defaultExcludes); - } else { - String[] temp = new String[excludes.length + defaultExcludes.length]; - for (int i = 0; i < excludes.length; i++) { - temp[i] = asPattern(excludes[i]); - } - - if (defaultExcludes.length > 0) { - System.arraycopy(defaultExcludes, 0, temp, excludes.length, defaultExcludes.length); - } - computedExcludes = MatchPatterns.from(temp); + computedExcludes = MatchPatterns.from(asExcludePatterns(excludes, defaultExcludes, File.separatorChar)); + } + + /** + * Converts the user's exclude patterns and the default excludes into patterns + * that use the given separator, the same separator {@link #isSelected(FileInfo)} + * uses for the names it matches. + */ + static String[] asExcludePatterns( + @Nullable String[] excludes, @Nonnull String[] defaultExcludes, char separatorChar) { + final int count = excludes == null ? 0 : excludes.length; + final String[] patterns = new String[count + defaultExcludes.length]; + for (int i = 0; i < count; i++) { + patterns[i] = asPattern(excludes[i], separatorChar); + } + for (int i = 0; i < defaultExcludes.length; i++) { + patterns[count + i] = asPattern(defaultExcludes[i], separatorChar); } + return patterns; } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/src/site/site.xml new/plexus-io-plexus-io-3.8.1/src/site/site.xml --- old/plexus-io-plexus-io-3.8.0/src/site/site.xml 2026-09-19 02:25:52.000000000 +0200 +++ new/plexus-io-plexus-io-3.8.1/src/site/site.xml 2026-10-18 22:54:10.000000000 +0200 @@ -9,7 +9,6 @@ <item name="File Mappers" href="filemappers.html"/> <item name="File Selectors" href="fileselectors.html"/> <item name="JavaDocs" href="apidocs/index.html"/> - <item name="Source Xref" href="xref/index.html"/> <!--item name="FAQ" href="faq.html"/--> </menu> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-io-plexus-io-3.8.0/src/test/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelectorTest.java new/plexus-io-plexus-io-3.8.1/src/test/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelectorTest.java --- old/plexus-io-plexus-io-3.8.0/src/test/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelectorTest.java 1970-01-01 01:00:00.000000000 +0100 +++ new/plexus-io-plexus-io-3.8.1/src/test/java/org/codehaus/plexus/components/io/fileselectors/IncludeExcludeFileSelectorTest.java 2026-10-18 22:54:10.000000000 +0200 @@ -0,0 +1,71 @@ +package org.codehaus.plexus.components.io.fileselectors; + +import javax.annotation.Nonnull; + +import java.io.InputStream; +import java.net.URL; + +import org.codehaus.plexus.components.io.resources.AbstractPlexusIoResource; +import org.codehaus.plexus.util.FileUtils; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class IncludeExcludeFileSelectorTest { + + /** + * {@link IncludeExcludeFileSelector#isSelected} matches names that use the platform separator, + * so every exclude pattern, including the default excludes, must use it too. Using a backslash + * here reproduces the Windows behaviour on any platform. + */ + @Test + void excludePatternsUseTheGivenSeparator() { + String[] patterns = IncludeExcludeFileSelector.asExcludePatterns( + new String[] {"bar/*", "foo/"}, new String[] {"**/.svn/**", "**/.git"}, '\\'); + + assertArrayEquals(new String[] {"bar\\*", "foo\\**", "**\\.svn\\**", "**\\.git"}, patterns); + } + + @Test + void defaultExcludesUseTheGivenSeparator() { + String[] patterns = IncludeExcludeFileSelector.asExcludePatterns(null, FileUtils.getDefaultExcludes(), '\\'); + + for (String pattern : patterns) { + assertFalse(pattern.contains("/"), pattern); + } + } + + @Test + void defaultExcludesApplyWithAndWithoutExcludes() { + IncludeExcludeFileSelector selector = new IncludeExcludeFileSelector(); + + selector.setExcludes(null); + assertFalse(selector.isSelected(resource(".svn/entries"))); + assertFalse(selector.isSelected(resource("foo/.git/config"))); + assertTrue(selector.isSelected(resource("foo/bar.txt"))); + + selector.setExcludes(new String[] {"**/*.gif"}); + assertFalse(selector.isSelected(resource(".svn/entries"))); + assertFalse(selector.isSelected(resource("foo/x.gif"))); + assertTrue(selector.isSelected(resource("foo/bar.txt"))); + + selector.setUseDefaultExcludes(false); + assertTrue(selector.isSelected(resource(".svn/entries"))); + assertFalse(selector.isSelected(resource("foo/x.gif"))); + } + + private static AbstractPlexusIoResource resource(String name) { + return new AbstractPlexusIoResource(name, 0, 0, true, false, true) { + @Nonnull + public InputStream getContents() { + throw new IllegalStateException("Not implemented"); + } + + public URL getURL() { + throw new IllegalStateException("Not implemented"); + } + }; + } +} ++++++ plexus-io-build.xml ++++++ --- /var/tmp/diff_new_pack.FK5BaP/_old 2026-10-20 12:40:11.598187735 +0200 +++ /var/tmp/diff_new_pack.FK5BaP/_new 2026-10-20 12:40:11.604187986 +0200 @@ -10,7 +10,7 @@ <property name="project.artifactId" value="plexus-io"/> <property name="project.groupId" value="org.codehaus.plexus"/> - <property name="project.version" value="3.8.0"/> + <property name="project.version" value="3.8.1"/> <property name="compiler.release" value="8"/> <property name="compiler.source" value="1.${compiler.release}"/>
