建立最簡單的repo服務器實例講解

repo是一個將多個git tree進行系統管理的工具,repo本身不是一個源代碼版本管理系統,它只是聯合manifest.git中project list xml的多個工程,統一管理。在運行repo sync的情況下,xml文件中指定的工程都統一被sync下來。

下面用最簡單的實例證明如何建議一個repo服務。

1. 進入home目錄,創建repo-server子目錄,如/home/lihacker/repo-server

2. 在該目錄中新建一個manifest.git目錄,初始化爲一個git tree

即運行git init

3. 在/home/lihacker/repo-server/manifest.git目錄中添加一個default.xml文件,內容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <manifest>  
  3.     <remote name="repo-server" fetch="/home/lihacker/repo-server" review="review.source.android.com" />  
  4.     <default revision="master" remote="repo-server" />  
  5.     <project name="external/example1" path="external/example1"/>  
  6.     <project name="external/example2" path="external/example2"/>  
  7. </manifest>  

git add default.xml並commit。

 

其中的remote行指定repo服務器的地址,default行指定默認的版本以及remote服務器,這個需要根據實際情況指定。我們這裏底層git是用最簡單的文件拷貝,實際中可能是git,git+ssh或者http。

接下來的2行指定project list,有2個工程,分別位於服務器/home/lihacker/repo-server/external/example1和/home /lihacker/repo-server/external/example2目錄,而客戶repo sync後,將位於當前目錄下的external/example1和external/example2目錄。

因此,服務器端需要再初始化/home/lihacker/repo-server/external/example1和/home/lihacker/repo-server/external/example2這2個git tree。

  1. lihacker@lihacker-laptop:~/repo-server/external/example1$ pwd  
  2. /home/lihacker/repo-server/external/example1  
  3. lihacker@lihacker-laptop:~/repo-server/external/example1$ git init  

4.客戶端sync代碼

建立~/repo-client目錄,並運行:

  1. repo init -u ~/repo-server/manifest.git/  

之後運行repo sync,你會發現~/repo-client多出了external/example1和external/example2的目錄,另外~/repo-client下還有一個隱藏的.repo目錄。

  1. lihacker@lihacker-laptop:~/repo-client$ ls -a  
  2. .  ..  external  .repo  
  1. lihacker@lihacker-laptop:~/repo-client$ tree  
  2. .  
  3. `-- external  
  4.     |-- example1  
  5.     |   `-- 1  
  6.     `-- example2  
  7.         `-- 2  
  8.   
  9. 3 directories, 2 files 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章