首先,要使用 gitolite 一定得先會使用 git。下面就不贅述。
初次設定
使用 gitolite 有以下兩個前置動作
- 建立 ssh keypair
如果對於產生過程有什麼疑慮,都可以刪掉剛產生的 keypair,重新產生,沒有不良影響。Keypair 產生後,就可以將 public key 與 fingerprint 提供給管理員新增帳號。為了確保安全,最好跟管理員用另外的管道確認 fingerprint 正確。(例如用網路傳輸 public key,用電話確認 fingerprint)
- 設定 ssh host alias (for Linux user, optional)
如果想要簡化後續操作 ssh 時輸入的資訊,可以事先設定好。這邊須填入由 gitolite 管理者提供的 user
, hostname
, port
等資訊:
$ vim ~/.ssh/config
host gitserver
user git
hostname localhost
port 22
identityfile ~/.ssh/mykey
最後面的 identity file 就是 private key,如果不想設定也可以直接把 private key 更名為 id_rsa
放在 ~/.ssh
下即可。
一般使用
申請 repository
申請 repository 只要將想使用的名字告知 gitolite 管理員即可。如果有特殊需求,可以建立規則,自行新增,但使用上須更加小心。
指定群組
如果有多人為同一個 team 的成員,可設定為群組,方便管理。
權限控制 (進階)
Gitolite 可以對 repository 中的每個 branch 或 tag 進行詳細的控制,例如 leader 可以讀寫所有 branch,而成員只能讀取 master,以及讀寫自己所屬的 branch 等等。若需要進階的權限控制可以詢問你的 gitolite 管理員。
範例
@team = alice bob
repo @all ### 所有 repo
R = boss ### 老闆都可以看
repo project
R master$ = crboy @team
RW+ master$ = crboy
RW dev$ = crboy @team
存取 repository
由 gitolite 建立的 repo link 比較單純,不須加上路徑,如下:
<git_user>@<host_address>:<repo_name>
以上面的例子而言,即為:
[email protected]:project (通常的狀況下不會是 localhost,這部份就要自己變通了)
如果有照上面設定 ssh config 的話,可以寫:
gitserver:project
在這裡我們將 host alias 設定為
gitserver
(按照前面的 ssh config 設定),冒號後面直接接上 repo 名稱即可。
將現有 repo 放到 gitolite 上
其實只是把 clone 空 repo 的動作省略,改為直接設定遠端 repo 位置而已
$ git remote add origin ssh://[email protected]:project
$ git push origin master
結語
其實基本上的 gitolite 使用並沒有什麼技巧,只要把 ssh key 準備好並設定一下,能夠順利 clone 回來的話就沒問題了。或也可以把現有 repo push 到 gitolite server 上面的空 repo 去,方式其實都大同小異。如果要學習 gitolite 的管理才比較需要 K 文件之類的。:)
沒有留言:
張貼留言