各种博客上经常看到下载repo代码、赋予权限,然后就使用,你真的理解它在做什么吗?
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
repo init -u <URL> [<OPTIONS>]
repo sync
curl干了啥
curl下载了repo脚本,然而,他只是一个repo bootstrap脚本,只支持init和help两个命令。
init 才安装完整的repo工具,之后将控制权转移给repo。
chmod a+x干了啥
借用一图说明:
给所有用户可执行权限。~/bin/repo 是个文件不是目录。
u:user。就是你自己的权限
g:group。就是和你同组的人的权限
o:others。就是和你不同组的人的权限
a:all。就是所有人的权限
r:read。读权限,值为4
w:write。写权限,值为2
x:execute。执行权限,值为1
开头的符号
-:普通文件
d:directory。目录
repo init干了啥
两个阶段。
第一个阶段
初始化repo,仅涉及两个参数:
- --repo-url=URL repo工具本身的git库地址,缺省值为 git://android.git.kernel.org/tools/repo.git
- --repo-branch=REVISION repo版本库分支名称,缺省值为 stable
注意:这里有个坑,如果你用其他 repo-url,设置REVISION时可能就没有 stable 分支。都有啥分支?repo init的时候会显示有哪些分支。或者打开URL查呗。
第二个阶段
现在控制权转交给从URL下载的 repo 脚本了,这时候当前文件夹下多个.repo目录,第二阶段脚本是由.repo/repo/subcmds/init.py 负责执行的,python脚本哦~
现在开始克隆 -u 参数提供的 manifest git 仓库:
- -u URL 指定要从中检索清单代码库的网址
- -m MANIFEST.xml 选择代码库的一个清单文件。默认为 default.xml
- -b REVISION 会检出 manifest git 仓库的修订版本,即特定的清单分支
repo sync 干了啥
代码清单都有了,repo sync 同步代码到本地。