How to download only one Android source code project using repo

July 2014.


You want to submit a small patch to an Android source project.

You don't want to download the entire 14GB Android source code.

What you did

Initialize repo.

repo init -u
remote: Counting objects: 117, done
remote: Finding sources: 100% (117/117)
remote: Total 2879 (delta 1523), reused 2879 (delta 1523)
Receiving objects: 100% (2879/2879), 2.44 MiB | 696 KiB/s, done.
Resolving deltas: 100% (1523/1523), done.
* [new branch] maint -> origin/maint
* [new branch] master -> origin/master
* [new branch] stable -> origin/stable
* [new tag] v1.0 -> v1.0
* [new tag] v1.0.1 -> v1.0.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
remote: Counting objects: 110, done
remote: Finding sources: 100% (110/110)
remote: Total 1345 (delta 288), reused 1345 (delta 288)
Receiving objects: 100% (1345/1345), 1.13 MiB | 479 KiB/s, done.
Resolving deltas: 100% (288/288), done.
* [new tag] android-sdk-support_r11 -> android-sdk-support_r11

Your Name [U-dl_muriers_em\ZWM]: Erwan Martin
Your Email [ZWM@dl_muriers_em.(none)]:

Your identity is: Erwan Martin
is this correct [y/N]? y

repo has been initialized in /home/ZWM

Sync the project.

repo sync platform/tools/base
Traceback (most recent call last):
File "/home/ZWM/.repo/repo/", line 500, in
File "/home/ZWM/.repo/repo/", line 476, in _Main
result = repo._Run(argv) or 0
File "/home/ZWM/.repo/repo/", line 155, in _Run
result = cmd.Execute(copts, cargs)
File "/home/ZWM/.repo/repo/subcmds/", line 624, in Execute
File "/home/ZWM/.repo/repo/", line 184, in GetProjects
raise InvalidProjectGroupsError(arg)

InvalidProjectGroupsError? Whaaaaaat!?

Why did that happen

Let's open .repo/repo/ and go where the command failed.

for project in projects:
if not missing_ok and not project.Exists:
raise NoSuchProjectError(arg)
if not project.MatchesGroups(groups):
raise InvalidProjectGroupsError(arg)

Apparently, a notion of group exists. Let's open the manifest and see in what group our project is.


notdefault? That doesn't sound good.

What you should have done

Init repo including group tools.

repo init -u -g tools

Sync the project.

repo sync platform/tools/base
Fetching project platform/tools/base
Fetching projects: 100% (1/1), done.
Checking out files: 100% (5614/5614), done.

Create and checkout your branch.

repo start your-local-branch-name platform/tools/base

Work your magic and upload your changes.

repo upload