Skip to content

Commit 6faa71f

Browse files
c-dilksbaltzell
authored andcommitted
feat: CODEOWNERS file
1 parent 1caa952 commit 6faa71f

File tree

4 files changed

+339
-0
lines changed

4 files changed

+339
-0
lines changed

.github/codeowners/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
This directory contains automation that helped us generate the [`CODEOWNERS`](/CODEOWNERS) file.
2+
3+
- `main_dirs.txt` is a list of the "main" directories for which we want a list of code owners; this was generated with `find -d`, and manually choosing the "main" directories
4+
- `generate-codeowners.rb` reads `main_dirs.txt` and uses `git` logs to find the unique set of authors for all of the files within each directory; it then writes a new `CODEOWNERS` file
5+
- finally, we go through the `CODEOWNERS` file manually to decide which contributors to keep; those contributors will be notified in PR reviews, so for example we may not want to include contributors who are not involved in the project any more
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#!/usr/bin/env ruby
2+
# run this script from the TOP level directory
3+
4+
GithubHandles = {
5+
'<Adam Hobart>' => 'ajhobart',
6+
'<Alessandra Filippi>' => 'afilippi67',
7+
'<Andrey Kim>' => 'drewkenjo',
8+
'<Blake Huck>' => 'huckb',
9+
'<Bruno Benkel>' => 'bleaktwig',
10+
'<Christopher Dilks>' => 'c-dilks',
11+
'<Cole Smith>' => 'forcar',
12+
'<Connor Pecar>' => 'cpecar',
13+
'<David Heddle>' => 'heddle',
14+
'<David Payette>' => 'dpayette',
15+
'<Efrain Patrick Segarra>' => '',
16+
'<Efrain Segarra>' => '',
17+
'<Florian Hauenstein>' => 'hauenst',
18+
'<Francesco Bossu>' => 'fbossu',
19+
'<Francois-Xavier Girod>' => 'fxgirod',
20+
'<Gagik Gavalian>' => 'gavalian',
21+
'<Giovanni Angelini>' => 'gangel85',
22+
'<Guillaume Christiaens>' => 'Guillaum-C',
23+
'<Joseph Newton>' => 'josnewton',
24+
'<Justin Goodwill>' => '',
25+
'<L Smith>' => 'forcar',
26+
'<Latif Kabir>' => 'latifkabir',
27+
'<Marco Contalbrigo>' => 'mcontalb',
28+
'<Mathieu Ouillon>' => 'mathieuouillon',
29+
'<Maurik Holtrop>' => 'mholtrop',
30+
'<Maxime Defurne>' => 'mdefurne',
31+
'<Michael Hoffer>' => 'miho',
32+
'<Nathan Baltzell>' => 'baltzell',
33+
'<Nathan Harrison>' => 'naharrison',
34+
'<Nick Markov>' => 'markovnick',
35+
'<Noemie Pilleux-LOCAL>' => 'N-Plx',
36+
'<Peter EJ Davies>' => '',
37+
'<Pierre Chatagnon>' => 'PChatagnon',
38+
'<Rafayel Paremuzyan>' => 'rafopar',
39+
'<Raffaella De Vita>' => 'raffaelladevita',
40+
'<Reynier Cruz Torres>' => '',
41+
'<Rong Wang>' => '',
42+
'<Silvia Nicolai>' => '',
43+
'<Sylvester Joosten>' => 'sly2j',
44+
'<Tongtong Cao>' => 'tongtongcao',
45+
'<Vardan Gyurjyan>' => 'gurjyan',
46+
'<Veronique Ziegler>' => 'zieglerv',
47+
'<ajhobart>' => 'ajhobart',
48+
'<colesmith>' => 'forcar',
49+
'<cqplatt>' => 'cqplatt',
50+
'<dcpayette>' => 'dcpayette',
51+
'<dependabot[bot]>' => '',
52+
'<efuchey>' => 'efuchey',
53+
'<hattawy>' => 'Hattawy',
54+
'<huckb>' => 'huckb',
55+
'<jwgibbs>' => 'jwgibbs',
56+
'<mariangela-bondi>' => 'mariangela-bondi',
57+
'<marmstr4>' => 'marmstr4',
58+
'<mcontalb>' => 'mcontalb',
59+
'<mpaolone>' => 'mpaolone',
60+
'<rtysonCLAS12>' => 'rtysonCLAS12',
61+
'<tongtongcao>' => 'tongtongcao',
62+
'<veronique>' => 'zieglerv',
63+
}
64+
65+
codeowners = File.open('CODEOWNERS.GENERATED', 'w')
66+
unknown_authors = []
67+
68+
File.readlines('.github/codeowners/main_dirs.txt').map(&:chomp).each do |line|
69+
if line.match? /^#/ or line.empty?
70+
codeowners.puts line
71+
next
72+
end
73+
74+
if line == '*'
75+
codeowners.puts [line, '@baltzell', '@raffaelladevita', '@c-dilks'].join(' ')
76+
next
77+
end
78+
79+
puts line
80+
these_authors = []
81+
file_list = `git ls-files #{line.sub /\/\*$/, ''}`.split "\n"
82+
file_list.each do |file|
83+
puts " - #{file}"
84+
authors = `git shortlog -s -n -- '#{file}'`.split("\n").map do |line|
85+
"<" + line.split(' ')[1..-1].join(' ') + ">"
86+
end
87+
handles = authors.map do |author|
88+
handle = GithubHandles[author]
89+
if handle != ''
90+
"@#{handle}"
91+
else
92+
unknown_authors << author
93+
author
94+
end
95+
end.reject{|h|h.match?(/dependabot/)}
96+
these_authors += handles
97+
end
98+
codeowners.puts "#{line.gsub(' ','\ ')} #{these_authors.uniq.join(' ')}"
99+
100+
end
101+
102+
unless unknown_authors.empty?
103+
$stderr.puts "WARNING: the following authors have unknown GitHub handles:"
104+
$stderr.puts unknown_authors.uniq.sort
105+
end
106+
107+
codeowners.close

.github/codeowners/main_dirs.txt

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# primary maintainers
2+
*
3+
4+
# infrastructure
5+
.github/*
6+
bin/*
7+
docs/*
8+
external-dependencies/*
9+
libexec/*
10+
parent/*
11+
12+
# common-tools
13+
common-tools/clara-io/*
14+
common-tools/clas-analysis/*
15+
common-tools/clas-io/*
16+
common-tools/clas-jcsg/*
17+
common-tools/clas-logging/*
18+
common-tools/clas-math/*
19+
common-tools/clas-physics/*
20+
common-tools/clas-reco/*
21+
common-tools/clas-tracking/*
22+
common-tools/clas-utils/*
23+
common-tools/cnuphys/*
24+
common-tools/coat-lib/*
25+
common-tools/parent/*
26+
common-tools/swim-tools/*
27+
28+
# common-tools / clas-detector
29+
common-tools/clas-detector/src/main/java/org/jlab/detector/banks/*
30+
common-tools/clas-detector/src/main/java/org/jlab/detector/base/*
31+
common-tools/clas-detector/src/main/java/org/jlab/detector/calib/*
32+
common-tools/clas-detector/src/main/java/org/jlab/detector/decode/*
33+
common-tools/clas-detector/src/main/java/org/jlab/detector/epics/*
34+
common-tools/clas-detector/src/main/java/org/jlab/detector/examples/*
35+
common-tools/clas-detector/src/main/java/org/jlab/detector/helicity/*
36+
common-tools/clas-detector/src/main/java/org/jlab/detector/scalers/*
37+
common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/*
38+
common-tools/clas-detector/src/main/java/org/jlab/detector/view/*
39+
common-tools/clas-detector/src/test/*
40+
41+
# common-tools / clas-geometry
42+
common-tools/clas-geometry/src/main/java/org/jlab/detector/*
43+
common-tools/clas-geometry/src/main/java/org/jlab/geom/abs/*
44+
common-tools/clas-geometry/src/main/java/org/jlab/geom/base/*
45+
common-tools/clas-geometry/src/main/java/org/jlab/geom/component/*
46+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/*
47+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/alert/*
48+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/bst/*
49+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/cnd/*
50+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/dc/*
51+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/ec/*
52+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/fmt/*
53+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/ft/*
54+
common-tools/clas-geometry/src/main/java/org/jlab/geom/detector/ftof/*
55+
common-tools/clas-geometry/src/main/java/org/jlab/geom/fx/*
56+
common-tools/clas-geometry/src/main/java/org/jlab/geom/geant/*
57+
common-tools/clas-geometry/src/main/java/org/jlab/geom/gemc/*
58+
common-tools/clas-geometry/src/main/java/org/jlab/geom/gui/*
59+
common-tools/clas-geometry/src/main/java/org/jlab/geom/prim/*
60+
common-tools/clas-geometry/src/main/java/org/jlab/geom/view/*
61+
62+
# etc
63+
etc/bankdefs/*
64+
etc/benchmarks/*
65+
etc/data/*
66+
etc/ejml/*
67+
etc/logging/*
68+
etc/nnet/*
69+
etc/services/*
70+
71+
# reconstruction
72+
reconstruction/alert/*
73+
reconstruction/band/*
74+
reconstruction/bg/*
75+
reconstruction/cnd/*
76+
reconstruction/cvt/*
77+
reconstruction/dc/*
78+
reconstruction/eb/*
79+
reconstruction/ec/*
80+
reconstruction/ec/src/*
81+
reconstruction/fmt/*
82+
reconstruction/ft/*
83+
reconstruction/htcc/*
84+
reconstruction/ltcc/*
85+
reconstruction/mc/*
86+
reconstruction/mltn/*
87+
reconstruction/postproc/*
88+
reconstruction/raster/*
89+
reconstruction/rich/*
90+
reconstruction/rtpc/*
91+
reconstruction/swaps/*
92+
reconstruction/tof/*
93+
reconstruction/urwell/*
94+
reconstruction/vtx/*
95+
96+
# validation
97+
validation/*

CODEOWNERS

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
##################################################################################
2+
# | Name | GitHub Handle |
3+
# | ---- | ------------- |
4+
# | Adam Hobart | ajhobart |
5+
# | Alessandra Filippi | afilippi67 |
6+
# | Andrey Kim | drewkenjo |
7+
# | Blake Huck | huckb |
8+
# | Bruno Benkel | bleaktwig |
9+
# | Christopher Dilks | c-dilks |
10+
# | Cole Smith | forcar |
11+
# | Connor Pecar | cpecar |
12+
# | David Heddle | heddle |
13+
# | Silvia Niccolai | silvianic |
14+
# | David Payette | dpayette |
15+
# | Felix Touchte Codjo | ftouchte |
16+
# | Florian Hauenstein | hauenst |
17+
# | Francesco Bossu | fbossu |
18+
# | Francois-Xavier Girod | fxgirod |
19+
# | Gagik Gavalian | gavalian |
20+
# | Giovanni Angelini | gangel85 |
21+
# | Guillaume Christiaens | Guillaum-C |
22+
# | Joseph Newton | josnewton |
23+
# | L Smith | forcar |
24+
# | Latif Kabir | latifkabir |
25+
# | Marco Contalbrigo | mcontalb |
26+
# | Mathieu Ouillon | mathieuouillon |
27+
# | Maurik Holtrop | mholtrop |
28+
# | Maxime Defurne | mdefurne |
29+
# | Michael Hoffer | miho |
30+
# | Nathan Baltzell | baltzell |
31+
# | Nathan Harrison | naharrison |
32+
# | Nick Markov | markovnick |
33+
# | Noemie Pilleux-LOCAL | N-Plx |
34+
# | Pierre Chatagnon | PChatagnon |
35+
# | Rafayel Paremuzyan | rafopar |
36+
# | Raffaella De Vita | raffaelladevita |
37+
# | Sylvester Joosten | sly2j |
38+
# | Tongtong Cao | tongtongcao |
39+
# | Vardan Gyurjyan | gurjyan |
40+
# | Veronique Ziegler | zieglerv |
41+
# | Whitney Armstrong | whit2333 |
42+
# | ajhobart | ajhobart |
43+
# | colesmith | forcar |
44+
# | cqplatt | cqplatt |
45+
# | dcpayette | dcpayette |
46+
# | efuchey | efuchey |
47+
# | hattawy | Hattawy |
48+
# | huckb | huckb |
49+
# | jwgibbs | jwgibbs |
50+
# | mariangela-bondi | mariangela-bondi |
51+
# | marmstr4 | marmstr4 |
52+
# | mcontalb | mcontalb |
53+
# | mpaolone | mpaolone |
54+
# | rtysonCLAS12 | rtysonCLAS12 |
55+
# | tongtongcao | tongtongcao |
56+
# | veronique | zieglerv |
57+
##################################################################################
58+
59+
# primary (default) maintainers
60+
* @baltzell @raffaelladevita @c-dilks
61+
62+
# infrastructure
63+
.github/* @baltzell @raffaelladevita @c-dilks
64+
.gitlab-ci.yml @baltzell @raffaelladevita @c-dilks
65+
bin/* @baltzell @raffaelladevita @c-dilks
66+
docs/* @baltzell @raffaelladevita @c-dilks
67+
external-dependencies/* @baltzell @raffaelladevita @c-dilks
68+
libexec/* @baltzell @raffaelladevita @c-dilks
69+
70+
# POMs
71+
/**/pom.xml @c-dilks @baltzell @raffaelladevita
72+
73+
# common-tools
74+
common-tools/clara-io/* @baltzell @raffaelladevita
75+
common-tools/clas-analysis/* @raffaelladevita @baltzell @naharrison @zieglerv @marmstr4
76+
common-tools/clas-decay-tools/* @baltzell @raffaelladevita @zieglerv
77+
common-tools/clas-detector/* @baltzell @raffaelladevita @zieglerv
78+
common-tools/clas-geometry/* @baltzell @raffaelladevita @zieglerv @mathieuouillon
79+
common-tools/clas-io/* @raffaelladevita @baltzell @gavalian @naharrison @zieglerv @forcar @drewkenjo @huckb
80+
common-tools/clas-jcsg/* @drewkenjo @naharrison @raffaelladevita @baltzell @zieglerv @gangel85 @mcontalb @cqplatt @mariangela-bondi @gavalian @cpecar
81+
common-tools/clas-logging/* @baltzell @raffaelladevita
82+
common-tools/clas-math/* @raffaelladevita @baltzell @zieglerv @tongtongcao
83+
common-tools/clas-physics/* @raffaelladevita @baltzell @naharrison @zieglerv @drewkenjo @gavalian @fxgirod
84+
common-tools/clas-reco/* @raffaelladevita @baltzell @naharrison @zieglerv @josnewton @mcontalb @gavalian @afilippi67 @N-Plx @drewkenjo @rafopar @gurjyan @dcpayette @hauenst
85+
common-tools/clas-tracking/* @zieglerv @baltzell @raffaelladevita @tongtongcao
86+
common-tools/clas-utils/* @raffaelladevita @baltzell @naharrison @zieglerv @gavalian
87+
common-tools/swim-tools/* @raffaelladevita @baltzell @zieglerv @heddle @tongtongcao @gurjyan
88+
89+
# coat-libs
90+
common-tools/coat-libs/* @raffaelladevita @baltzell @c-dilks
91+
92+
# common-tools / cnuphys
93+
common-tools/cnuphys/* @heddle @naharrison @raffaelladevita @baltzell @zieglerv @tongtongcao
94+
95+
# reconstruction
96+
reconstruction/alert/* @baltzell @raffaelladevita @mathieuouillon @mpaolone @efuchey @whit2333 @ftouchte
97+
reconstruction/band/* @raffaelladevita @baltzell @zieglerv @hauenst
98+
reconstruction/bg/* @baltzell @raffaelladevita
99+
reconstruction/cnd/* @raffaelladevita @baltzell @naharrison @zieglerv @PChatagnon @ajhobart @silvianic
100+
reconstruction/cvt/* @zieglerv @raffaelladevita @baltzell @naharrison @drewkenjo @fbossu @N-Plx @Guillaum-C
101+
reconstruction/dc/* @naharrison @raffaelladevita @baltzell @zieglerv @drewkenjo @tongtongcao @gurjyan @mcontalb @hauenst @latifkabir @gavalian @bleaktwig @N-Plx @marmstr4
102+
reconstruction/eb/* @baltzell @naharrison @raffaelladevita @sly2j @zieglerv @josnewton
103+
reconstruction/ec/* @naharrison @raffaelladevita @baltzell @zieglerv @forcar @gavalian @rafopar
104+
reconstruction/ec/src/* @forcar @naharrison @raffaelladevita @baltzell @gavalian @rafopar
105+
reconstruction/fmt/* @baltzell @raffaelladevita
106+
reconstruction/ft/* @naharrison @raffaelladevita @baltzell @zieglerv @afilippi67
107+
reconstruction/htcc/* @raffaelladevita @baltzell @naharrison @zieglerv @markovnick
108+
reconstruction/ltcc/* @naharrison @raffaelladevita @baltzell @zieglerv @sly2j
109+
reconstruction/mc/* @baltzell @raffaelladevita @rafopar @zieglerv
110+
reconstruction/mltn/* @baltzell @raffaelladevita @gavalian
111+
reconstruction/postproc/* @baltzell
112+
reconstruction/raster/* @baltzell @raffaelladevita @N-Plx
113+
reconstruction/rich/* @drewkenjo @raffaelladevita @baltzell @naharrison @zieglerv @mcontalb
114+
reconstruction/rtpc/* @dcpayette @raffaelladevita @baltzell @mathieuouillon @zieglerv @Hattawy @dpayette
115+
reconstruction/swaps/* @baltzell @raffaelladevita
116+
reconstruction/tof/* @naharrison @zieglerv @raffaelladevita @baltzell @drewkenjo @gavalian
117+
reconstruction/urwell/* @baltzell @raffaelladevita @tongtongcao
118+
reconstruction/vtx/* @baltzell @raffaelladevita @zieglerv
119+
120+
# etc
121+
etc/bankdefs/* @baltzell @raffaelladevita @c-dilks
122+
etc/benchmarks/* @naharrison
123+
etc/data/* @drewkenjo @baltzell
124+
etc/ejml/* @raffaelladevita @gavalian
125+
etc/logging/* @baltzell
126+
etc/nnet/* @gavalian
127+
etc/services/* @baltzell @raffaelladevita @zieglerv
128+
129+
# validation
130+
validation/* @baltzell @raffaelladevita @c-dilks

0 commit comments

Comments
 (0)