In a polyrepo layout every project has its own repository, history, CI and access rules. Shared code is consumed as a versioned dependency, so a cross-cutting change needs one pull request per repository. See also monorepo.