In Google, this is pretty explicit with a plaintext OWNERS file in the directory. Internal IDEs not only have an understanding of that, but can automatically suggest a minimal set of reviewers in a possibly close time zone and not out of office.
Piper, Google’s implementation of monorepo, has that, and it is very important and widely used.
With Phabricator, yes, you can setup herald rules that stops a merge from happening if a file has changed in a specific subdir.
We use service owners, so when a change spans multiple services, they are all added automatically as blocking reviewers.
Re:Monorepos: Please don’t
by briantakita on Thursday January 03, 2019 @08:41AM
(#18814983)
For my clients, I use an open source monorepo submodule inside the client's proprietary monorepo. I can maintain the organizations' software while sharing common code.
So (mono)repos are composable.
If I remember correctly, Gitlab has introduced some sort of ownership control where you can say who owns what directories for things like approving merge requests that affect those directories.
Re:Monorepos: Please don’t
by dsumenkovic on Thursday January 03, 2019 @08:11AM
(#18814773)
Hey, did you mean of assigning approvers based on code owners [1]? You can find more info about Code Owners and syntax at the documentation [2].
[1] https://gitlab.com/gitlab-org/gitlab-ee/issues/1012 [2] https://docs.gitlab.com/ee/user/project/code_owners.html
Github has this feature[1], which we use extensively in our monorepo.
Re:Monorepos: Please don’t
by joatmon-snoo on Thursday January 03, 2019 @03:27AM
(#18813659)
google3 uses the same model that Chromium does, see an example here: https://github.com/chromium/chromium/blob/master/chromeos/OW...
SVN allows for you to create mutliple repos within a repo. (That's probably why the path based auth works).
Git has the idea of sub-modules, but they're really just filters. (They're in the same repo). So ultimately, you don't have that kind of control.
Re:Monorepos: Please don’t
by icebraining on Thursday January 03, 2019 @03:33AM
(#18813675)
Git submodules are not in the same repo, they are a link from one repo to another, and you need to push to both if you make a change to the submodule. Maybe you're thinking of subtrees? I've never used those.
Partially answering my own question: SVN, recommended in a prior comment [0], supports path-based authorization [1]. But what about teams using another version control system?
[0] https://news.ycombinator.com/item?id=18810313
[1] http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverc...