Преглед изворни кода

Add a / to the beginning of a file matchin pattern if no / in rule.

See https://www.kernel.org/pub/software/scm/git/docs/gitignore.html
Reto Kaiser пре 12 година
родитељ
комит
6f72e9570c

+ 4 - 2
src/Composer/Package/Archiver/BaseExcludeFilter.php

@@ -116,9 +116,9 @@ abstract class BaseExcludeFilter
     /**
      * Generates an exclude pattern for filter() from a gitignore rule
      *
-     * @param string An exclude rule in gitignore syntax
+     * @param string $rule An exclude rule in gitignore syntax
      *
-     * @param array An exclude pattern
+     * @return array An exclude pattern
      */
     protected function generatePattern($rule)
     {
@@ -133,6 +133,8 @@ abstract class BaseExcludeFilter
         if (strlen($rule) && $rule[0] === '/') {
             $pattern .= '^/';
             $rule = substr($rule, 1);
+        } elseif (false === strpos($rule, '/') || strlen($rule) - 1 === strpos($rule, '/')) {
+            $pattern .= '/';
         }
 
         $pattern .= substr(Finder\Glob::toRegex($rule), 2, -2);

+ 1 - 0
tests/Composer/Test/Package/Archiver/ArchivableFilesFinderTest.php

@@ -113,6 +113,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
             'prefixF.*',
             '!/*/*/prefixF.foo',
             '',
+            'refixD.foo',
         )));
 
         // git does not currently support negative git attributes