三:搭建Repo管理服务器
①在Git服务器搭建好的基础上建立自己的由repo管理的项目仓库。例如:从全志或者RK服务器下载镜像仓库到本地服务器进行项目开发管理
从全志服务器下载镜像步骤:首先执行$ssh-keygen 一路回车结束。成功后会在~/.ssh/目录下生产id_rsa.pub和id_rsa两个文件。将id_rsa.pub公钥文件发给对口的AW管理人员,授权后便可以进行相关下载。下载镜像仓库前,得安装repo引导脚本。全志建议用他们自己的引导脚本和repo仓库。从谷歌下载android4.4如下:
$ mkdir ~/bin
$ cd ~/bin
$ curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
$
chmod a+x repo
$PATH=~/bin:$PATH
$./repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r1
$./repo sync
从全志下载如下:
$ git clone ssh://
[email protected]/git_repo/repo.git //电信网 联通网地址:221.4.213.95
修改repo/repo 文件中下面一行,将username 替换成客户下载账号的用户名
REPO_URL='ssh://
[email protected]/git_repo/repo.git'
把repo 引导脚本添加到自己计算机环境变量中
$ cp repo/repo /usr/bin/repo
$ chmod 777 /usr/bin/repo
开始下载仓库镜像,例如:A23 Android4.4
android4.4镜像下载:
ubuntu@server:/pub/gittrees/git_repo/mid/A23/android4.4$repo init -u ssh://
[email protected]/git_repo/A23/manifest.git -b kitkat-a23 --
mirror
lichee镜像下载:
ubuntu@server:/pub/gittrees/git_repo/mid/A23/lichee$repo init -u ssh://
[email protected]/git_repo/A23/manifest.git -b kitkat-a23 -m lichee.xml --
mirror
ubuntu@server:/pub/gittrees/git_repo/mid/A23$repo sync
PS:如果不是下载镜像,则同步完成后
repo start kitkat-a23 --all 创建分支
下载完成后,将android4.4目录下生成的device、manifest.git、platform这3个文件夹移动到服务器上
~/repositories/git_repo/mid/A23$目录下,将lichee目录下的brandy.git、buildroot.git、linux-3.4.git、tools.git移动到服务器上
~/repositories/git_repo/mid/A23/lichee$目录下,将
repo.git放在服务器行
~/repositories/git_repo/mid$目录下。这样的目录分布是根据manifest.git中default.xml和lichee.xml中各个project路径决定,要么你自己修改各个project的目录分布。
②负责人创建团队的开发分支
[mid@MID ~/work/testgit]$
git clone git://192.168.10.122/git_repo/mid/repo.git (122是服务器IP地址,不用提供id_rsa.pub公钥么?)
正克隆到 'repo'...
remote: Counting objects: 1265, done.
remote: Compressing objects: 100% (431/431), done.
remote: Total 1265 (delta 810), reused 1265 (delta 810)
接收对象中: 100% (1265/1265), 358.18 KiB | 0 bytes/s, done.
处理 delta 中: 100% (810/810), done.
检查连接... 完成。
[mid@MID ~/work/testgit]$vim repo/repo //修改repo/repo文件中:
REPO_URL='git://192.168.10.122/git_repo/mid/repo.git'
[mid@MID ~/work/testgit/repo]$git push origin master
正式下载和管理A23 Android4.4和lichee
[mid@MID ~/work/testgit/A23]$mkdir lichee android
lichee下载:
[mid@MID ~/work/testgit/A23]$cd lichee/
[mid@MID ~/work/testgit/A23/lichee]$../repo/repo init -u git://192.168.10.122/git_repo/mid/A23/manifest.git -b kitkat-a23 -m lichee.xml
creat :/home/mid/work/testgit/A23/lichee/.repo
git clone repo from /home/mid/work/testgit/A23/repo/.git
正克隆到 'repo'...
完成。
Get /home/mid/work/testgit/A23/repo/.git
info: Ignoring branch 'master'; using tagged release 'v1.7.3.1'
Get git://192.168.10.122/git_repo/mid/A23/manifest.git
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 17 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (17/17), done.
来自 git://192.168.10.122/git_repo/mid/A23/manifest
* [新分支] kitkat-a23 -> origin/kitkat-a23
* [新分支] master -> origin/master
Your Name [win]:
Your Email [
[email protected]]:
Your identity is: win <
[email protected]>
is this correct [y/n]? y
repo initialized in /home/mid/work/testgit/A23/lichee
[mid@MID ~/work/testgit/A23/lichee]$
[mid@MID ~/work/testgit/A23/lichee]$../repo/repo sync
同步完后
[mid@MID ~/work/testgit/A23/lichee/linux-3.4]$git remote -v
lichee git://192.168.10.122/git_repo/mid/A23/lichee/linux-3.4.git (fetch)
lichee git://192.168.10.122/git_repo/mid/A23/lichee/linux-3.4.git (push)
[mid@MID ~/work/testgit/A23/lichee/linux-3.4]$git br
* (非分支)
[mid@MID ~/work/testgit/A23/lichee]$
../repo/repo start
kitkat-a23 --all 相当于原始主分支,也方便后续服务器原始同步
[mid@MID ~/work/testgit/A23/lichee]$../repo/repo branch
* kitkat-a23 | in all projects
[mid@MID ~/work/testgit/A23/lichee]$
../repo/repo start
kitkat-develop --all 创建开发分支
[mid@MID ~/work/testgit/A23/lichee]$../repo/repo branch
kitkat-a23 | in all projects
* kitkat-develop | in all projects
将自己的开发分支推送到服务器公共代码仓库中共其它队友一起开发用:
[mid@MID ~/work/testgit/A23/lichee]$
../repo/repo forall -c git push lichee kitkat-develop:kitkat-develop
[mid@MID ~/work/testgit/A23/lichee/linux-3.4]$git br -r
lichee/kitkat-a23
lichee/kitkat-develop
lichee/lichee-a23
m/kitkat-a23 -> lichee/kitkat-a23
[mid@MID ~/work/testgit/A23/lichee/linux-3.4]$
android4.4下载:
同样对android目录进行管理
[mid@MID ~/work/testgit/A23/android]$
../repo/repo init -u git://192.168.10.122/git_repo/mid/A23/manifest.git -b kitkat-a23
creat :/home/mid/work/testgit/A23/android/.repo
git clone repo from /home/mid/work/testgit/A23/repo/.git
正克隆到 'repo'...
完成。
[mid@MID ~/work/testgit/A23/android/sdk]$git remote -v
exdroid git://192.168.10.122/git_repo/mid/A23/platform/sdk.git (fetch)
exdroid git://192.168.10.122/git_repo/mid/A23/platform/sdk.git (push)
[mid@MID ~/work/testgit/A23/android]$
../repo/repo start kitkat-a23 --all 相当于原始主分支,也方便后续服务器原始同步
Starting kitkat-a23: 100% (417/417), done.
[mid@MID ~/work/testgit/A23/android]$
../repo/repo start kitkat-develop --all创建开发分支
Starting kitkat-develop: 100% (417/417), done.
[mid@MID ~/work/testgit/A23/android]$../repo/repo branch
kitkat-a23 | in all projects
* kitkat-develop | in all projects
将自己的开发分支推送到服务器公共代码仓库中共其它队友一起开发用:
[mid@MID ~/work/testgit/A23/android]$
../repo/repo forall -c git push exdroid kitkat-develop:kitkat-develop
[mid@MID ~/work/testgit/A23/android]$cd sdk/
[mid@MID ~/work/testgit/A23/android/sdk]$git br -r
exdroid/jb42-a23
exdroid/kitkat-a23
exdroid/kitkat-develop
m/kitkat-a23 -> exdroid/kitkat-a23
③队友下载代码进行开发
第一种:队友A本来就在服务器上做开发,即开发环境和公共代码库在同一台服务器上(此处服务器为122)。
wang@server:~/A23$
git clone git://127.0.0.1/git_repo/mid/repo.git
wang@server:~/A23$mkdir android lichee
下载lichee:
wang@server:~/A23/lichee$
../repo/repo init -u git://127.0.0.1/git_repo/mid/A23/manifest.git -b kitkat-a23 -m lichee.xml
wang@server:~/A23/lichee$ ../repo/repo sync
wang@server:~/A23/lichee$ ../repo/repo start kitkat-a23 --all 相当于原始主分支,也方便后续服务器原始同步
wang@server:~/A23/lichee$ ../repo/repo branch
* kitkat-a23 | in all projects
wang@server:~/A23/lichee$
../repo/repo forall -c git checkout -b kitkat-develop lichee/kitkat-develop 切换并同步到远程kitkat-develop开发分支,-b 表示本地没有此分支则创建
wang@server:~/A23/lichee$ ../repo/repo branch
kitkat-a23 | in all projects
* kitkat-develop | in all projects
下载android类似,此处不做说明。
../repo/repo init -u git://127.0.0.1/git_repo/mid/A23/manifest.git -b kitkat-a23
第二种:队友B不在公共代码库服务器上做开发,而是在另外服务器上。
步骤一样,首先安装repo,然后下载android和lichee 只是服务器IP地址要写对。
git clone git://192.168.10.122/git_repo/mid/repo.git
④关于队友本地开发,推送,分支管理,合并分支等git管理技巧网上查看相关命令并练习。
PS:甚至你可以修改远程仓库别名,可以repo forall -c 'git remote add myrepo git://192.168.1.152/our-repository/$REPO_PROJECT.git $@'
删除myrepo:$ repo forall -c git remote rm myrepo还有命令repo forall -c git fetch myrepo 这个时候远程仓库别名也创建OK,远程分支也创建OK,如果要添加或者减少某个git工程呢?那么,git clone git://192.168.10.122/git_repo/mid/A23/manifest.git 进行添加自己的xxx.xml 进行管理git工程,下载的时候:repo init xxxx -b 分支 -m xxx.xml
另外有个问题就是git clone git://xxxx/repo.git 根本不需要什么权限就可以克隆啊,到repo init -u git://xxxx/manifest.git -b kitkat-a23也不需要权限啊,前面不用提供id_rsa.pub?git clone git://xxx,这是一种只读方式来获取代码,无法进行git push。解决方法是用:git clone git@xxx,这是一种可以进行读和代码提交(git push)的方式获取源码,但需要进行密码确认。