repo 常用操作总结-实战宝典
在mirror机器上按照上面的方法拉了一套bare代码之后,在本地配置samba。 安装samba sudo apt-get install samba sudo vi /etc/samba/smb.conf 编辑samba配置文件: [repo] read only = yes guest ok = no valid users = username path = <mirror path> //samba的username 要是与他远程连接机器的账号一致 sudo smbpasswd -a username sudo service sambas restart 重点来了,把reference 共享给其他的build agent。 登录到要使用mirror的机器,执行命令: sudo mount -t cifs -o username=username,passwd=passwd//sambaIP/<mirror path> <local mirror path> 也可以在build agent上把这个mount命令加到/etc/rc.local 中,每次开机自动mount
1 repo --depth
有时候拉一套Android 代码非常大,且拉下来后不关心代码的history, 只是跑代码扫描,编译的时候,可以加参数 --depth ,相当于只拉 git log -1 这层代码,节省时间空间 repo init <command> --depth=1
2 repo mirror 使用
服务器上创建本地mirror, 可以大大减轻拉代码的网络负载,提高拉代码的速度,减少本地磁盘空间的占用。
在服务器上拉取一套bare 仓库的代码,然后--reference=<bare代码路径>
拉取单个git 仓库的bare代码命令: git clone --mirror <repositoty address> 拉取repo 整套bare代码的命令: repo init -u <manifest url> -b <branchname> -m <manifestname> --mirror && repo sync 在拉取代码的时候,只需要加上参数--reference <mirror path>即可从mirror拉取代码 eg: git 单个仓库:git clone <reop url> --reference <mirror path> repo 整套代码:repo init -u <manifest url> -b <branchname> -m <manifestname> --reference <mirror path> && repo sync
上面的方法是 在一台机器上搭建mirror,然后在同一台机器上使用本地mirror。如果有多台机器,就要在每一台机器上分别拉一套mirror代码,这不是最优解。实际是可以在一台机器上创建好mirror,然后通过samba实现局域网内的共享mirror。这个优点是,只需要在一台机器上拉取,操作简单,节省空间。缺点是一旦这台机器上的mirror坏掉了,所有机器都不能使用mirror了。可自行选择方法。
首先同上面一样,在本地拉一套bare的代码。 然后通过samba把mirror 共享给build agent。 安装samba:sudo apt-get install samba 配置samba 文件: sudo vi /etc/samba/smb.conf [repo] read only = yes guest ok = no valid users = username //username 要和远程登陆的build agent 账号一致 path = <mirror path> sudo smbpasswd -a username sudo service sambas restart 然后从需要使用mirror的机器登录,mount远程机器的mirror path sudo mount -cifs -o username=username,passwd=passwd//sambaIP/repo <local mirror path> 也可以把这个mount 命令写在/etc/rc.local 文件中,这样build agent每次开机会自动mount 远程的mirror仓库
对于安卓项目,其实andoid代码拉下来,本身有一个文件夹就是bare仓库,可以当作一个mirror来使用。这个文件夹是.repo/manifest/project-objects