On Wed, Apr 3, 2013 at 2:24 PM, Christopher Covington cov@codeaurora.orgwrote:
I notice you've created a number of shell scripts to manage checking out multiple git repositories, specific revisions of git repositories for a release, etc. Repo [1] does this stuff pretty well that you might want
to
consider as an eventual alternative.
I was considering repo few times but jenkins-setup scripts are used not only to fetch/update/freeze git repositories but mostly to handle build jobs (at CI or any other machine).
I'm glad to hear that you've looked into it. There's certainly a lot more to automation than revision control, although Repo does seem to play well with others in my experience. Anyhow, I just figured if there was an unexplored possibility to make things easier for developers and users, I'd try to mention it.
hi.
even before that discussion started i was using 'repo' to manage my own (currently private) OE based distro, and I thought I would share my own conclusions too.. so i am currently using repo with a OE 'manifest' that describe the set of all 'layers' (trees) which i need to build my distro. I am not using gerrit at all, I am just using repo as a tool to manager multiple 'git trees' in a somehow synchronous manner.
and as surprised as i was... i have to say that I like this setup very much. The main advantages i can see are: - ability to checkout the entire 'distro' at once, as well as update all tree at once: repo sync - ability to easily track and switch 1 or more stable versions, as well as master: repo init -b dylan && repo sync - we could potentially use the 'smartsync' feature of repo to provide an 'always' working environment for our downstream users - ability to create 'static' manifest with the commit of each sub project to easily regenerate 'releases' (repo manifest -r)
and the *most* interesting feature by far to me, is 'repo grep' that is equivalent to 'git grep' but in all *projects*. For OE work 'git grep' is a very useful command, so ability to grep in all layers at once is a killer feature.
since a picture is worth a thousand words... and since I cannot show my current distro trees for, i have made a sample manifest for review.
https://git.linaro.org/gitweb?p=people/ndec/oemanifest.githttps://git.linaro.org/gitweb?p=people/ndec/oemanifest.git;a=summary
This is a simple manifest that pulls oe-core, meta-oe, bitbake, meta-linaro and meta-beagleboard, see:
https://git.linaro.org/gitweb?p=people/ndec/oemanifest.git%3Ba=blob%3Bf=defa...
the workflow is the following: - for someone who needs to setup the build env: repo init -u git://git.linaro.org/people/ndec/oemanifest.git repo sync
- to switch from master to dylan: repo init -b dylan && repo sync
- to grep the entire set of layers: repo grep SRC_URI
- and 'release manifests' can be checked out in the tree as well, see: https://git.linaro.org/gitweb?p=people/ndec/oemanifest.git%3Ba=shortlog%3Bh=...
Initially i was hoping to get a similar setup with git submodule instead of repo, but submodule won't let us track a 'branch' to 'updating' all trees isn't as simple, and also i had some troubles because 'bitbake' is in oe-core/.gitignore, and that would prevent me from adding the bitbake submodule... anyways, i think 'repo'
feel free to respond if you have any feedback. but basically it looks like we might use a similar setup for one of our next projects here.
cheers
nicolas