感覺是因為gitolite不像svn是採用apache的權限管理方式,可以跟http綁在一起,讓web工程師在熟悉的環境下操作。這東西是綁ssh的... 自然是需要點時間瞭解。
git也是可以使用WebDAV+apache的方式走http的。請參考其他文件。
- 使用root權限
- 安裝git
- 安裝gitolite --- sudo apt-get install gitolite
- 確認home下面有gitolite這個user。沒有的話請自行建立:
sudo adduser --system --group --shell /bin/bash --disabled-password
gitolite - 切換user為gitolite
- 以下為ssh的設定的部分。跟git還沒有太大的關聯。
- cd /home/gitolite/.ssh (沒有的話請自行建立)
- 使用ssh-keygen來產生給gitolite的admin使用的ssh key。
>ssh-keygen -f adminGenerating public/private rsa key pair. Enter passphrase (empty for no passphrase): (直接按[Enter]) Enter same passphrase again:(直接按[Enter]) Your identification has been saved in admin. Your public key has been saved in admin.pub. The key fingerprint is: ce:1d:13:ed:2d:d4:68:fc:f2:0b:26:8c:b6:13:f5:d0 xxxx@xxxx
之後會產生admin(私鑰)跟 admin.pub(公鑰)這兩個檔案。私鑰自行保留,公鑰需要加到gitolite裡面。下一步會提到。 - 使用gl-setup登錄admin.pub,讓我們可以使用ssh 登入gitolite。
gl-setup admin.pub
- 切換為另一個user(在這邊我們暫時用root),進入~/.ssh目錄。
- 新增一個檔名為config,加入下面的資料:
host gitserver user gitolite hostname 192.168.1.8(之前安裝過的git server的DN或是IP,在同一台機器上操作請填入127.0.0.1) port 22 (依照
之前安裝過的git的設定變動) identityfile ~/.ssh/admin (之前產生的私鑰。公鑰前面有提到要登錄到gitolite上面。) - 到此,gitolite server的基本設置已經完成。
記住一個觀念:gitolite的使用者管理是使用git來實作的。所以會看到都是git的操作...
- 把gitolite的user管理的資料clone回來。
git clone ssh://gitserver/gitolite-admin - 照步驟8的方法使用ssh-keygen來產生給user使用的ssh key。
- 使用git的add/commit/push的動作把user的公鑰加上去。
> cd gitolite-admin/keydir > copy {公鑰的放置路徑}/chacha.pub . > git add chacha.pub > git commit -m "新增使用者:chacha" > git push
- 完成。
- 備註:user端就如前面的步驟11的方法在自己的~/.ssh/config裡面加上資料就可以了。
新增repo:
編輯gitolite-admin/conf/gitolite.conf, 就照著原本裡面有的 gitolite-admin 跟test的指令用法新增各個source code project.
權限的設定:
編輯gitolite-admin/conf/gitolite.conf, 就照著原本裡面有的 gitolite-admin 跟test的指令用法新增各個source code project.
權限的設定:
@developer = chacha magicalprincess
@tester = riiya shiine
repo akazukin-repo
R = @tester //@就是group的前綴字。也可以多個group, 用空格隔開。順道一提,@all是內建的,代表所有的使用者。
RW = @developer
RW+ = admin //+的功用是repo版本回朔。
還可以針對不同的branch規定。
repo akazukin-repo
RW dev-$
= chacha //$代表wildcard. 「dev-」之後不管接什麼字都可以。
R master = magicalprincess //master是保留字,代表main repo.
要注意的是,branch的控制權指控制「寫入」,只要user設定了branch的控制權,該使用者就可以讀取所有branch的資料。一般來說應該是不需要設定到如此詳細,看看就好。最後的小叮嚀:gitolite.conf改完之後別忘了commit跟push...
參考資料:
http://www.atmarkit.co.jp/fjava/rensai4/devtool26/devtool26_1.html (日文)
http://blog.countableset.ch/2012/04/29/ubuntu-12-dot-04-installing-gitolite-and-gitweb/
http://blog.countableset.ch/2012/04/29/ubuntu-12-dot-04-installing-gitolite-and-gitweb/
0 件のコメント:
コメントを投稿