[ 
https://issues.apache.org/jira/browse/MBUILDCACHE-64?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760948#comment-17760948
 ] 

ASF GitHub Bot commented on MBUILDCACHE-64:
-------------------------------------------

AlexanderAshitkin commented on code in PR #91:
URL: 
https://github.com/apache/maven-build-cache-extension/pull/91#discussion_r1311669985


##########
src/main/java/org/apache/maven/buildcache/checksum/TreeWalkerPathMatcher.java:
##########
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.buildcache.checksum;
+
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+
+/**
+ * A path matcher with some extra info
+ */
+public class TreeWalkerPathMatcher implements PathMatcher {
+
+    /**
+     * True if the matching should stop exploring the directory tree further 
away
+     */
+    private final boolean matchingSkipSubtree;
+
+    /**
+     * Wrapped regular path matcher
+     */
+    private final PathMatcher pathMatcher;

Review Comment:
   There might be room for error here. For example, the same file with 
back/forward slashes is not matched on my workstation:
   ```java
           String linux = "dir/file.txt";
           String win = "dir\\file.txt";
           Path linuxPath = Paths.get(linux);
           Path winPath = Paths.get(win);
           System.out.println("linuxPath: " + linuxPath);
           System.out.println("winPath: " + winPath);
           PathMatcher linuxMatcher = 
FileSystems.getDefault().getPathMatcher("glob:" + linuxPath);
           System.out.println(linuxMatcher.matches(winPath));
           System.out.println(linuxMatcher.matches(linuxPath));
           ------OUT----
           linuxPath: dir/file.txt
           winPath: dir\file.txt
           false
           true
   ```
   I have no objections against the matcher as such. But I wouldn't rely on it 
without a test demonstrating the same results on Windows and Mac in the 
presence of exclusions.
   
   





> Apply global exclusions to folder names
> ---------------------------------------
>
>                 Key: MBUILDCACHE-64
>                 URL: https://issues.apache.org/jira/browse/MBUILDCACHE-64
>             Project: Maven Build Cache Extension
>          Issue Type: Bug
>    Affects Versions: 1.0.1
>            Reporter: Frank Wagner
>            Assignee: Olivier Lamy
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.1.0
>
>
> It is currently not possible to exclude folders by their name, like 
> {quote}<input>
> <global>
> <excludes>
> <exclude>node_modules</exclude>
> <exclude>dist</exclude>
> <exclude>build</exclude>
> </excludes>
> </global>
> ...
> {quote}
> That's because isFilteredOutSubpath(), 
> [https://github.com/apache/maven-build-cache-extension/blob/master/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java#L638,]
>  uses startWith on normalized absolute paths.
> That function could be enhanced with an additional criterion like in 
> [https://github.com/apache/maven-build-cache-extension/blob/master/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java#L510]
> {{filteredOutPaths.stream().anyMatch(it -> 
> it.getFileName().equals(entry.getFileName()))}}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to