Gitolite 部署GiT 仓库
简介
gitolite 提供了便于部署git远程仓库的工具,它本身并不提供服务,服务仍旧依托 ssh 对外提供。
gitolite 增强了授权体系,和仓库管理功能。
在本地clone一个gitolite-admin的仓库,直接在本地修改,再推送到远程服务器上即可生效。
gitolite适合小团队管理.
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 cd ssh-keygen -t rsa
修改秘钥名称
mv .ssh/id_rsa.pub .ssh/admin.pub chmod 700 .ssh/admin.pub
部署
克隆 gitolite 版本库
git clone https://github.com/sitaramc/gitolite
安装 gitolite
[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 git-admin@127.0.0.1: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 <id_rsa.pub>)
└── admin.pub
gitolite配置文件说明
在 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 "you@example.com" [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 git-admin@172.16.0.64:devops.git
Cloning into 'devops'...
warning: You appear to have cloned an empty repository.
[root@node3 ~]# cd devops/
[root@node3 devops]# ls
[root@node3 devops]# touch tt{1..100}.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
作者:闫世成
出处:http://cnblogs.com/yanshicheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。

浙公网安备 33010602011771号