sudo chown -R git:git /home/git/repositories
sudo chmod -R 777 /home/git/repositories
git commit -am 'add Shop-Project and Shop group'
git remote add origin git@192.168.10.15:Shop-Project.git
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
git clone git@192.168.10.15:gitosis-admin.git
1. 安裝git
emerge -av dev-util/git
2.安裝gitosis
git環境默認是可以直接使用的,但需要為每個成員開ssh權限帳號,且各個倉庫之間的交叉權限管理很麻煩,所以需要使用gitosis, 它無需為每個開發人員開設ssh帳號,安全方便。
emerge -av gitosis
如果提示這個包被mask了,需要編輯/etc/portage/package.keywords文件,在里面加入
dev-util/gitosis ~amd64
3.生成公鑰
在客戶端使用
ssh-keygen -t rsa
來生成ssh的key,注意你的主機名需要是全部英文字符,不能有下劃線或者.之類的特殊字符,否則后面在服務端生成版本庫的時候會報錯。
4.上傳公鑰
從客戶端把剛剛生成的公鑰上傳到服務器上。
scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp
5.在服務端生成管理庫
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
成功的話,你將看到類似下面的提示:
Initialized empty Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
設置post-update腳本權限
chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update
至此,服務端配置已經完成。
6.同步配置文件
gitosis本身就是一個git庫,所以管理起來非常方便。下面在客戶端同步gitosis管理庫
git clone git@YOUR_SERVER:gitosis-admin.git
cd gitosis-admin
你將看到以下文件
-rw-r--r-- 1 garry garry 104 Nov 13 05:43 gitosis.conf
drwxr-xr-x 3 garry garry 102 Nov 13 05:43 keydir/
gitosis.conf是gitosis的配置文件,用于配置用戶和權限
keydir/是所有組成員的公鑰
我們可以在本地修改配置更改權限,然后push到服務端后,服務器端就立刻生效
7.創建新的repositories
打開gitosis.conf文件,你將看到
[group gitosis-admin]
writable = gitosis-admin
members = elton@macbook
這個是管理組的權限,members中的用戶名就是剛才上傳的公鑰里面的用戶名。
在這個文件后面加入:
[group myteam]
members = elton@macbook
writable = free_monkey
這里你定義了一個叫myteam的組,授予elton@macbook這個用戶寫“free_monkey”這個repo的權限
git commit -a -m "Allow elton write access to free_monkey"
git push
上面的操作就更新了服務端的權限。
下面就開始創建free_monkey的repo
mkdir free_monkey
cd free_monkey
git init
創建 .gitignore 文件,用于忽略某些不需要進行代碼管理的內容,如rails的應用可能如下:
.DS_Store
log/*.log
tmp/**/*
config/database.yml
db/*.sqlite3
提交代碼:
git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git
git add .
git commit -a -m "initial import"
git push origin master:refs/heads/master
接下來,可以增加成員的公鑰到系統中了
cd gitosis-admin
cp ~/alice.pub keydir/
cp ~/bob.pub keydir/
git add keydir/alice.pub keydir/bob.pub
修改gitosis.conf
[group myteam]
- members = jdoe
+ members = jdoe alice bob
writable = free_monkey
提交修改:
git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"
git push
其它成員就可以獲取代碼了
git clone git@YOUR_SERVER:free_monkey.git
@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
posted on 2016-06-04 10:36
聶文龍 閱讀(316)
評論(1) 編輯 收藏 引用