gitolite 提供了便於部署git遠端倉庫的工具,它本身並不提供服務,服務仍舊依託 ssh 對外提供。
gitolite 增強了授權體系,和倉庫管理功能。
在本地clone乙個gitolite-admin的倉庫,直接在本地修改,再推送到遠端伺服器上即可生效。
gitolite適合小團隊管理.
useradd git-admin[root@node4 ~]# id git-admin
uid=1000(git-admin) gid=1000(git-admin) groups=1000(git-admin)
[root@node4 ~]# passwd git-admin
su git-admincdssh-keygen -t rsa
mv .ssh/id_rsa.pub .ssh/admin.pubchmod 700 .ssh/admin.pub
git clone
[git-admin@node4 ~]$ mkdir gitolite-admin[git-admin@node4 ~]$ gitolite/install -to gitolite-admin
[git-admin@node4 ~]$ cd gitolite-admin
[git-admin@node4 gitolite-admin]$ ls
commands gitolite gitolite-shell lib syntactic-sugar triggers version vref
使用 admin.pub 管理員秘鑰初始化倉庫.本機就有了大管理員許可權.
同時會在家目錄下建立 repositories 資料夾,這個資料夾就是儲存所有的 git 倉庫的
預設有兩個 :可.gitolite-admin.git 和test.git, 乙個是管理倉庫的,乙個是測試用 .
[git-admin@node4 gitolite-admin]$ ./gitolite setup -pk ~/.ssh/admin.pubinitialized empty git repository in /home/git-admin/repositories/gitolite-admin.git/
initialized empty git repository in /home/git-admin/repositories/testing.git/
warning: /home/git-admin/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
檢視倉庫
[git-admin@node4 ~]$ cd repositories/[git-admin@node4 repositories]$ ls
gitolite-admin.git testing.git
就是把管理員倉庫的**同步到乙個位置,以後許可權控制,建立倉庫,新增使用者都在這個地方操作就可以了.
[git-admin@node4 ~]$ mkdir data[git-admin@node4 ~]$ cd data/
[git-admin@node4 data]$ git clone [email protected]:gitolite-admin
cloning into 'gitolite-admin'...
remote: enumerating objects: 6, done.
remote: counting objects: 100% (6/6), done.
remote: compressing objects: 100% (4/4), done.
remote: total 6 (delta 0), reused 0 (delta 0)
receiving objects: 100% (6/6), done.
[git-admin@node4 data]$ tree
.└── gitolite-admin
├── conf 配置公戶許可權/倉庫的配置
│ └── gitolite.conf
└── keydir 下面是放對應使用者ssh公鑰,admin.pub這個公鑰可以刪除了(建立格式為 使用者名稱可自定義.pub 使用者名稱許可權控制有用到,裡面複製該使用者的 ssh.pub )
└── admin.pub
在 keydir 下把開發人員的 sshkey 都新增進去乙個人乙個檔案.
配置倉庫
cat conf/gitolite.conf# groups # 使用者組
@admin = admin # 多個使用者用空格隔開,此使用者名稱就是keydir 使用者名稱.pub檔案的名字
@user = root
# access
repo gitolite-admin # 倉庫名 可以自定義多個倉庫
rw+ = admin # rw+ 許可權為: 讀 寫 刪除
# 自定義的倉庫,如果沒有倉庫則會自動建立倉庫
# 如果要新增加倉庫按照這個格式在新增就可以了
repo project
rw+ = @admin # 也可以寫 @all 所有人
rw = @user # rw 許可權為: 度 寫
提交**
提交**之後 gitolite 會自動建立倉庫.
[git-admin@node4 gitolite-admin]$ git config --global user.email "[email protected]"[git-admin@node4 gitolite-admin]$ git config --global user.name "your name"
[git-admin@node4 gitolite-admin]$ git commit -m 'new user test'
[master aeef50c] new user test
2 files changed, 12 insertions(+), 2 deletions(-)
create mode 100644 keydir/test.pub
[git-admin@node4 gitolite-admin]$ git push origin master
enumerating objects: 10, done.
counting objects: 100% (10/10), done.
compressing objects: 100% (5/5), done.
writing objects: 100% (6/6), 1.12 kib | 1.12 mib/s, done.
total 6 (delta 0), reused 0 (delta 0)
remote: warning: syntax error, ignoring: 'rw = @user'
remote: initialized empty git repository in /home/git-admin/repositories/project.git/ # 自動建立倉庫
to 127.0.0.1:gitolite-admin
2e5aae9..aeef50c master -> master
[root@node3 ~]# git clone [email protected]:devops.gitcloning into 'devops'...
[root@node3 ~]# cd devops/
[root@node3 devops]# ls
[root@node3 devops]# touch tt.txt
[root@node3 devops]# git add .
[root@node3 devops]# git commit -m 'add 100 txt'
[root@node3 devops]# git push origin master
enumerating objects: 3, done.
counting objects: 100% (3/3), done.
compressing objects: 100% (2/2), done.
writing objects: 100% (3/3), 448 bytes | 448.00 kib/s, done.
total 3 (delta 0), reused 0 (delta 0)
to 172.16.0.64:devops.git
* [new branch] master -> master
php 自動部署git倉庫
git webhook 自動部署指令碼 專案存放物理路徑 path home wwwroot default naifen requestbody file get contents php input if empty requestbody content json decode request...
使用gitolite管理git許可權
1 伺服器上新增專用管理賬戶git,並在伺服器上安裝git 2 建立本地機器的公私鑰 3 伺服器安裝gitolite 4 倉庫新增與管理 5 新增使用者並管理使用者許可權 6 修改管理員的公鑰 7 修復管理員的許可權 一 伺服器上安裝git略過 二 建立本地機器的公私鑰 ssh keygen f s...
基於Gitolite的Git服務架設
如果不是要與他人協同開發,git根本不需要架設伺服器,git可以直接使用本地版本庫的路徑完成git版本間的操作。但是如果需要和他人分享版本庫,協作開發,就需要能夠通過網路協議操作git庫。git支援的協議很豐富,架設伺服器的選擇也很多,不同的方案有著各自的公優缺點。本文就以gitolite為例構建乙...