搭建Repo服务器
来源:互联网 发布:淘宝店铺首页大图图片 编辑:程序博客网 时间:2024/05/16 10:18
Repo是一个工具,可以有效的管理Android底下的几百个git工程。Repo并不是一个程序,而是一个脚本工程,git才是真正的版本管理工具。说到底,Repo就是一堆批处理,它把git的命令进行了合理封装,目标就是同时管理多个git工程。以下就是搭建Repo服务器端的步骤。
Step1. 搭建一个Git服务器(IP:10.203.138.81)
见另一篇博文, Ubuntu上搭建Git服务器。
Step2. 在用户”david”权限下,新建并初始化一个manifest.git仓库
$ mkdir RepoServer(如,当前目录为/home/david)
$ cd RepoServer
$ git init --bare manifest.git
$ git init --bare bootable.git
$ git init --bare cpp.git
$ git init --bare device.git
Step3. 安装git-daemon
$ sudo apt-get install git-daemon-run
$ sudo gedit /etc/sv/git-daemon/run
做如下修改:
exec“(git –exec-path)”/git-daemon --verbose --reuseaddr --enable=receive-pack --enable=upload-pack --enable=upload-archive --export-all --base-path=/home/david
重启git-daemon,使修改生效。
$ sudo sv restart git-daemon
Step4. 定制manifest.git
登陆一个库户机,克隆manifest.git仓库。
$ cd C:\Users\XXX\git81
$ mkdir MyRepo
$ cd MyRepo
$ git clone david@10.203.138.81:/home/david/RepoServer/manifest.git
(会要求输入用户david在10.203.138.81上的密码)
$ cd manifest
在manifest仓库下创建一个default.xml文件。
<?xml version="1.0"encoding="UTF-8"?>
<manifest>
<remotename="origin" fetch="git://10.203.138.81/RepoServer"/>
<defaultrevision="master" remote="origin" />
<projectpath="bootable" name="bootable" />
<projectpath="cpp" name="cpp" />
<projectpath="device" name="device" />
</manifest>
提交我们的更改.
$ git add --all
$ git commit -m“add default.xml”
$ git push origin master(可能会出push失败的情况,可以尝试git push –-all或者git push david@10.203.138.81:/home/david/RepoServer/manifest.git master)
Step5. 定制源码仓库bootable.git/cpp.git/device.git
登陆客户机,分别克隆源码仓库(此时是空仓库)。
$ git clone david@10.203138.81:/home/david/RepoServer/bootable.git
$ git clone david@10.203138.81:/home/david/RepoServer/cpp.git
$ git clone david@10.203138.81:/home/david/RepoServer/device.git
在相应的源码仓库中加入源码文件,提交并上传。
$ cd bootable
$ echo “hello Project” > hello.txt
$ git add --all / git add . (注意这里有个点'.',表示添加当前目录所有文件)
$ git commit –m “add hello.txt”
$ git push origin master
(其他仓库做类似处理)
Step6. 定制一个服务器段的Repo仓库
在repo脚本中有个REPO_URL,它指向服务器端repo仓库的URL。在这里我们定制自己的Repo仓库。我们可以下载一个repo工具 (https://github.com/android/tools_repo 或 http://pan.baidu.com/s/1gXeRs) ,这里我们下载的是tools_repo-master.zip,解压并改名到服务器段的某个目录(/home/david/RepoServer)。
$ cd /home/david/RepoServer
$ unzip tools_repo-master.zip
$ mv tools_repo-master repo
将repo置于版本管理下:
$ cd repo
$ git init
$ git add --all
$ git commit –m “initial”
Step7. 测试Repo服务器
在一个Ubuntu客户机上进行测试。
$ cd ~
$ mkdir bin
$ curl http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > ~/bin/repo
(repo脚本可自行下载)
$ chmod a+x ~/bin/repo
$ export PATH=~/bin:$PATH
$ mkdir MyProject
$ cd MyProject
$ repo init --repo-url=git://10.203.138.81/RepoServer/repo --no-repo-verify --repo-branch=master –u git://10.203.138.81/RepoServer/manifest.git
(--repo-branch根据具体情况而定,一般为default或master)
$ repo sync
备注:
curl其实是一个下载工具,下面这个命令其实就是把网络上一个文件下载到了本地bin目录下。
curl http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > ~/bin/repo
我们通过chmod a+x ~/bin/repo 使得repo文件可以执行。
这个文件其实很关键,它相当于启动Repo的启动器。但是,很多初学者都进入了一个误区,认为repo文件就是Repo的全部。其实这是不对的,当执行下面这个命令时:repo其实做了很多很多的事情.....
repo init -u git://10.203.138.81/RepoServer/manifest.git
1、首先它创建一个.repo的文件夹,这个文件夹是隐藏的。接下来Repo所做的事情都是在.repo这个文件夹底下进行的。
2、它从网上下载一个repo.git的工程,这个工程才是整整的Repo的全部,也就是我们前面说过的"git命令脚本工程",它是使用python语言写的。
3、最后它把"-u git://10.203.138.81/RepoServer/manifest.git"传递给了repo工程。manifest.git工程中其实只有一个文件:default.xml,这个文件记录了一个工程列表。
当我们执行repo sync时,Repo通过解析default.xml这个文件,循环遍历下载所有的工程,从而达到统一管理的目的。
参考:
1、《Git权威指南》
2、《版本控制之道:使用Git》
3、《Git Community Book》
4、《Pro Git》
- repo 服务器搭建
- 搭建Repo服务器
- repo服务器 搭建
- repo服务器搭建
- 搭建repo服务器实
- 简易repo服务器搭建
- 本地/远程搭建repo服务器
- 从零搭建 repo 服务器
- 自己动手一步步搭建repo服务器
- CI环境搭建----repo服务器搭建流程
- repo 服务器环境搭建及客户端使用
- repo镜像服务器搭建 思路
- ubuntu10.04 Git服务器搭建之Repo
- REPO镜像服务器的搭建
- CI环境搭建----搭建repo服务器中遇到的问题2: info: A new version of repo is available warning: project 'repo' branch
- 如何搭建Repo服务器端
- 如何搭建Repo服务器端
- 如何搭建Repo服务器端
- bzoj3365(poj 1987)点分治
- GPU Saturday技术沙龙:OpenCL程序员眼中的下一代APU架构
- win8下 eclipse + python环境搭建
- operator new和operator delete学习
- AMD发布APPML源码,构建clMath库
- 搭建Repo服务器
- OpenCL 2.0发布,带来更强悍的异构计算能力
- POJ 1465
- Hadoop+GPU强强联手的性能探索
- oralce 启动时 报 ORA-00119 ORA-00132 错误
- 程序缘 Flex AIR之旅 --第三章开始编写AIR工程
- 枚举enum与typedef enum的区别
- protel 过孔(VIA), 焊盘(pad),钻孔区别
- LINUX下的C++编译器GCC简介