使用Gitosis搭建Git服務器


安裝gitosis
首先是獲取gitosis(這里假設你已經安裝過git):
git clone git://github.com/res0nat0r/gitosis.git
接下來安裝gitosis:
python setup.py install
如果出現以下錯誤:
Traceback (most recent call last): File "setup.py", line 2, in ? from setuptools import setup, find_packages ImportError: No module named setuptools
或者
-bash: python: command not found
那么你還需要安裝python-setuptools:
yum install python-setuptools


接下來添加用來管理倉庫的用戶,用戶名任意,我們這里使用git:
useradd git
修改PATH,使git用戶可以調用git:
vi /home/git/.bashrc
PATH=/usr/local/bin:/usr/local/bin/git:$PATH

創建key pair(密鑰對),並拷貝public key到/tmp下,這樣可以確保gitosis-init命令對其有讀取權限:
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub /tmp/id_rsa.pub
以git用戶來執行gitosis-init命令:
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
此時/home/git下增加了兩個目錄:
gitosis
repositories
其中gitosis是gitosis的根目錄,repositories是倉庫存放目錄。


如果出現以下錯誤:
if install git from source, otherwise:raise child_exceptionOSError: [Errno 2] No such file or directory
那么做個symlink:
ln -s /usr/bin/git /usr/local/bin/git #安裝好git就可先設置好這個軟連接

給腳本post-update賦予可執行權限:
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update


添加新倉庫
gitosis的管理是通過git來管理的,clone一下:
git clone git@localhost:gitosis-admin.git #所在目錄可以隨意,比如:/home/git-access
如果出現以下錯誤:
Cloning into gitosis-admin...
ssh: connect to host 192.168.1.30 port 22: Connection refused
fatal: The remote end hung up unexpectedly
cd gitosis-admin
ls -l
-rw-r--r-- 1 weizhifeng staff 124 6 14 13:45 gitosis.conf
drwxr-xr-x 3 weizhifeng staff 102 6 14 13:46 keydir

keydir目錄用來存放用戶的public key(.pub文件),gitosis.conf為配置文件。
看一下配置文件:
cat gitosis.conf
[gitosis]

[group gitosis-admin]
members = Mac
writable = gitosis-admin
其中group代表一個組,writable是倉庫名,members是此倉庫的成員,可以有多個成員,用空格進行分割。
添加一個新倉庫:
[group test]
members = Mac #這個是xxx.pub文件名,例如:marco.pub
writable = test
把更改提交並push到git@localhost:gitosis-admin.git:
git commit -a -m "添加新倉庫test"
git push

*倉庫名不要使用_下划線

在本地(代碼倉庫服務器)創建一個倉庫,並push到git@localhost:test.git,gitosis會在/home/git/repositories自動創建test.git這個倉庫:
mkdir test
cd test
touch README
git init
git remote add origin git@localhost:test.git
git add .
git commit -am '初始化'
git push origin master

此時,添加了權限的用戶可以正常克隆代碼了,例如:git clone git@192.168.73.128:test.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM