folder/* should not ignore the folder itself, only the contents (#3267)

diff --git a/lib/src/ignore.dart b/lib/src/ignore.dart
index fbd93e8..ff22dff 100644
--- a/lib/src/ignore.dart
+++ b/lib/src/ignore.dart
@@ -464,6 +464,9 @@
         } else {
           expr += '.*';
         }
+      } else if (peekChar() == '/' || peekChar() == null) {
+        // /a/* should not match '/a/'
+        expr += '[^/]+';
       } else {
         // Handle a single '*'
         expr += '[^/]*';
@@ -520,7 +523,6 @@
     expr = '$expr/\$';
   } else {
     expr = '$expr/?\$';
-    // expr = '$expr\$';
   }
   try {
     return _IgnoreParseResult(
diff --git a/lib/src/validator/changelog.dart b/lib/src/validator/changelog.dart
index 694ace2..614eba2 100644
--- a/lib/src/validator/changelog.dart
+++ b/lib/src/validator/changelog.dart
@@ -21,7 +21,7 @@
       final changelog = entrypoint.root.changelogPath;
 
       if (changelog == null) {
-        warnings.add('Please add a`CHANGELOG.md` to your package. '
+        warnings.add('Please add a `CHANGELOG.md` to your package. '
             'See https://dart.dev/tools/pub/publishing#important-files.');
         return;
       }
diff --git a/lib/src/validator/gitignore.dart b/lib/src/validator/gitignore.dart
index 78bf9aa..4fb49b1 100644
--- a/lib/src/validator/gitignore.dart
+++ b/lib/src/validator/gitignore.dart
@@ -71,7 +71,7 @@
 
       if (ignoredFilesCheckedIn.isNotEmpty) {
         warnings.add('''
-${ignoredFilesCheckedIn.length} checked in ${pluralize('file', ignoredFilesCheckedIn.length)} ${ignoredFilesCheckedIn.length == 1 ? 'is' : 'are'} ignored by a `.gitignore`.
+${ignoredFilesCheckedIn.length} checked-in ${pluralize('file', ignoredFilesCheckedIn.length)} ${ignoredFilesCheckedIn.length == 1 ? 'is' : 'are'} ignored by a `.gitignore`.
 Previous versions of Pub would include those in the published package.
 
 Consider adjusting your `.gitignore` files to not ignore those files, and if you do not wish to
diff --git a/test/ignore_test.dart b/test/ignore_test.dart
index 42a189a..a8ab8ac 100644
--- a/test/ignore_test.dart
+++ b/test/ignore_test.dart
@@ -977,6 +977,13 @@
     'folder/a.txt': true,
   }),
 
+  TestData('folder/* does not ignore `folder` itself', {
+    '.': ['folder/*', '!folder/a.txt'],
+  }, {
+    'folder/a.txt': false,
+    'folder/b.txt': true,
+  }),
+
   // Case sensitivity
   TestData(
     'simple',