ubuntu10.04 Git服务器搭建之Repo

来源:互联网 发布:java游戏下载宝软 编辑:程序博客网 时间:2024/04/29 18:44
三:搭建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://username@61.143.53.198/git_repo/repo.git //电信网 联通网地址:221.4.213.95
修改repo/repo 文件中下面一行,将username 替换成客户下载账号的用户名
REPO_URL='ssh://username@61.143.53.198/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://username@61.143.53.198/git_repo/A23/manifest.git -b kitkat-a23 --mirror
lichee镜像下载:     
ubuntu@server:/pub/gittrees/git_repo/mid/A23/lichee$repo init -u ssh://username@61.143.53.198/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 [eng05@jhm.com.hk]: 

Your identity is: win <eng05@jhm.com.hk>
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)的方式获取源码,但需要进行密码确认。

0 0
原创粉丝点击