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
B
R
A
N
C
H
−
−
.
c
d
.
.
l
n
−
s
m
a
n
i
f
e
s
t
s
/
BRANCH -- . cd .. ln -s manifests/
BRANCH−−.cd..ln−smanifests/MANIFEST manifest.xml
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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)