in dev/codeowners/codeowners.go [141:170]
func (codeowners *githubOwners) checkSingleField(field string) error {
switch field[0] {
case '/':
// Allow only rules that wouldn't remove owners for previously
// defined rules.
for path := range codeowners.owners {
matches, err := filepath.Match(field, path)
if err != nil {
return err
}
if matches || strings.HasPrefix(field, path) {
return fmt.Errorf("%q would remove owners for %q", field, path)
}
if strings.HasPrefix(path, field) {
_, err := filepath.Rel(field, path)
if err == nil {
return fmt.Errorf("%q would remove owners for %q", field, path)
}
}
}
// Excluding other files is fine.
return nil
case '@':
return fmt.Errorf("rule with owner without path: %q", field)
default:
return fmt.Errorf("unexpected field found: %q", field)
}
}