赞
踩
草草总结了下大体思路,可能有错漏和不清楚的地方,仅供参考:
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,无法镜像多个工程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。