Code Ownership

Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.

Files Tracked
7,722
in the current tree
Bus Factor
2
2 authors are primary owner of 3,896 of 7,722 files
Single-Owner Files
1,683
21.8% of tracked files
Contributors
55
authors who changed files

Bus factor risk — single-owner files

Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.

FileSole ownerCommits
src/timezone/data/tzdata.ziTom Lane27
src/bin/pg_basebackup/po/de.poPeter Eisentraut27
src/timezone/known_abbrevs.txtTom Lane25
src/bin/pg_dump/po/pt_BR.poPeter Eisentraut23
src/backend/po/pt_BR.poPeter Eisentraut21
src/test/regress/sql/regex.sqlTom Lane20
src/pl/plpgsql/src/po/de.poPeter Eisentraut20
src/interfaces/libpq/po/ja.poPeter Eisentraut19
src/bin/initdb/po/ja.poPeter Eisentraut18
src/bin/scripts/po/zh_CN.poPeter Eisentraut18
Table: the 100 most-changed of 1,683 single-owner files
FileSole ownerCommits
src/timezone/data/tzdata.ziTom Lane27
src/bin/pg_basebackup/po/de.poPeter Eisentraut27
src/timezone/known_abbrevs.txtTom Lane25
src/bin/pg_dump/po/pt_BR.poPeter Eisentraut23
src/backend/po/pt_BR.poPeter Eisentraut21
src/test/regress/sql/regex.sqlTom Lane20
src/pl/plpgsql/src/po/de.poPeter Eisentraut20
src/interfaces/libpq/po/ja.poPeter Eisentraut19
src/bin/initdb/po/ja.poPeter Eisentraut18
src/bin/scripts/po/zh_CN.poPeter Eisentraut18
src/interfaces/ecpg/preproc/po/de.poPeter Eisentraut17
src/bin/pg_dump/po/ja.poPeter Eisentraut16
src/bin/pg_rewind/po/de.poPeter Eisentraut16
src/test/modules/test_regex/expected/test_regex.outTom Lane15
src/bin/initdb/po/zh_CN.poPeter Eisentraut15
src/bin/pg_ctl/po/ja.poPeter Eisentraut15
src/bin/scripts/po/ja.poPeter Eisentraut15
src/pl/plpython/po/de.poPeter Eisentraut15
src/pl/plpython/po/ru.poPeter Eisentraut15
src/bin/pg_ctl/po/zh_CN.poPeter Eisentraut15
src/test/modules/test_regex/sql/test_regex.sqlTom Lane14
src/bin/initdb/po/ko.poPeter Eisentraut14
src/bin/pg_basebackup/po/ru.poPeter Eisentraut14
src/bin/pg_controldata/po/ko.poPeter Eisentraut14
src/bin/pg_dump/po/ko.poPeter Eisentraut14
src/pl/plpgsql/src/po/ja.poPeter Eisentraut14
src/pl/plpgsql/src/sql/plpgsql_record.sqlTom Lane13
src/bin/pg_basebackup/po/ja.poPeter Eisentraut13
src/bin/pg_controldata/po/ja.poPeter Eisentraut13
src/bin/pg_ctl/po/ko.poPeter Eisentraut13
src/pl/plperl/po/ru.poPeter Eisentraut13
src/pl/plpgsql/src/po/ru.poPeter Eisentraut13
src/backend/po/ko.poPeter Eisentraut12
src/bin/pg_upgrade/po/de.poPeter Eisentraut12
src/bin/scripts/po/ko.poPeter Eisentraut12
src/interfaces/ecpg/preproc/po/ru.poPeter Eisentraut12
src/interfaces/libpq/po/ko.poPeter Eisentraut12
src/pl/tcl/po/ja.poPeter Eisentraut12
src/pl/tcl/po/ru.poPeter Eisentraut12
src/pl/plperl/po/de.poPeter Eisentraut12
src/bin/pg_ctl/po/cs.poPeter Eisentraut12
src/backend/regex/READMETom Lane11
src/test/modules/injection_points/expected/injection_points.outMichael Paquier11
src/bin/pg_checksums/po/es.poPeter Eisentraut11
src/bin/pg_config/po/ja.poPeter Eisentraut11
src/bin/pg_upgrade/po/es.poPeter Eisentraut11
src/bin/pg_upgrade/po/ja.poPeter Eisentraut11
src/bin/pg_waldump/po/de.poPeter Eisentraut11
src/interfaces/ecpg/ecpglib/po/ru.poPeter Eisentraut11
src/interfaces/ecpg/preproc/po/ja.poPeter Eisentraut11
src/bin/pg_config/po/zh_CN.poPeter Eisentraut11
src/test/modules/injection_points/sql/injection_points.sqlMichael Paquier10
src/bin/pg_upgrade/po/fr.poPeter Eisentraut10
src/interfaces/ecpg/preproc/po/ko.poPeter Eisentraut10
src/pl/plperl/po/ja.poPeter Eisentraut10
src/pl/plpython/po/ja.poPeter Eisentraut10
src/bin/pg_config/po/ko.poPeter Eisentraut10
src/bin/pg_rewind/po/ru.poPeter Eisentraut10
src/bin/pg_rewind/po/sv.poPeter Eisentraut10
src/bin/pg_waldump/po/sv.poPeter Eisentraut10
src/pl/plpgsql/src/po/ko.poPeter Eisentraut10
src/pl/tcl/po/de.poPeter Eisentraut10
src/bin/initdb/po/pl.poPeter Eisentraut10
src/bin/pg_archivecleanup/po/de.poPeter Eisentraut9
src/bin/pg_archivecleanup/po/ja.poPeter Eisentraut9
src/bin/pg_basebackup/po/sv.poPeter Eisentraut9
src/bin/pg_rewind/po/ja.poPeter Eisentraut9
src/bin/pg_test_fsync/po/ru.poPeter Eisentraut9
src/bin/pg_upgrade/po/sv.poPeter Eisentraut9
src/pl/plpgsql/src/po/sv.poPeter Eisentraut9
src/pl/plpython/po/sv.poPeter Eisentraut9
src/pl/plpython/po/zh_CN.poPeter Eisentraut9
src/pl/plpgsql/src/po/zh_CN.poPeter Eisentraut9
src/bin/initdb/po/cs.poPeter Eisentraut9
src/test/modules/test_checksums/t/001_basic.plDaniel Gustafsson8
src/bin/initdb/po/ka.poPeter Eisentraut8
src/bin/pg_archivecleanup/po/ru.poPeter Eisentraut8
src/bin/pg_checksums/po/de.poPeter Eisentraut8
src/bin/pg_upgrade/po/ru.poPeter Eisentraut8
src/bin/pg_waldump/po/ja.poPeter Eisentraut8
src/interfaces/ecpg/ecpglib/po/ja.poPeter Eisentraut8
src/pl/plperl/po/sv.poPeter Eisentraut8
src/pl/tcl/po/zh_CN.poPeter Eisentraut8
src/pl/plpgsql/src/po/it.poPeter Eisentraut8
src/bin/pg_basebackup/po/zh_CN.poPeter Eisentraut8
src/bin/pg_controldata/po/pl.poPeter Eisentraut8
src/include/storage/subsystemlist.hHeikki Linnakangas8
src/interfaces/ecpg/test/sql/desc.pgcMichael Meskes8
src/interfaces/ecpg/test/expected/thread-thread.stdoutMichael Meskes8
src/interfaces/ecpg/test/expected/thread-thread_implicit.stdoutMichael Meskes8
src/test/regress/expected/collate.utf8.outJeff Davis7
src/test/regress/sql/collate.utf8.sqlJeff Davis7
src/bin/initdb/po/uk.poPeter Eisentraut7
src/bin/pg_basebackup/po/ka.poPeter Eisentraut7
src/bin/pg_checksums/po/ja.poPeter Eisentraut7
src/bin/pg_ctl/po/uk.poPeter Eisentraut7
src/bin/pg_dump/po/ka.poPeter Eisentraut7
src/bin/pg_rewind/po/ka.poPeter Eisentraut7
src/bin/pg_upgrade/po/ka.poPeter Eisentraut7
src/bin/pg_verifybackup/po/de.poPeter Eisentraut7

Ownership by author

Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.

AuthorFiles ownedSolely ownedFiles touched
Bruce Momjian2,083313,977
Tom Lane1,8133194,918
Peter Eisentraut1,3554424,656
Michael Paquier3621412,641
Michael Meskes28273362
Álvaro Herrera279802,302
Robert Haas2521002,116
Heikki Linnakangas195461,754
Andres Freund128552,171
Daniel Gustafsson7852871
Amit Kapila788861
Andrew Dunstan68311,316
Tatsuo Ishii618372
Tomas Vondra5712542
Nathan Bossart5425731
Thomas Munro5319843
Peter Geoghegan4923623
Alexander Korotkov4720661
Teodor Sigaev4530522
Masahiko Sawada4324313
Noah Misch4023920
Jeff Davis3914453
Fujii Masao3219670
Stephen Frost2612456
Jacob Champion266114

Showing top 25 of 55 contributors.

Most shared files

Files touched by the most people — shared code where changes are most likely to need coordination.

FileContributorsPrimary ownerOwner share
src/backend/parser/gram.y43Tom Lane31.1%
src/include/catalog/catversion.h41Tom Lane38.5%
doc/src/sgml/config.sgml39Tom Lane18.6%
src/include/nodes/parsenodes.h39Tom Lane33.6%
src/bin/pg_dump/pg_dump.c38Tom Lane31.4%
src/backend/commands/tablecmds.c37Tom Lane30.8%
src/backend/utils/misc/guc.c37Tom Lane32.1%
src/include/nodes/execnodes.h37Tom Lane39.7%
src/backend/tcop/postgres.c36Tom Lane33.5%
src/backend/commands/explain.c36Tom Lane36.8%
src/include/miscadmin.h36Tom Lane27.4%
src/backend/access/heap/heapam.c35Tom Lane20.8%
src/backend/optimizer/plan/planner.c35Tom Lane47.4%
src/backend/utils/misc/postgresql.conf.sample35Tom Lane23.4%
src/backend/commands/vacuum.c35Tom Lane29.5%
src/backend/commands/copy.c35Tom Lane30.6%
src/backend/postmaster/postmaster.c34Tom Lane27.8%
src/backend/nodes/copyfuncs.c34Tom Lane46.4%
src/backend/nodes/outfuncs.c34Tom Lane50.4%
src/backend/catalog/index.c34Tom Lane33.3%