1,概念說明
需要區分gitolite服務器、gitolite管理員、gitolite普通用戶三者的區別;
gitolite服務器是git服務器,gitolite管理員與git服務器可以是兩個服務器,gitolite管理員是第一個git用戶;
所有的git用戶的添加等操作必須是gitolite管理員使用git操作進行添加;就是git add/commit/push;
2,文件下載
找一個可以上網的機器,執行命令:
git clone git://github.com/sitaramc/gitolite
下載後把這個文件夾上傳到需要安裝gitolite的服務器上面;
必須使用這種方式,因爲安裝的時候需要查找gitolite/.git文件夾;
如果沒有.git文件夾,進行安裝的時候會出現如下錯誤:
git describe failed; cannot deduce version number
3,gitolite安裝
添加操作系統用戶git
adduser git
把gitolite管理員的公鑰上傳到/home/git下面,假設名字爲git_admin.pub;
使用git用戶進行gitolite安裝
mkdir bin # 創建bin目錄用於安裝gitolite
./gitolite/install -to ~/bin # 進行gitolite安裝
~/bin/gitolite setup -pk ~/git_admin.pub # 這是進行git環境初始化的過程;
通過setup,會創建~/.gitolite文件夾,這裏面有config和key;
還會創建repositories文件夾,裏面會放倉庫;還有projects.list,存放倉庫名稱;
4,gitolite管理員初始化
git clone git@IP地址:gitolite-admin.git
此命令是在gitolite管理員的環境下執行的,由於使用了git_admin.pub進行了初始化,所以
這種情況下是可以clone下來的,會在當前目錄生成gitolite-admin文件夾,這裏面有
conf/gitolite.conf文件(記錄各個用戶權限) 和 keydir文件夾(存儲各個用戶公鑰);
gitolite管理員進行添加之後,必須使用git add/commit/push操作進行權限設置生效;
如果在conf/gitolite.conf文件中將管理員的權限刪掉,而且還上傳了到了服務器,
下一次就無法進行管理了,可以在git服務端進行如下操作:
把.gitolite/conf/gitolite.conf中的內容修改回來
使用命令gitolite compile進行恢復;
5,添加普通gitolite用戶
對於普通用戶生成公鑰私鑰
ssh-keygen -t rsa
生成之後需要把user.pub公鑰交給gitolite管理員,由管理員進行配置;
在conf/gitolite.conf文件中填寫用戶名user01,把用戶的公鑰文件user01.put方總keydir文件夾下面;
然後git add/commit/push
6,普通用戶git操作
配置.ssh/config文件,
host git-server user user01 hostname 192.168.0.111 port 22 identityfile ~/.ssh/user01
這樣進行git clone git-server:/folder/xxx 的時候就可以使用.ssh/user01私鑰進行認證;
7,程序的方式進行git讀取
如果一個操作系統有git命令,是可以使用操作系統用戶進行git操作;
git clone [email protected]:/home/user01/abc.git
在系統提示輸入密碼的時候輸入密碼;
注意這裏使用的是user01的用戶名密碼,必須保證user01對/home/user01/abc.git的訪問權限;
另外,/home/user01/abc.git可以是gitolite創建的repository中的文件夾,
也可以是把repository中的文件夾拷貝出來,放到別的地方,只要訪問權限足夠就使用git clone進行下載;
8,公鑰私鑰生成方式
ssh-keygen -t rsa -f filename
可以生成以filename命名的公鑰私鑰,存儲於~/.ssh文件夾;
9,參考資料
https://www.worldhello.net/gotgit/05-git-server/040-gitolite.html