仅同步 Android 中的当前分支

Sync Only Current Branch In Android

很多地方建议使用 repo 命令的 -c--current-branch 选项来减少下载的代码量。但是,它似乎不再可用:

repo --time -c -j2 sync
Usage: repo [-p|--paginate|--no-pager] COMMAND [ARGS]

main.py: error: no such option: -c

现在是否有替代开关或者该功能是否已完全删除?

我可以从仍然有 -c 开关的地方获得旧版本的回购包装器并使用它吗?

使用-c有问题吗?

我的用例是获取 CyanogenMod 的特定分支并为我的 phone 构建一个 ROM。

编辑:有趣的是,sync.py 似乎有选项。

grep -a2 current-branch .repo/repo/subcmds/sync.py
of a project from server.

The -c/--current-branch option can be used to only fetch objects that
are on the branch specified by a project's revision.

--
                 dest='detach_head', action='store_true',
                 help='detach projects back to manifest revision')
    p.add_option('-c', '--current-branch',
                 dest='current_branch_only', action='store_true',
                 help='fetch only current branch from server')

也许 manifest.xml 中项目元素的属性 upstream 可以解决您的问题。

根据the document of manifest file

Attribute upstream: Name of the Git ref in which a sha1 can be found. Used when syncing a revision locked manifest in -c mode to avoid having to sync the entire ref space.

如问题编辑中所述,开关仍然可用。

令人困惑的是 repo --time -c -j2 sync.

中实际上使用了 2 个 python 脚本

repo是一个脚本,然后将参数发送给sync脚本。

-c-jsync 脚本的参数,--timerepo 脚本的参数。

因此,命令应该是

repo --time sync -c -j2