Hi folks,
I am starting work on a project which uses Android, and am looking into setting up a repo tree to use for development work, and I was hoping to get some pointers on how best to do this.
We will be taking our initial repo tree from the silicon vendor, who hosts their platform support in a repo tree we can init and sync from.
My current plan is broadly as follows:
1. We will create a mirror of the si vendor tree using "repo init --mirror", and host this for our developers in our internal network.
2. We will set up a gerrit instance, with the gerrit.config gerrit.basePath set up to include the repo mirror
3. To develop our product, we will create a branch of manifests.git, and add a new manifest file for our product. This will:
* include the si vendor manifest file as a starting point
* add in new project elements for code components we add (our own product code as well as external dependencies, etc)
* use extend-project to switch to our own dev branches for specific projects where we need tweaks for our product (e.g. kernel, u-boot)
I think this should allow us to carry out development on our own branches of each repo project, and our developers will be able to use repo upload to submit their work to the branches using gerrit.
I'm less clear about taking updates from the silicon vendor. From the perspective of updating the repo mirror, I think it is just a case of running "repo sync" to get the changes, and then updating all our branched components (manifests.git, plus anything else from the si vendor that we branched).
But it's not clear to me how this interacts with gerrit. Firstly, do people typically manage updates like this via. gerrit? Or just use git commands from the shell? If the latter, is there any concerns around concurrency if the gerrit server is running while the updates are taking place?
Any comments on any of the above are welcome, especially around taking updates from the silicon vendor.
Many thanks!
Tom