Gitolite 部署GiT 倉庫

2022-08-05 01:06:21 字數 4536 閱讀 6099

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-admin 

cdssh-keygen -t rsa

mv .ssh/id_rsa.pub .ssh/admin.pub

chmod 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.pub

initialized 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.git

cloning 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為例構建乙...