赞
踩
First, repo init creates the .repo
directory, clones the git repository https://android.googlesource.com/tools/repo to .repo/repo
, and the git repository specified with the -u
option to a bare repository at .repo/manifests.git
. After that, it creates the .repo/manifests
directory, converts it into a git repository through creating symbolic links from .repo/manifests/.git
to .repo/manifests.git
. It then checks out the branch specified in -b
, and creates a symbolic link .repo/manifest.xml
pointing to the specified file (-m
option) in .repo/manifests
, by default .repo/manifests/default.xml
.
Roughly as follows:
repo init -u $URL -b $BRANCH -m $MANIFEST -------------------- mkdir .repo; cd .repo git clone https://android.googlesource.com/tools/repo git clone --bare $URL manifests.git mkdir -p manifests/.git; cd manifests/.git for i in ../../manifests.git/*; do ln -s $ı .; done cd .. git checkout $BRANCH -- . cd .. ln -s manifests/$MANIFEST manifest.xml
(早期的repo版本, 现在的版本可能直接建立一个指向manifests.git的软链接就够了.)
You can trace what really happens with repo --trace init ...
Then, repo sync clones git repositories to .repo/projects
for each project in manifest.xml
and local_manifest.xml
, creates working directories with .git
having symlinks to the corresponding bare repository, checks out the branch specified in the manifest, and updates .repo/project.list
. The case where the projects are already there is slightly different, essentially performing a git pull --rebase
.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。