目的
展讯发布代码后,可以下载工作区部分或者镜像,因为后面在做项目时要自己管理分支和代码提交,所以需要在自己的服务器上建立镜像。
有两种方法:
- 一:下载工作区部分(即代码),然后自己把每一个仓库提交到gerrit。Android不推荐,因为仓库有一千多个,太繁琐
- 二:从展讯服务器下载镜像,镜像拷贝到公司服务器的git代码仓库路径下直接使用
下面是我使用方法二的操作步骤
一、首先从展讯服务器下载镜像到本地电脑
如果条件允许的话,这一步骤也可以直接下载到gerrit,这样就省略步骤二
下载镜像 [ instructions of downloading mirror ] $ mkdir workspace $ cd workspace # 使用SSH连接 / for ssh user $ repo init --repo-url ssh://username@git.unisoc.com:29418/tools/repo.git -u ssh://username@git.unisoc.com:29418/platform/cus-manifest -b username/master --mirror -m mirror.xml $ repo sync 或者 # 使用HTTPS连接 / for https user $ repo init --repo-url https://git.unisoc.com/gerrit/tools/repo.git -u https://git.unisoc.com/gerrit/platform/cus-manifest -b username/master --mirror -m mirror.xml $ repo sync
二、将镜像拷贝到gerrit服务器
我下载的镜像都放在了8541E目录下,现在把它拷贝到gerrit服务器
scp -rf 8541E gerrit@192.168.1.153/home/flyscale/gerrit/review_site/git/android/platform/
三、重建索引
这一步是把拷贝过来的镜像添加到gerrit的数据仓库中,这样才能管理起来
./reivew_site/bin/gerrit.sh stop #重建索引前要停掉gerrit服务器 #review_site是gerrit安装路径 java -jar gerrit.war reindex -d review_site ./reivew_site/bin/gerrit.sh start
repo配置文件
把展讯的配置文件修改后直接放到自己的manifest仓库中。
修改点:
- 1、gerrit服务器地址
- 2、project路径
下面贴出修改前和修改后的差异部分:
修改前:
<manifest> <remote fetch=".." name="korg" review="http://review.source.spreadtrum.com/gerrit/"/> <default revision="sprdroid10_trunk_19c_rls1_c1" remote="korg" sync-j="4"/>
修改后:
<manifest> <remote fetch="../../.." name="origin" review="http://192.168.1.153:81"/> <default revision="sprdroid10_trunk_19c_rls1_c1" remote="origin" sync-j="4"/>
其它基本不用修改。正常情况下就可以从自己的服务器下载代码了。
从公司服务器下载代码:
$ repo init -u ssh://admin@192.168.1.153:29418/android/platform/9820e/manifest -m sprdroid10_trunk_19c_rls1_c1_flyscale.xml $repo sync
遇到的问题
一、分支问题
实际分支为flyscale/ sprdroid10_trunk_19c_rls1_c1,但是maniest里面配置的是 sprdroid10_trunk_19c_rls1_c1,仍然能下载是什么原因?
答:因为每个project配置了revision,依据提交id进行下载,如下:
<project name="android/platform/8541e/platform/build/blueprint" path="build/blueprint" revision="8fd0c7f4d39d335886154 c0fe1eeb3a91e19f592" groups="pdk,tradefed" upstream="flyscale/sprdroid10_trunk_19c_rls1_c1"/>
二、部分镜像不正确
从展讯下载的镜像,有的仓库无法正常下载镜像,但是能正常下载工作区拷贝,怎么办?
答:使用工作区拷贝推送到gerrit生成镜像
三、历史提交超过10000
提交次数超过10000的话无法提交以服务器,而这些提交对我们来说 没有用了,所以检出工作区代码,删掉.git目录,重新初始化