Blog Of Leung

personal blog & work notes

View project onGitHub
 

git服务器的搭建

使用git进行源代码管理的好处,就不多说了,简直就是一根魔法棒吧,有时它也可以被当成后悔药吃.

下面是记录我的一些使用经验,内容一如既往的零散,仅能作为日常使用的参考,详细的当然还是看man page了.

ubuntu系统直接apt安装三个包:

sudo apt-get install git
sudo apt-get install gitolite
sudo apt-get install git-core

然后在服务器端创建git专用帐号,以后所有用户都通过这个帐号访问git:

sudo useradd --system --shell /bin/bash --user-group git

给新帐号设置口令:

sudo passwd git

但如果是gentoo系统,通过portage安装gitolite,是会自动生成git帐号的.

然后管理员在自己的机器上生成自己的ssh密钥,并远程拷贝到服务器上:

ssh-keygen -t rsa
scp .ssh/xx_rsa.pub git@server:/tmp/

在服务器端执行:

gl-setup /tmp/xx_rsa.pub

这会在home目录下生成projects.list和repositories,repositories下有两个项目gitolite-admin.git和testing.git,其中gitolite-admin是管理服务器上所有仓库的仓库;testing.git顾名思义就是一个用于测试的仓库.

接着在管理员的客户端克隆gitolite-admin:

git clone git@server:gitolite-admin

如果出现以下错误:

Cloning into 'gitolite-admin'...
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
It might be because a public key has been added to the authorized_keys file
for the gitolite git user account.
you can only have keys generated by Gitolite in the authorized_key file.

这时就需要把管理员本机上以前生成果的key文件删除就好,只保留上面生成的xx_rsa.pub. 这样会把服务器上的gitolite-admin仓库拉取到本地,在这个仓库中进行新仓库的创建,删除,权限的更改等操作.并且这些修改都可以直接在本地完成后提交到服务器即可,不需要登录到服务器上操作,git分布式管理的理念贯彻得很完美.

Author:leung

28 Nov 2013

← Home

comments powered by Disqus