Conversation

This Tweet is from a suspended account. Learn more
I'm very thankful that I primarily have to deal with repo and not submodules. I like that it's very flexible in how you use it. A developer can add a local manifest overriding / extending the main one. Can also tag metadata to allow for different kinds of partial checkouts, etc.
1
It knows how to upload a set of changes across multiple repositories to Gerrit properly, which is how it fits in with Gerrit. It understands the concept of a branch across multiple repositories, etc. That's why it has that review metadata for the AOSP remote and can for multiple.
1
1
In theory, you get something from Git understanding submodules, but in practice, I find that it's just a massive pain to deal with and I'd rather Git didn't have a clue what was going on, like repo. Can use repo with entirely frozen revisions like submodules, just not mandatory.
2
1
It's a lot easier referencing things by tag. It's convenient referencing them by branch to grab the most up-to-date version. Just need to keep in mind when referencing things by dynamic heads like branches to use repo manifest -r to snapshot exactly what you cloned from it.
2
This Tweet is from a suspended account. Learn more
So, for example, if AOSP drops a repository (deletes it from manifest) but we still want it, we can add it back with the same remote, and set a specific tag/revision on that repository. Don't need to fork it unless we need to change it. It's extremely flexible overall.
1
By convention, repository with the manifests has a matching tag / branch for what it references. You can put anything in it though. For example, github.com/GrapheneOS/pla is how we do our extended support branch for devices AOSP dropped, and that gets tagged frozen manifests too.