Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1145863
  • 博文数量: 312
  • 博客积分: 12522
  • 博客等级: 上将
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 18:35
文章分类

全部博文(312)

文章存档

2016年(3)

2015年(1)

2013年(1)

2012年(28)

2011年(101)

2010年(72)

2009年(13)

2008年(93)

分类: 项目管理

2011-04-03 22:32:02

  我们知道Android开源工程的代码,使用了一个叫repo的工具,有效的管理着Android底下的几百个git工程。
 
  事实上repo本上并不是一个程序,而是一个脚本工程.......而git才是真正的版本管理工具。
 
  说白了,repo就是一堆批处理(python语言写的),它把git的命令进行了合理封装,目标就是同时管理多个git工程。
 
 
   以下就是搭建repo服务器端的步骤,有了它我们也能像Android项目那样在linux系统下同时管理几百个工程了。
 
Step 1. Construct git server (ip is 192.168.5.141).
 
 
Step 2. Run following commands to initialized manifest.git repository on the server machine with "seker" user privilege.

mkdir repositories
cd repositories
git init --bare manifest.git
 
Step 3. Run following commands to initialized a test git repository in the same path with manifest.git with "seker" user privilege.

cd repositories
git init --bare project1.git
 
Step 4. Run following command on the server machine with administrator privilege.

sudo gedit /etc/sv/git-daemon/run Modify the last line to:
 
exec git-daemon --verbose --enable=receive-pack --export-all --base-path=/home/seker/repositories
 
Restart git-daemon or Reboot the machine

sudo sv restart git-daemon

Reboot the machine
 
Step 5. Customize manifest.git

Login a client machine, run following command to clone manifest.git repository:
 
mkdir MyRepo
 
cd MyRepo
 
git clone
 

 
cd manifestCreate a default.xml file with following content:
 
 
 
 
 
Run following command to commit default.xml file
 
git add --all
git commit -a -m "add default.xml"
git push --allStep
 
6. Customize Project1.git

Login a client machine, run following command to clone project1.git repository:
 
cd MyRepo
 
git clone
 
 
cd project1
 
echo "Hello Project1" > Hello.txt
 
Run following command to commit Hello.txt file
git add --all
git commit -a -m "add Hello.txt"
git push --allStep
 
7. Test the repo server

Run following command on the client machine side.
 
mkdir bin
 
curl
> ~/bin/repo
 
chmod a+x ~/bin/repoExport ~/bin to system enviroment path.
 
mkdir MyProject
 
cd MyProject
repo init -u git://192.168.5.141/manifest.git
repo sync


 备注:
curl其实是一个下载工具,下面这个命令其实就是把网络上一个文件下载到了本地bin目录下。
curl
> ~/bin/repo

我们通过chmod a+x ~/bin/repo 使得repo文件可以执行。
这个文件其实很关键,它相当于启动Repo的启动器。但是,很多初学者都进入了一个误区,认为repo文件就是Repo的全部。
其实这是不对的,当执行下面这个命令时:repo其实做了很多很多的事情.....
repo init -u git://192.168.5.141/manifest.git
1、首先它创建一个.repo的文件夹,这个文件夹是隐藏的。接下来Repo所做的事情都是在.repo这个文件夹底下进行的。
2、它从网上下载一个repo.git的工程,这个工程才是整整的Repo的全部,也就是我们前面说过的"git命令脚本工程"
可惜它是使用python语言写的,要想看懂它,实在是不容易....
3、最后它把"-u git://192.168.5.141/manifest.git"传递给了repo工程。
manifest.git工程中其实只有一个文件:default.xml,这个文件记录了一个工程列表。
当我们执行repo sync时,Repo通过解析default.xml这个文件,循环遍历下载所有的工程,从而达到统一管理的目的。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/seker_xinjian/archive/2011/03/08/6232475.aspx
阅读(1756) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~