Google doesn't use GitHub, or Git. Instead they have their own, pretty insane system called Piper. There is only one Piper repository. Different projects are different subdirectories within the same massive repository.
As a result, there's no way to clone the entire repository to your computer. The standard way to handle this is something called Clients in the Cloud, or CitC. Basically the entire repository is mounted as a virtual filesystem, and you can do whatever you want with it.
It's not sane to try to fix merge conflicts in such a big repo. That problem is solved by (almost) eliminating branching or merging. Piper's branching support is very limited, and the only time it's used is for releases. Generally, there's only one branch.
There's also only one version of everything: the latest version. There's no old versions kept around for things that haven't updated to the new versions. If you make a backwards incompatible change to an API, you have to then go and update everything that uses your API. Which you can do, since everything's in the same repository. There are even automated tools you can use for this.
Hmm. Interesting stuff about Piper indeed :)
Though, I saw some Google projects being mirrored to GitHub. Also, fuchsia.googlesource.com/ shows they keep some projects on their own "Google Git" kind of thing.
Maybe that's only true for their open source projects and the internals are kept in Piper as you mentioned
The Chromium and Android people do use Git, but only because their projects are open source and nobody outside Google can use Piper. They do a lot of things with it that are inspired by Piper though, such as copying all their dependencies into the repository in a directory called third_party.
Google doesn't use GitHub, or Git. Instead they have their own, pretty insane system called Piper. There is only one Piper repository. Different projects are different subdirectories within the same massive repository.
As a result, there's no way to clone the entire repository to your computer. The standard way to handle this is something called Clients in the Cloud, or CitC. Basically the entire repository is mounted as a virtual filesystem, and you can do whatever you want with it.
It's not sane to try to fix merge conflicts in such a big repo. That problem is solved by (almost) eliminating branching or merging. Piper's branching support is very limited, and the only time it's used is for releases. Generally, there's only one branch.
There's also only one version of everything: the latest version. There's no old versions kept around for things that haven't updated to the new versions. If you make a backwards incompatible change to an API, you have to then go and update everything that uses your API. Which you can do, since everything's in the same repository. There are even automated tools you can use for this.
You can read more about it here: cacm.acm.org/magazines/2016/7/2040...
Hmm. Interesting stuff about Piper indeed :)
Though, I saw some Google projects being mirrored to GitHub. Also, fuchsia.googlesource.com/ shows they keep some projects on their own "Google Git" kind of thing.
Maybe that's only true for their open source projects and the internals are kept in Piper as you mentioned
The Chromium and Android people do use Git, but only because their projects are open source and nobody outside Google can use Piper. They do a lot of things with it that are inspired by Piper though, such as copying all their dependencies into the repository in a directory called
third_party
.There simply has to be some tool called "pied" at google which interfaces with this piper repository using some fancy compression algorithm.