repo镜像服务器搭建 思路

草草总结了下大体思路,可能有错漏和不清楚的地方,仅供参考:

1.repo是基于git的脚本。要搭建repo服务器,得先有管理git的仓库。所以第一步的操作方法和git服务器一样,先搭建gitolite或者gitosis,gitolite的访问地址是ssh://开头的,gitosis好像不需要这个开头,直接hostname@IP_Address:/的形式访问。注意gitosis的相对路径以“:”开始,而ssh以“/”开始。


2.镜像服务器命令

su - git
git clone ssh://host@ip/path_to_repo/repo

这时clone下一个repo文件在git账户的跟目录下,该目录下有一个repo脚本,利用这个脚本进行操作


~/repo/repo init --mirror --repo-url ssh://host@ip/path_to_repo/repo -u ssh://host@ip/path_to_manifest -b android-4.4 -m project_x.xml
4.4.1.xml

然后同步命令如下

.repo/repo/repo sync

注意:镜像服务器需要mirror参数。-b是检测具体的manifest分支,通常会自己在主服务器中复制xml工程文件,然后自己新建一个manifest,推送到镜像服务器,路径自定义,并给予所有用户下载这个自定义的manifest的权限。-m是选择远程manifest仓库中的xml工程。


这时,gitolite或者gitosis管理仓库中还没有访问镜像服务器的权限设置。因此要把镜像服务器的project路径倒出来。以RK平台为例,使用命令

.repo/repo/repo list -n > project.txt

导出来的文件用sed处理,

sed -i ‘s/^/@rk\ = \ repo\//’ projects.txt

意思是在每个行开头添加 @rk = repo/

把这个文件导入gitolite的conf/gitolite.conf 文件中

就有了@rk = repo/rk/xxx

这样的代码,意思是把所有工程路径都叠加到@rk这个变量中

然后通过如下代码赋予权限

repo @rk
R = @usergroup
RW+ = @admin


其中@usergroup也是个变量,定义格式如下

@usergroup = user1 user2 user3


3.gitolite的权限已经设置好了,镜像服务器已经下载好了,接下来要添加一个自己的manifest,放入xml工程文件,推送到镜像服务器上,路径自定义,这个路径的权限也要按照上面的方法,添加到gitolite里面。

可以用下面命令推送

git add project.xml
git commit -m “add branch for android-4.4”
git push origin master:android-4.4 

注意,以上提到的权限管理操作,都在另一台客户端机器操作。即通过client去管理镜像服务器,而不是直接在服务器上操作。这是git权限管理的特点,通过客户端去管理版本服务器而不是直接在服务器上管理。


4.复制镜像服务器上的.repo/manifest.xml文件到管理员客户端上。 放到管理员的manifest仓库中,修改其fetch的路径——为你推送到镜像服务器中的manifest的相对路径。

因为你copy下来的manifest.xml的fetch路径是相对于主服务器上的,而你推送到镜像服务器的路径可能不一致。至于怎么修改,就要看你的工程文件的path,让你的xml文件能找到你的工程文件显示的根目录就行。


5.这只是镜像了单个项目,如果有多个工程,则要把manifest里面的工程文件做一定的修改,把开头几行的sync-c改为false,然后再sync。这表示检测所有revision,不然你的镜像服务器可能只检测到单个revision,无法镜像多个工程。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值