Chromium OS‎ > ‎Chromium OS Build‎ > ‎

Updating our version of `repo`

How to sync our fork of repo to upstream.

1) On your machine, clone a checkout of repo, and update our upstream-stable branch to point at upstream’s stable branch.

~$ git clone

~$ cd repo

~/repo$ git remote add upstream

~/repo$ git fetch upstream

~/repo$ git checkout -b upstream-stable upstream/stable

~/repo$ git push origin upstream-stable:upstream-stable

2) The possibly hard part. Rebase any extra changes in our stable onto upstream-stable.

~/repo$ git checkout -b stable origin/stable

~/repo$ git rebase -i upstream-stable

While rebasing, remove any patches that have already been upstreamed, and fix any other merge conflicts.


Option A (worse): Upload the rebased branch to stable-next

~/repo$ git checkout -b stable-next

~/repo$ git push origin stable-next:stable-next

Option B (better): Upload the patches for review for stable-next

~/repo$ git checkout -b stable-next

~/repo$ git push origin stable-next:refs/for/stable-next

Get the changes reviewed by whoever will be doing the signing in step 4, and then applied to stable-next.

4) Get somebody with a repo signing key (Googlers, see whodoinotify) to push a signed tag of stable-next with an appropriate name (such as v1.12.13-cr1)

5) Test stable-next by running some builds that use the new version of repo (by patching in a change that forces repo to use stable-next)

$ ./cbuildbot --remote --buildbot --debug -g I6fabcc63613ec1a861c1f4b7a7fb45b5b4e0bf28 x86-mario-release x86-mario-paladin master-paladin

6) Push the tested and working new version of repo our stable branch.

~/repo$ git fetch origin

Record the previous stable branch, just in case a revert is necessary.

~/repo$ git push origin stable:stable-previous --force

Now push stable-next to stable

~/repo$ git checkout origin/stable-next

~/repo$ git push origin HEAD:stable --force

7) TODO(akeshet) how to update depot_tools/