Repo tool with Linaro patches

2012 notice: This page is of historical interest only

To get patched repo:

$ wget http://releases.linaro.org/platform/linaro-n/android/latest/repo/repo
$ chmod +x repo

The latest version is available from http://android.git.linaro.org/gitweb?p=tools/repo.git;a=shortlog;h=refs/heads/linaro-stable

Why repo needed patching?

In Linaro, we work with heterogeneous set of git trees which are maintained per different methodologies and workflows. Besides normal with git trees with linearly updating history (so-called history trees), some of our teams work with "integration" trees which don't have linear history, but instead dynamically combine other trees (and that means rebasing, commit history rewriting, re-creating branches from scratch). In particular, our Landing teams, which work on integrating code from various teams in Linaro and member companies, maintain integration trees, and that's the only way to them to do their work in productive and scalable manner.

When we make a release, we make all due measures to ensure that they are 100% reproducible. In particular, we tag integration trees to protect specific release revisions against being lost due to rebases. However it turned out, that under some circumstances, the repo tool may fail to fetch revision, even though a direct git clone for that component works well and makes that revision available. This is exactly the problem that the patched repo addresses.

Why do you release patched version?

We first submitted our patch to AOSP project, to get review and suggestions, see Gerrit review #25843. It was received favorably by Google engineers, they triaged it, pointed out issues, and actually proposed better fix. In parallel, we discussed how we handle it within Linaro, as the issue affects us immediately. What inclined us towards releasing patched version as a temporary measure was prolonged http://android.git.kernel.org downtime which occurred at the same time. Due to the downtime, developers couldn't sync not only with AOSP upstream, but also with Linaro and other trees (unless provided extra options to repo to point to alternative update location). So, we're releasing patched version to cover two issues:

  • To allow people reliably access our recent releases
  • To allow other developers easily perform syncs while AOSP upstream servers are being revamped

How do you deal with upstream?

See previous question.

Do I have to use patched version?

No, you can keep using upstream version, unless you're facing errors like:

error.GitError: people/andygreen/kernel-tilt update-ref: fatal: f175e10ca2932083c40aa1adc54b0df625d37a89^0: not a valid SHA1

If you get that error, please use the patched version instead.

Platform/Android/PatchedRepo (last modified 2013-08-29 08:46:41)