CODEOWNERS syntax: /foobar/** vs /foobar/

3.7k views Asked by At

Assuming I want to enforce on some directory (e.g. foobar) on my git repository hosted on GitHub a code owner. In the CODEOWNERS file I can specify:

/foobar/** @someuser

But also this would be possible:

/foobar/ @someuser

Is there any difference between these two ways? Is it exactly the same?

Unfortunately, the documentation does not contain any description about this.

1

There are 1 answers

2
Dominik On BEST ANSWER

Two consecutive asterisks (**) in patterns matched against full pathname may have special meaning:

  • A leading ** followed by a slash means match in all directories. For example, **/foo matches file or directory foo anywhere, the same as pattern foo. **/foo/bar matches file or directory bar anywhere that is directly under directory foo.

  • A trailing /** matches everything inside. For example, abc/** matches all files inside directory abc, relative to the location of the .gitignore file, with infinite depth.

  • A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, a/**/b matches a/b, a/x/b, a/x/y/b and so on.

  • Other consecutive asterisks are considered regular asterisks and will match according to the previous rules.

Read more here: https://git-scm.com/docs/gitignore#_pattern_format

As far as I can tell both patterns you describe do the same. Since the CODEOWNERS file works (almost) the same as .gitignore ignoring a folder will ignore all of its sub-folder. So /foobar/** and /foobar/ should be the same.