首先吐槽一下网上的各种教程,大部分都扯蛋,估计都是些所谓的“编辑”在网上瞎抄来的……
以下内容都是基于CentOS的服务器端,Mac OS X的客户端。
如果是使用的Windows的客户端,需要在git官网下载安装对应的客户端安装程序,并在“Git Shell”中操作,不要直接在cmd窗口中操作。
先说安装git,这个是非常之简单:
yum install git git —version
如果能正常输出git的版本号,这样就算是安装好git并可以正常使用了,否则就根据错误提示去一步步修复软件源就对了。
在安装好了git用户之后,现在要考虑的就是如何管理git的版本仓库的问题了,由于大神在设计git的时候,并没有考虑到那么多复杂的权限问题,导致用户可以直接访问到服务器上的所有版本库。要解决这个问题,就需要借助于Gitolite这个软件了。
安装Gitolite
在安装之前,先要配置好管理员账户的SSH免登录。
在客户端上执行ssh-keygen命令,直接连续3个回车,在~/.ssh文件夹中生成两个文件:id_rsa为私匙, id_rsa.pub为公匙,把 id_rsa.pub文件复制到服务器的git账户的home文件夹下(/home/git/)待用。
然后在服务器上Gitolite,注意把YourName换成你自己的名字
cd rm -rf .ssh/authorized_keys mv id_rsa.pub YourName.pub mkdir bin git clone git://github.com/sitaramc/gitolite gitolite/install -to $HOME/bin bin/gitolite setup -pk YourName.pub
这样,就算是安装好了,下面再看如何用Gitolite来具体管理版本仓库。
Gitolite的设计可谓是相当的巧妙,管理版本库,就是管理一个基本的配置文件而已,设置都不需要在服务器上去操作,直接用刚才的管理员账户在客户端上操作就行了:
git clone git@server_ip_or_domain:gitolite-admin vim gitolite-admin/conf/gitolite.conf
看看conf文件的内容,是不是很容易理解? 要添加一个仓库,只需要再配置一个repo块,用户授权也很简单,RW表示读写 R表示只读,把其他用户的id_rsa.pub文件重命名成RW或R时指定的用户名.pub放到gitolite-admin/keydirs即可。
修改好conf文件,复制好pub文件,然后和操作普通的git仓库一样,commit再push到服务器上就万事大吉了。
Gitolite会自动创建仓库,并把pub文件内容添加到git的.ssh/authorized_keys文件中。
要取消某个用户对指定仓库的访问权限,则直接在conf文件中找到对应的repo块,删除用户那一行配置,commit,push,OK。
如果要删除一个仓库,也很简单,直接在conf中删除整个repo块,并push到服务器上,这样这个库就没人能访问了,但库的文件并不会从服务器上删除,需要手动去删除下,这个道理大家应该懂?Gitolite还给咱留了一条退路。。。。