您的位置:首页 > 其它

ubuntu10.04 Git服务器搭建之Repo

2014-05-08 11:45 531 查看
三:搭建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)的方式获取源码,但需要进行密码确认。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: