ubuntu上用gitosis来管理 git服务
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的分布式版本控制软件(Distributed SCM)。Git 汲取了 Torvalds 在维护大型的分布式项目开发方面的经验和对文件系统性能的丰富知识,正如其文档所描述的,“是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。”目前,Linux 内核、X.org 服务器和 Ruby on Rails 等开源项目的版本控制系统都已经切换到 Git。
Gitosis 是 Tommi Virtanen 为了更方便和安全的辅助 Git 架设和管理软件版本库 (Software Repository) 而开发的工具软件。虽然 Git 本身也提供 git-daemon 以架设版本库,但在用户访问控制上做的并不严格。而 Gitosis 允许单个用户帐号管理多个版本库,使用 SSH keys 管理用户认证,不需要 shell 帐号就可以解决多用户访问集中版本库的问题。
1 安装git和gitosis
bear@njava:$sudo apt-get install git-core bear@njava:$sudo apt-get install python python-setuptools bear@njava:$sudo git clone git://eagain.net/gitosis bear@njava:$cd gitosis bear@njava:$sudo python setup.py install
2 建立git用户
bear@njava:$sudo adduser --system --shell /bin/sh --gecos 'git user' --group --disabled-password --home /home/git git
3 初始化gitosis
初始化gitosis管理缘账户,公钥xxx.pub中xxx就是用户名
bear@njava:$ssh-keygen -t rsa bear@njava:$sudo -H -u git gitosis-init < bear.pub bear@njava:$sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
4 设置好ssh帐号的权限,密钥
测试git账户登陆
$ ssh git@njava.com PTY allocation request failed on channel 0 fatal: unrecognized command 'gitosis-serve bear@desktop' Connection to gitserver closed.
5 通过git远程设置gitosis
bear@laptop:$git clone git@njava:gitosis-admin.git bear@laptop:$ls ls -alh gitosis-admin total 8 drwxr-xr-x 5 bear staff 170B Jul 8 20:53 . drwxr-xr-x 8 bear staff 272B Jul 9 00:35 .. drwxr-xr-x 16 bear staff 544B Jul 8 20:54 .git -rw-r--r-- 1 bear staff 135B Jul 8 20:53 gitosis.conf drwxr-xr-x 4 bear staff 136B Jul 8 20:52 keydir bear@laptop:$ vi gitosis-admin/gitosis.conf [gitosis] gitweb = no daemon = no loglevel = DEBUG [group gitosis-admin] writable = gitosis-admin members = bear bear@laptop:$cd gitosis-admin bear@laptop:$git push
6 新增加用户
将新用户的公钥丢到keydir目录
编辑gitosis.conf文件
[group android] writable = android_njava members = bear android [group ios] readonly = ios_njava members = bear
还可以指定某个组为成员之一(在组名前加上 @ 前缀),自动继承该组的成员:
[group android] writable = android_njava members = android moto [group ios] readonly = ios_njava members = bear @android
还可以指定某个组为成员之一(在组名前加上 @ 前缀),自动继承该组的成员
link:参考