当前位置:   article > 正文

repo服务器 搭建_在哪个系统里创建repo,并发一个链接

在哪个系统里创建repo,并发一个链接


Android开源工程的代码,使用了一个叫repo的工具,有效的管理着Android底下的几百个git工程。

事实上repo本上并不是一个程序,而是一个脚本工程.......而git才是真正的版本管理工具。

说白了,repo就是一堆批处理(python语言写的),它把git的命令进行了合理封装,目标就是同时管理多个git工程。


repo只是联合manifest.git中project list xml的多个工程,统一管理。在运行repo sync的情况下,xml文件中指定的工程都统一被sync下来



--------------------------------------


以下就是搭建repo服务器端的步骤,有了它我们也能像Android项目那样在linux系统下同时管理几百个工程了。


Step 1. 构建git server (ip is 192.168.5.141).


Step 2. Run following commands to initialized manifest.git repository on the server machine with "Frank" user privilege.

  1. mkdir repositories
  2. cd repositories
  3. git init --bare manifest.git

Step 3. Run following commands to initialized a test git repository in the same path with manifest.git with "

Frank" user privilege. 

  1. cd repositories
  2. 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 <strong>--base-path=/home/Frank/repositories</strong>

 Reboot the machine


Step 5. Customize manifest.git

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

  1. mkdir MyRepo
  2. cd MyRepo
  3. git clone Frank@192.168.5.141:repositories/manifest.git
  4.  
  5. cd manifest

Create a default.xml file with following content:


  1. <?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"UTF-8"</span>?>
  2. <strong><manifest></strong>
  3. <remote name=<span class="code-quote">"korg"</span> fetch=<span class="code-quote">"git:<span class="code-comment">//192.168.5.141/"</span> review=<span class="code-quote">"review.source.android.com"</span> />
  4. </span>
  5. <strong> <<span class="code-keyword">default</span> revision=<span class="code-quote">"master"</span> remote=<span class="code-quote">"korg"</span> />
  6. <project path=<span class="code-quote">"project1"</span> name=<span class="code-quote">"project1"</span> /></strong>
  7. </manifest>

Run following command to commit default.xml file


  1. git add --all
  2. git commit -a -m <span class="code-quote">"add <span class="code-keyword">default</span>.xml"</span>
  3. git push --all

Step 6. Customize Project1.git

Login a client machine, run following command to clone project1.git repository:


  1. cd MyRepo
  2. git clone Frank@192.168.5.141:repositories/project1.git
  3. cd project1
  4. echo <span class="code-quote">"Hello Project1"</span> > Hello.txt

Run following command to commit Hello.txt file


  1. git add --all
  2. git commit -a -m <span class="code-quote">"add Hello.txt"</span>
  3. git push --all

Step 7. Test the repo server

Run following command on the client machine side.


  1. mkdir bin
  2.  
  3. <pre>
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

 chmod a+x ~/bin/repo
 
 

Export ~/bin to system enviroment path.


  1. mkdir MyProject
  2.  
  3. cd MyProject
  4. <strong>
  5. repo init -u git:</strong><span class="code-comment"><strong>//192.168.5.141/manifest.git</strong>
  6. </span>
  7. repo sync
  8.  

====================================================================


repo实例1:

http://blog.csdn.net/21cnbao/article/details/7272708


repo实例2:

http://www.linuxidc.com/Linux/2013-04/83563.htm


repo实例3:

http://wenku.baidu.com/link?url=q_fGazjkzNuH8kKluJvm2P_nL4Hdd-EJd8y8VE-NR8XhIpr8qALD3Gdufh4QGLUT-5WzWaXFaXsw9kJPT2SVJbnmo6w9A-Nm48McxCfHfia




====================================================================




备注: 

curl其实是一个下载工具,下面这个命令其实就是把网络上一个文件下载到了本地bin目录下。
curl http://android.git.kernel.org/repo > ~/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这个文件,循环遍历下载所有的工程,从而达到统一管理的目的。

















声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/636794
推荐阅读
相关标签
  

闽ICP备14008679号