1. 程式人生 > >UBUNTU上的GIT SERVER

UBUNTU上的GIT SERVER

Git是一個開源的版本控制系統,由Linus Torvalds主導,用於支援Linux核心開發。每一個Git工作目錄,都是一個完整的程式碼庫,包含所有的提交歷史。有能力跟蹤所有的程式碼版本,而不會去依賴於網路與中央伺服器。

安裝

Git可以通過以下的命令進行安裝

sudo apt-get install git

配置

每一個git的使用者,在第一次使用的時候都需要通過以下兩個命令,進行相應的配置

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

基本用法

假設使用者可以通過SSH的方式訪問Server,對於使用者想以分散式以及安全的方式使用Git,則已經完全足夠了。在伺服器端,建立一個新的倉庫。

git init --bare /path/to/repository

這會建立一個裸倉庫,它不允許我們直接編輯相應的檔案。如果你需要在伺服器端保留倉庫內容的複本,去掉 --bare 選項就好了。

任何具有SSH許可權的客戶端,均可以克隆相應的倉庫

git clone [email protected]:/path/to/repository

一旦克隆到了客戶端上,使用者即可編輯相應的檔案,然後提交得分享相應的程式碼:

cd /path/to/repository # 編輯修改
git commit -a # 提交所有修改到本地倉庫
git push origin master # 推送修改到伺服器端的倉庫

安裝 gitolite server

雖然以上的那些,對於建立,克隆和修改倉庫已經足夠。但使用者在伺服器端安裝git,最主要是想要一個傳統的原始碼控制管理伺服器,具有多使用者與許可權管理的功能。推薦的解決方案是通過以下命令,安裝 gitolite server:

sudo apt-get install gitolite

配置 gitolite

相比於大多數的類Unix系統,gitolite server的配置有一些小小的區別。傳統的配置檔案會存放在 /etc 的目錄之下,而gitolite則把自己的配置檔案放在一個git的倉庫之中。配置一個新的gitolite的第一步,則需要有配置倉庫的訪問許可權。
首先,讓我們為gitolite建立一個使用者,並具體其訪問許可權。

sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git

現在我們想讓gitolite知曉倉庫管理員的SSH公鑰。我們假設當前使用者是倉庫的管理員。

cp ~/.ssh/id_rsa.pub /tmp/$(whoami).pub

我們切換到git使用者,並將管理員的公鑰匯入gitolite。

sudo su - git
gl-setup /tmp/*.pub

Gitolite會允許在安裝過程中,對配置檔案做一些初期的修改。你現在可以通過管理員使用者(即擁有管理員公鑰的帳戶),克隆和修改gitolite的配置倉庫。切回到管理員賬號,克隆配置倉庫:

exit
git clone [email protected]$IP_ADDRESS:gitolite-admin.git
cd gitolite-admin

gitolite-admin目錄包含兩個子目錄,conf 和 keydir。配置檔案存放在 conf目錄,而keydir目錄存放了使用者的公鑰資訊。

管理gitolite帳戶和倉庫

新增一個新的帳戶到gitolite很簡單:只需要獲取使用者的SSH公鑰資訊,以$DESIRED_USER_NAME.pub 的形式放在keydir目錄之下即可。值得注意的是,gitolite的使用者名稱不必和系統的使用者名稱相匹配,它們僅僅是用在gitolite的配置檔案之中,管理其訪問許可權的。同樣的,刪除使用者只需要刪除其對應的公鑰檔案即可。所有修改完畢之後,別忘了提交相應的修改,然後通過以下命令推回伺服器端:

git commit -a
git push origin master

倉庫是需要編輯conf/gitolite.conf檔案進行管理。通過空格分割,遵守相應的許可權規則,指定相應的倉庫即可。以下是一些預設的示例。

repo    gitolite-admin
        RW+     =   admin
        R       =   alice

repo    project1
        RW+     =   alice
        RW      =   bob
        R       =   denise

使用伺服器

要使用新建立的帳戶,使用者需要gitolite的管理員將其公鑰匯入到gitolite的配置倉庫之中。然後,使用者即可擁有相應的專案許可權:

git clone [email protected]$SERVER_IP:$PROJECT_NAME.git

或者為一個已存在的git倉庫新增一個遠端地址:

git remote add gitolite [email protected]$SERVER_IP:$PROJECT_NAME.git

如此便搭好了一個簡易的,可用的git server。為了更好的檢視相應的程式碼,或者管理,也可使用相對較重的,gitlab開源專案。