GIT Gitosis Repo 整套部署方案

2021-06-19 09:39:05 字數 4617 閱讀 9642

git+gitosis+repo 整套部署方案

android很流行,它的開發環境也很流行。下面我們參照它的模式,搭建乙個企業內部的完整版本管理系統。

基本概念:

git是目前最流行的分布式版本管理工具,當然它提供了其他版本管理工具都有的功能,同時提供了輕量級的分支管理,非常的實用。看前面的句子,注意到沒有,它是分布式的,所以那裡都有乙份完整的**,不用擔心伺服器被破壞,當然國際品牌,速度相當的快。

gitosis 這個是許可權管理工具。因為我們需要跟很多的人合作,每個人我們都希望給予他不同的許可權,這樣就不怕重要的專案被不重要的人看到了。

repo算是乙個助手吧,以為當git的repositery很多的時候,乙個乙個的使用git命令,相對的麻煩,特別是android有200個repos時,更加麻煩了。因此谷歌用python寫了這個指令碼,方便大家使用嘛,一切是效率優先。

安裝過程:

這哥們寫得不錯,我做一定的補充吧

1、ubuntu伺服器安裝git

sudo apt-get install git-core

輸入git命令看看工作正常不,如果你的工作機器也是ubuntu,同樣使用這個命令安裝。

2、客戶端安裝git

3、伺服器上上安裝gitosis程式

sudo apt-get install python-setuptools  // 因為使用了python指令碼

mkdir ~/src  //建立乙個工作目錄

cd ~/src

cd gitosis

sudo python setup.py install //使用指令碼進行安裝

安裝後,它的一些命令就可以使用了。gitosis-init      gitosis-run-hook  gitosis-serve,後面我們會使用gitosis-init來初始化資料。

4、伺服器上建立乙個git帳號

sudo adduser \

--system \

--shell /bin/sh \

--gecos 'git version control' \

--group \

--disabled-password \

--home /home/git \

git

通過sudo adduser 也是可以的。有圖形介面也可以用來建立

5、客戶端建立ssh 金鑰對

sudo apt-get install openssh-client

ssh-keygen

按照提示輸入。這樣在~/.ssh目錄下就可以看到生成的東西了。這個金鑰是非對稱的,使用了rsa的非對稱演算法,

superuser@linux-server:~/.ssh$ ls

id_rsa  id_rsa.pub  known_hosts

id_rsa 是私鑰,是自己放好的,千萬不要給人家知道。而id_rsa.pub是分發給別人的。別人可以用來加解密。

所以,我們要把這個id_rsa.pub上傳到伺服器,可以使用scp命令。例如:scp ~/.ssh/id_rsa.pub [email protected]:/tmp/

6、伺服器端初始化gitosis

sudo -h -u git gitosis-init < /tmp/id_rsa.pub

這個的用意是,使用你提供的這個 id_rsa.pub公鑰,建立乙個gitosis_admin.git的reposi,執行這個語句時,輸出的結果

initialized empty git repository in /home/git/repositories/gitosis-admin.git/

reinitialized existing git repository in /home/git/repositories/gitosis-admin.git/

會告訴你,這個gitosis_admin.git所在的位置,如果你的git帳號建立正確的話,那應該就在/home/git/repositories/gitosis_admin.git。

cd 到/home/git/repositories/gitosis-admin.git/gitosis-export 你可以看到乙個[email protected]的檔案,這個就是上面的id_rsa.pub的副本。

vim/home/git//repositories/gitosis-admin.git/gitosis.conf 可以看到,

[group gitosis-admin]

writable = gitosis-admin

members =  yzchen@linux-server

這就表示,yzchen@linux-server 擁有管理這個gitosis-admin的許可權。

這裡需要明白的,yzchen@linux-server這個名字是隨便定義的,只要跟你的.pub檔名一致即可,因為整個匹配的過程是,客戶端請求是用自己的私鑰加密了內容,gitosis在gitosis-export這裡面迴圈測試找到對應的*.pub的公鑰,然後就以這個公鑰的檔名來對應gitosis.conf配置的members。因此公鑰的檔名一定要跟你寫的members一致,才可以起到作用。(這個檔名跟你的系統帳號沒有任何關係)

7、修改gitosis的屬性

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

這一步是為了使得這個檔案具有執行的許可權。這一步可能不需要做,可以到後面遇到問題在回來做這一步

8、修改許可權配置

到客戶端去clone下來gitosis_admin,進行修改。你的客戶端有這個許可權去clone,是因為第6步你把客戶端的金鑰給他初始化了。如果你想給你的下面的專案管理也擁有這個管理許可權,那就按照下面的步驟來。

git clone git@your server id:gitosis_admin.git

注意,這裡,你不需要把git的路徑寫成:git@your server id:/home/git/repositories/gitosis-admin.git 這樣的話gitosis 就會判斷出錯的。

clone下來後就按照6步上面提到的方法來修改。

例如我要新增 andrew 來管理專案。我叫andrew 通過第5步生成金鑰對,然後發過來給我。我就把他命名為andrew_pm.pub,copy到gitosis-admin/keydir這個目錄裡。

然後把gitosis.conf修改為

[group gitosis-admin]

writable = gitosis-admin

members =  yzchen@linux-server andrew_pm

記住啦,members 新增的 andrew_pm 要跟你命名的andrew_pm.pub一致

然後

git add .

git commit -m "add andrew for gitosis admin"

git push origin master

現在你到git賬戶下的gitosis-admin.git下面看看是否真的改變了。如果/home/git/repositories/gitosis-admin.git/gitosis-export 下面沒有你增加的andrew_pm.pub 那你就要執行一下第6步。執行完了,再次commit 和 push

確定上面的步驟正確,那andrew同學就可以clone 這個gitosis_admin.git了。

同理,你也可以增加自己的git專案和設定許可權。

搭建自己的repo

首先repo是要管理幾個git的,我們先建立兩個git, bootable.git binoic.git

git的管理需要乙個manifests.git來規劃。

manifests.git 裡面會有乙個default.xml的檔案。這裡面配置來的工程的資訊。比如

<?xml version="1.0" encoding="utf-8"?>

fetch="[email protected]:testrepo/" />

這裡面的格式大家照這寫吧。

構建好這個manifests後,repo到時會根據這上面的引數進行git的操作。比如上面的會做

git clone [email protected]:testrepo/bootable.git

分別做git push後。使用

repo init -u [email protected]:manifests.git -b master

repo sync

我使用官方的repo,不修改的,做repo sync 的時候會出錯。我使用了乙個公司比較老的版本。

我的另外一篇文章寫了 構建自己的repo.git歡迎參考

參考資料

// 寫得不錯

向上取整與向下取整

向下取整的運算稱為floor,用數學符號 表示,與之相對的,向上取整的運算稱為ceiling,用數學符號 表示。c語言定義的取整運算既不是floor也不是ceiling,無論運算元是正是負總是把小數部分截斷 truncate 所以當運算元為正的時候相當於floor,當操作符為負的時候相當於ceili...

int向下取整 向上取整

原題點這裡 這道題主要考察的是排序,有個方便的方法就是定義乙個結構體,儲存每個志願者的報名號和筆試分數,然後定義乙個排序就ok了 值得注意的是,題目裡有乙個要求是取給定人數 150 向下取整 的分數作為面試分數線,這裡順便提一下c 裡面的兩個取整函式 地板函式 floor 和天花板函式 ceil 舉...

oracle 向上取整 向下取整

oracle對向上取整,向下取整,四捨五入取整都提供了函式 ceil函式實現向上取整 floor trunc實現向下取整 round實現四捨五入取整 ceil 向上取整,也就是取最接近待取整的數a,並且大於或等於a select ceil 10.12 from dual 返回11 select ce...