I’ve written a script that we can run once a day to normalize permissions in all of the repos for our primary language teams.
Below is the logic used for each team, functions return ’pull’
, ’push’
, ’admin’
or false
in the case of no permissions.
/* Repos that pretty much everyone should be on */
const openRepo = new Set([
'ipld-examples',
'specs',
'interface-ipld-format',
'ipld',
'replication',
'team-mgmt',
'cid-cbor'
])
const fallbacks = repo => {
if (openRepo.has(repo.name)) return 'pull'
return false
}
run('ipld', {
core: repo => {
if (repo.name === 'specs') return 'push'
return 'pull'
},
'javascript-team': repo => {
if (repo.languages.JavaScript && repo.languages.JavaScript > 0.5) return 'push'
if (repo.name.startsWith('js-')) return 'push'
return fallbacks(repo)
},
'go-team': repo => {
if (repo.languages.Go && repo.languages.Go > 0.5) return 'push'
if (repo.name.startsWith('go-')) return 'push'
return fallbacks(repo)
},
'rust-team': repo => {
if (repo.languages.Rust && repo.languages.Rust > 0.5) return 'push'
if (repo.name.startsWith('rust-')) return 'push'
return fallbacks(repo)
}
})
I wrote a “dry run” feature that prints all the permission adjustments. I wanted to make sure everyone was alright with these changes before adjusting so many repo permissions.
Another change, I added a “core” team with all the full time contributors. That group is set to have ’pull’
(read) access in every repo.
set pull permission for core in ipld/js-ipld-dag-cbor
set pull permission for core in ipld/go-ipld-deprecated
set pull permission for core in ipld/ipld-examples
set pull permission for core in ipld/js-ipld
set pull permission for core in ipld/js-ipld-cli
set pull permission for core in ipld/js-ipld-block
set pull permission for core in ipld/react-ipld
set push permission for core in ipld/specs
set pull permission for core in ipld/website
set pull permission for core in ipld/js-ipld-dag-pb
set pull permission for core in ipld/interface-ipld-format
set pull permission for core in ipld/js-ipld-eth-block
set pull permission for core in ipld/ipld
set pull permission for core in ipld/js-ipld-graph-builder
set pull permission for core in ipld/js-ipld-eth-tx
set pull permission for core in ipld/java-cid
set pull permission for core in ipld/js-ipld-eth-trie
set pull permission for core in ipld/js-ipld-eth-account-snapshot
set pull permission for core in ipld/js-ipld-eth-state-trie
set pull permission for core in ipld/js-ipld-eth-block-list
set pull permission for core in ipld/js-ipld-eth-storage-trie
set pull permission for core in ipld/js-ipld-eth-tx-trie
set pull permission for core in ipld/persistent-metadata
set pull permission for core in ipld/js-ipld-selector
set pull permission for core in ipld/eth-hash-to-cid
set pull permission for core in ipld/js-ipld-torrent-file
set pull permission for core in ipld/js-ipld-bencode
set pull permission for core in ipld/js-ipld-torrent-info
set pull permission for core in ipld/js-ipld-ethereum
set pull permission for core in ipld/js-ipld-raw
set pull permission for core in ipld/js-ipld-git
set pull permission for core in ipld/py-cid
set pull permission for core in ipld/py-ipld-dag
set pull permission for core in ipld/ipld-yang
set pull permission for core in ipld/go-ipld-daghelpers
set pull permission for core in ipld/docs
set pull permission for core in ipld/research
set pull permission for core in ipld/js-ipld-bitcoin
set pull permission for core in ipld/js-ipld-zcash
set pull permission for core in ipld/java-ipld-cbor
set pull permission for core in ipld/js-unixfsv2
set pull permission for core in ipld/go-ipld
set pull permission for core in ipld/js-dag-json
set pull permission for core in ipld/go-ipld-prime
set pull permission for core in ipld/roadmap
set pull permission for core in ipld/replication
set pull permission for core in ipld/team-mgmt
set pull permission for core in ipld/ipld-in-memory
set pull permission for core in ipld/js-ipld-stack
set pull permission for core in ipld/js-codec-interface
set pull permission for core in ipld/js-path-level-one
set pull permission for core in ipld/js-get-codec
set pull permission for core in ipld/js-block
set pull permission for core in ipld/js-composites
set pull permission for core in ipld/js-iq
set pull permission for core in ipld/js-printify
set pull permission for core in ipld/js-cli
set pull permission for core in ipld/book
set pull permission for core in ipld/cid-cbor
set pull permission for core in ipld/metrics
set pull permission for core in ipld/auto
set push permission for javascript-team in ipld/react-ipld
set pull permission for javascript-team in ipld/specs
set pull permission for javascript-team in ipld/interface-ipld-format
set pull permission for javascript-team in ipld/ipld
set push permission for javascript-team in ipld/js-unixfsv2
set push permission for javascript-team in ipld/js-dag-json
set pull permission for javascript-team in ipld/replication
set pull permission for javascript-team in ipld/team-mgmt
set push permission for javascript-team in ipld/js-ipld-stack
set push permission for javascript-team in ipld/js-path-level-one
set push permission for javascript-team in ipld/eth-hash-to-cid
set push permission for javascript-team in ipld/js-codec-interface
set push permission for javascript-team in ipld/js-get-codec
set push permission for javascript-team in ipld/js-block
set push permission for javascript-team in ipld/js-composites
set push permission for javascript-team in ipld/js-iq
set push permission for javascript-team in ipld/js-printify
set push permission for javascript-team in ipld/js-cli
set push permission for javascript-team in ipld/metrics
set push permission for go-team in ipld/go-ipld-deprecated
set pull permission for go-team in ipld/specs
set pull permission for go-team in ipld/interface-ipld-format
set pull permission for go-team in ipld/ipld
set pull permission for go-team in ipld/replication
set pull permission for go-team in ipld/team-mgmt
set push permission for go-team in ipld/go-ipld
set push permission for go-team in ipld/go-ipld-prime
set pull permission for rust-team in ipld/ipld-examples
set pull permission for rust-team in ipld/specs
set pull permission for rust-team in ipld/interface-ipld-format
set pull permission for rust-team in ipld/ipld
set pull permission for rust-team in ipld/replication
set pull permission for rust-team in ipld/team-mgmt
set pull permission for rust-team in ipld/cid-cbor
@ipld/core @ipld/rust-team @ipld/javascript-team @ipld/go-team