I don't mind repo because it's simply a text file describing repositories via branch, tag, revision, etc. and it's nice to deal with for overriding repositories and so on. It essentially works like submodules if you reference things via revision which you do for a release.
Conversation
repo? as in gerrit/git-repo? Yeah, I'm not really into adding yet another build tool into the mix these days. It's a good way to prevent cross platform compatibility.
2
I wouldn't call it a build tool. It's a fairly straightforward script for managing a bunch of Git repositories.
It's comparable to making a top-level repository with everything else as submodules, but without the pain of submodules, and very unopinionated about how you use it.
1
1
The manifest is in a repository by itself with nothing else. If you want, you can refer to everything via specific revisions. Generally, you refer to stuff via tags or even branches for development and for a build you generate a frozen revision manifest with repo manifest -r.
1
1
This Tweet is from a suspended account. Learn more
As an example, this is the latest stable release of AOSP:
android.googlesource.com/platform/manif
GrapheneOS has a fork of this where we reference our repositories via branch for development and external projects by revision.
For builds/releases, we use repo manifest -r to make a frozen one.
1
1
This is our development branch one:
github.com/GrapheneOS/pla
This is what repo manifest -r makes:
github.com/GrapheneOS/pla
So, generally, when you do a build that's used beyond local development, you make one of those to go with it.
It's not a pretty tool but it works well.
2
1
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.
This Tweet is from a suspended account. Learn more
Yeah, that's the main usage of repo with AOSP. This is the master one:
android.googlesource.com/platform/manif
Their CI infrastructure will generate a frozen manifest (as a repo.prop) for each of the builds it does.
Revision set on a remote is a default, and there can be multiple remotes.
1
Show replies

