安装:
# 获取版本库
git clone git://github.com/sitaramc/gitolite
# 创建bin目录,用于存放安装后的文件
mkdir -p ~/bin
# 将gitolite安装到bin目录
gitolite/install -to ~/bin
# 使用YourName.pub公钥初始化版本库
gitolite setup -pk YourName.pub #YourName.pub
是管理员的公钥 这个公钥最好用linux服务器本身生成的
管理用户:
添加删除用户
绿颜色是新增用户的过程
红颜色是删除用户的过程
管理也是在服务器上,自己随便找个路径,把管理的文件夹clone下来。
- [root@localhost luxiaoshuai]# git clone root@192.168.101.233:gitolite-admin.git
- 正克隆到 'gitolite-admin'...
- The authenticity of host '192.168.101.233 (192.168.101.233)' can't be established.
- RSA key fingerprint is f1:c6:64:d7:77:c8:c2:db:88:4f:0b:94:73:6e:da:59.
- Are you sure you want to continue connecting (yes/no)? root^H^H^H^H^H
- Please type 'yes' or 'no': yes
- Warning: Permanently added '192.168.101.233' (RSA) to the list of known hosts.
- remote: 对象计数中: 6, 完成.
- remote: 压缩对象中: 100% (4/4), 完成.
- remote: Total 6 (delta 0), reused 0 (delta 0)
- 接收对象中: 100% (6/6), 完成.
- 检查连接... 完成。
- [root@localhost luxiaoshuai]# ls
- git git-2.4.3 gitolite-admin
- [root@localhost luxiaoshuai]# cd gitolite-admin/
- [root@localhost gitolite-admin]# ls
- conf keydir
- [root@localhost gitolite-admin]# cd keydir/
- [root@localhost keydir]# ls
- id_rsa.pub
- [root@localhost keydir]# rz #上传用户的pub key
- [root@localhost keydir]# git add .
- [root@localhost keydir]# ls
- id_rsa.pub win7Client.pub
- [root@localhost keydir]# git status
- 位于分支 master
- 您的分支与上游分支 'origin/master' 一致。
- 要提交的变更:
- (使用 "git reset HEAD <文件>..." 撤出暂存区)
- 新文件: win7Client.pub
- [root@localhost keydir]# git commit -a -m "add user by admin"
- [master 7b76e81] add user by admin
- Committer: root <root@localhost.localdomain>
- 您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确
- 与否。您可以对其进行设置以免再出现本提示信息:
- git config --global user.name "Your Name"
- git config --global user.email you@example.com
- 设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:
- git commit --amend --reset-author
- 1 file changed, 1 insertion(+)
- create mode 100644 keydir/win7Client.pub
- [root@localhost keydir]# git config --global user.name "admin"
- [root@localhost keydir]# git config --global user.email "admin@zlebank.com"
- [root@localhost keydir]# git commit --amend --reset-author
- [root@localhost keydir]# git push origin master
- 对象计数中: 4, 完成.
- 压缩对象中: 100% (4/4), 完成.
- 写入对象中: 100% (4/4), 688 bytes | 0 bytes/s, 完成.
- Total 4 (delta 0), reused 0 (delta 0)
- To root@192.168.101.233:gitolite-admin.git
- 02d99b9..96ea9c2 master -> master
- [root@localhost keydir]# ls
- id_rsa.pub win7Client.pub
- [root@localhost keydir]# rm -f win7Client.pub
- [root@localhost keydir]# ls
- id_rsa.pub
- [root@localhost keydir]# git commit -a -m "delete"
- [master 281149f] delete
- 1 file changed, 1 deletion(-)
- delete mode 100644 keydir/win7Client.pub
- [root@localhost keydir]# git push origin master
- 对象计数中: 3, 完成.
- 压缩对象中: 100% (2/2), 完成.
- 写入对象中: 100% (3/3), 295 bytes | 0 bytes/s, 完成.
- Total 3 (delta 0), reused 2 (delta 0)
- To root@192.168.101.233:gitolite-admin.git
- 96ea9c2..281149f master -> master
- [root@localhost keydir]# ls
- id_rsa.pub
- [root@localhost keydir]# rz
- rz waiting to receive.
- zmodem trl+C ȡ
- 100% 408 bytes 408 bytes/s 00:00:01 0 Errors
- [root@localhost keydir]# ls
- id_rsa.pub luxiaoshuai.pub
- [root@localhost keydir]# git add .
- [root@localhost keydir]# git commit -a -m "
- > add"
- [master 382b12b] add
- 1 file changed, 1 insertion(+)
- create mode 100644 keydir/luxiaoshuai.pub
- [root@localhost keydir]# git push origin master
- 对象计数中: 4, 完成.
- 压缩对象中: 100% (4/4), 完成.
- 写入对象中: 100% (4/4), 680 bytes | 0 bytes/s, 完成.
- Total 4 (delta 0), reused 0 (delta 0)
- To root@192.168.101.233:gitolite-admin.git
- 281149f..382b12b master -> master
- [root@localhost keydir]# ls
- id_rsa.pub luxiaoshuai.pub
管理项目库
新加项目库
[
root@localhost conf]#
cat gitolite.conf
repo gitolite-admin
RW+ = id_rsa
repo testing
RW+ = @all
repo gitTest
RW+ = id_rsa luxiaoshuai
新增黄色部分为一个新的项目库然后执行以下命令
git commit -a -m "add project by luxiaoshuai"
git push origin master
执行完成后,项目自动就已经建好了,不过是空的。
项目权限管理
项目权限划分
- 1. 对所有的分支拥有读写、重置、添加和删除的授权。
- 2. 对master有读写权限的人
- 3.对developer有读写权限的人
- 4. 对项目只有读的人
@admin = luxiaoshuai yangpeng
repo gitolite-admin
RW+ = id_rsa
repo testing
RW+ = @all
repo gitTest
RW+ = id_rsa luxiaoshuai
RW+ developer3$ = yangpeng
repo gitTest2
RW+ = luxiaoshuai yangpeng
repo gitTest3
RW+ = luxiaoshuai #1. 对所有的分支拥有读写、重置、添加和删除的授权。
RW+ master = yangpeng #2. 对master有读写权限的人
RW+ develop$ = yangpengDev #3.对developer有读写权限的人
R develop$ = yangpengR #4. 对项目只有读的人
项目分支划分
- master(生产代码)
- developer(最新的开发变更)