三、Gitosis管理(权限管理建议使用这种方法)
服务器端
1 安装Gitosis
下载Gitosis
wget https://github.com/res0nat0r/gitosis/archive/master.zip
(地址可以自己寻找合适的,上面地址下载以后为master,需要改名为master.zip)
$unzip master.zip
$ cd gitosis-master
$ python setup.py install(root用户)
$ cd gitosis
分类: Python/Ruby
shell中输入:
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install
初始化 Gitosis 了。需要通过自己的公钥来运行 gitosis-init (git用户)
useradd git
su - git
cd
cd /home/git
mkdir .ssh
ssh-keygen
$ gitosis-init < /home/git/.ssh/id_rsa.pub
将这个新的控制仓库中的 postupdate脚本加上执行权限
$ chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update (root用户)
测试是否配置正确
$ ssh git@192.168.1.83 (git用户)
输出下面内容为正确
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to 192.168.1.83 closed.
$ git clone git@192.168.1.83:gitosis-admin.git (git用户)
(若无法克隆,说明安装有问题,不是绝对路径)
$ cd gitosis-admin
$ ls
keydir 为放置公钥的文件路径
gitosis.conf为配置权限目录
$ cat gitosis.conf
默认内容:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
Members = git@localhost
添加一个群组
[group myproject]
writable = melon_project
Members = melon (多个时候,空格分开)
----
生成密钥,将公共密钥 存为melon.pub (跟members相同),上传到服务器/home/git/gitosis-admin/melon.pub,保存私钥保存
-----
$ git add .
$ git commit -m “message” .
$ git push
第一次需要通过这样的方式生成项目仓库
$ mkdir melon_p
$ cd melon_p
$ git init
$ git remote add origin git@192.168.1.83:melon_project.git
$ git push origin master (会提示没有提交任何文件,无所谓,这步会创建melon_project.git仓库,也可以添加些文件 再提交push)
之后,就可以在外部克隆仓库了..
注意: 使用gitosis进行控制时,不能在url前面添加 ssh:// 添加了会无法克隆仓库
基本的服务端和客户端都已经实现了,可以用git来作为项目的版本控制了