Git server account management

10
使用 Gitolite 管理 git repositories 帳號及權限 Author: Pinglun.Liao Email: pinglunliao at gmail dot com

description

Git server account management with gitolite

Transcript of Git server account management

Page 1: Git server account management

使用Gitolite管理 git repositories帳號及權限

Author: Pinglun.Liao

Email: pinglunliao at gmail dot com

Page 2: Git server account management

目錄

Git Server 環境設定......................................................................................................3

新增個人帳號................................................................................................................5

設定新專案....................................................................................................................6

logs.................................................................................................................................9

參考資源......................................................................................................................10

2

Page 3: Git server account management

Git Server 環境設定

建立 gitolite群組和 gitolite使用者

sudo addgroup gitolite

sudo adduser --disabled-password --home /home/gitolite --ingroup gitolite gitolite

安裝 git and gitolites

sudo apt-get install git-core gitolite

安裝完成會出現此訊息:

No adminkey given - not initializing gitolite in /var/lib/gitolite

若沒出現此訊息,則安裝未成功,請以 source code 的方式安裝 gitolite。

***以 source code 的方式安裝 gitolite***

git clone git://github.com/sitaramc/gitolite

gitolite/src/gl-system-install

export PATH=/home/gitolite/bin:$PATH

產生 git Server管理者公鑰

ssh-keygen -t rsa # 產生 id_rsa, id_rsa.pub

Generating public/private rsa key pair.

Enter file in which to save the key (/home/vmuser/.ssh/id_rsa): 管理者工號

Enter passphrase (empty for no passphrase): [請直接按 Enter]

Enter same passphrase again: [請直接按 Enter]

將 public/private key放到~/.ssh下

3

Page 4: Git server account management

mv管理者工號.pub管理者工號 ~/.ssh/

將管理者的 public key放到 Server

scp ~/.ssh/管理者工號.pub [email protected]:/tmp/

管理者設定

ssh [email protected] # Login to Git Server

sudo su - gitolite

gl-setup -q /tmp/管理者工號.pub # 匯入管理者的 Public key.

exit

將 gitolite-admin.git移至公司專案存放的路徑

sudo mv /var/lib/gitolite/repositories/gitolite-admin.git [newAbsolutePath]

修改.gitolite.rc內容

sudo gedit /var/lib/gitolite/.gitolite.rc

找到 $REPO_BASE="repositories"此行,改成如下:

$REPO_BASE="[newAbsolutePath]"

存檔,離開 Editor。

至此,若沒有任何錯誤的話,git server的環境設定就設定成功了,而 gitolite是

用 gitolite-admin.git專案來管理帳號及權限,所以需要抓下來修改、設定。

gitolite-admin資料夾會看到下面內容:

conf/gitolite.conf # 設定檔, 設定誰可以讀寫哪個專案的 Repository

keydir # 目錄,放每個帳號的 public key

4

Page 5: Git server account management

新增個人帳號

首先產生個人公鑰:

ssh-keygen -t rsa # 產生 id_rsa, id_rsa.pub

Generating public/private rsa key pair.

Enter file in which to save the key (/home/vmuser/.ssh/id_rsa): 工號(若同一個有多

個 linux host的話,請以工號-流水號命名,例如:u08459-1, u08459-2…)

Enter passphrase (empty for no passphrase): [請直接按 Enter]

Enter same passphrase again: [請直接按 Enter]

將 public/private key放到~/.ssh下

mv工號.pub工號 ~/.ssh/

將自己的 public key放到 Server的 /tmp 下

scp 工號.pub [email protected]:/tmp/

***上傳 public key後請 git server的管理者做下列步驟***:

git clone [email protected]:gitolite-admin

cd gitolite-admin

cp /tmp/工號.pub keydir

git add keydir/工號.pub

git push origin master

5

Page 6: Git server account management

設定新專案

下載 gitolite-admin專案及修改 conf/gitolite.conf

git clone [email protected]:gitolite-admin

cd gitolite-admin

gedit conf/gitolite.conf

gitolite.conf的預設內容如下:

repo gitolite-admin

RW+ = admin

repo testing

RW+ = @all

註:不要任意更動 gitolite-admin的權限設定。

例子一:新增 hello專案及專案成員,專案成員都可讀取與寫入,非專案人員只

可讀取。在 gitolite.conf 預設內容下加入:

repo hello

RW = u08459 u08335 u08452 u7370

R = u1234 u08561 u01234

修改此檔後

git add conf/gitolite.conf

git commit -m '新增 hello專案成員與設定成員與非成員的權限(簡要說明修改的

內容)'

git push

例子二:新增 puzzle專案及專案成員,專案成員都可讀取與寫入,非專案人員

無法讀取與寫入。在 gitolite.conf 預設內容下加入:

@puzzleMembers = u08459 u08335 u08452 u7370

repo puzzle

RW = @puzzleMembers

修改此檔後

git add conf/gitolite.conf

git commit -m '新增 puzzle專案成員與設定成員與非成員的權限(簡要說明修改的

內容)'

git push

註:此兩例子會在Git Server上建立新的空專案,專案的內容必須由專案成員上

6

Page 7: Git server account management

傳(git push)。

7

Page 8: Git server account management

上傳專案內容

以 hello專案為例子:

git clone [email protected]:hello

cd hello

注意:請先刪除目前現有專案資料夾下的所有 git資訊

find . -name .git -type d -print0 | xargs -0 rm -rf

將要加入 hello專案的檔案移至 hello

mv /old/Hello/Path/* .

git add .

git commit -m '簡要說明專案的內容’

git push origin master

8

Page 9: Git server account management

logssudo ls /var/lib/gitolite/.gitolite/logs/

or

ls ~/.gitolite/logs/

9

Page 10: Git server account management

參考資源

Pro Git

http://progit.org/book/ch4-8.html

gitolite tutorial by Sena Wario

https://sites.google.com/site/senawario/home/gitolite-tutorial

Linux 使用 Gitolite 架設 Git Server

http://blog.longwin.com.tw/2011/03/linux-gitolite-git-server-2011/

10