簡易repo服務器搭建

  好久沒有寫博客了,最近一直被其他的事情忙着,思考了很多,感覺停留在一個水平線上遲遲沒法更進一步,雖然依舊學習着新東西,重複着工作,今年已經換了兩份工作了,雖然都不是自己非常滿意的,但是那又能怎麼樣呢,還不是要繼續工作。有時候覺得之前沒有好好考慮自己的職業規劃,真的挺爲自己感到可笑,雖然很多人都勸告過我要選擇一條路,但是心裏有cto的路,不廣泛涉獵,以後怎麼能到達自己的目標呢,即使這個目標有點長遠,有點yy。既然選擇了遠方,留給世界的只能是背影。
  言歸正傳吧,這次就是搭建簡易的repo服務器了,相信一般人都知道repo吧,google的android代碼就是通過repo來管理的。其實repo就是一個python的腳本,用來管理多個git倉庫,這麼理解比較容易些。至於其他種種,不多說了,開始搭建個測試下吧。

1、下載安裝repo

git clone https://review.mfunz.com/git-repo git-repo.git

  下載好後,進入到目錄中:

cd git-repo.git

  然後拷貝到相應目錄,其實也可以自己通過設置絕對路徑來完成,這裏還是拷貝過去吧。

sudo cp repo /usr/bin/repo

  修改repo腳本:

vim /usr/bin/repo

  修改

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

  爲

REPO_URL = '/home/jared/test/git-repo.git'

  因爲我們已經下載了repo相關的代碼,所以就指定到下載到的那個路徑了。至此repo命令就可以正常使用了。

2、建立repo服務器

2.1、建立manifest

  新建repos,然後創建manifest文件夾

mkdir manifest

  新建defalut.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
     <remote name="origin" fetch="/home/jared/test/repos"/>

     <default revision="master" remote="origin" />
     <project name="test1" path="test1"/>
     <project name="test2" path="test2"/>

  </manifest>

  這裏有兩個倉庫,test1和test2。接着我們就可以建立中心倉庫了:

➜  manifest git init
Initialized empty Git repository in /home/jared/test/repos/manifest/.git/

  把剛添加的default.xml添加進去

manifest git:(master)git add .

  提交修改

➜  manifest git:(master) ✗ git commit -m "init_repo"
[master (root-commit) 2694563] init_repo
 1 file changed, 10 insertions(+)
 create mode 100644 default.xml

  新建manifest.git中心倉庫。

➜  repos git clone --bare manifest 
Cloning into bare repository 'manifest.git'...
done.

  新建完後可以把manifest刪除。

2.2、建立test1/test2倉庫

  新建test1文件夾並且添加個readme.md文件。

➜  repos mkdir test1
➜  test1 echo test > readme.md

  初始化git倉庫:

➜  test1 git init
Initialized empty Git repository in /home/jared/test/repos/test1/.git/

  修改提交:

➜  test1 git:(master) ✗git add .

➜  test1 git:(master) ✗ git commit -m "init repo"
[master (root-commit) 3a25343] init repo
 1 file changed, 1 insertion(+)
 create mode 100644 readme.md

  新建test1中心倉庫:

➜  repos git clone --bare test1 
Cloning into bare repository 'test1.git'...
done.

  至此test1.git中心倉庫建立完成,同理建立test2.git倉庫。

3、測試使用

  既然已經建立好了,那麼就來使用下吧,首先就是初始化repo了,相信命令會很熟悉:

➜  work repo init -u ~/test/repos/manifest.git 
Get /home/jared/test/git-repo.git
remote: Counting objects: 3725, done.
remote: Compressing objects: 100% (1755/1755), done.
remote: Total 3725 (delta 1910), reused 3725 (delta 1910)
Receiving objects: 100% (3725/3725), 3.39 MiB | 0 bytes/s, done.
Resolving deltas: 100% (1910/1910), done.
From /home/jared/test/git-repo
repo has been initialized in /home/jared/test/work

  接着同步代碼:

➜  work repo sync
Fetching project test1
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From /home/jared/test/repos/test1
 * [new branch]      master     -> origin/master
 * [new branch]      v1.0.0     -> origin/v1.0.0
Fetching project test2
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From /home/jared/test/repos/test2
 * [new branch]      master     -> origin/master
 * [new branch]      v1.0.0     -> origin/v1.0.0

  同步完成了,ls看下有沒有兩個倉庫:

➜  work ls
test1  test2

  已經同步下來了,接着看下default.xml文件,之後如果需要增加其他的倉庫就在這裏添加:

➜  work ls .repo/manifests
default.xml

  repo倉庫的簡單搭建基本完成了。

發佈了201 篇原創文章 · 獲贊 501 · 訪問量 121萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章