Ubuntu 11.10 Server 安装Git 服务器

因为后面要采用Git代替Subversion,花了点时间配置了Git服务端和客户端,像以前一样,仍然基于最新的Ubuntu11.10 server/desktop系统。

注意,Git是分布式管理工具,因此没有真正的Server,本文用了三台机器,分别是

S1 代表 机房里面的Ubuntu 11.10 server

C1 代表 第一台拥有管理权限的 Ubuntu desktop

C2 代表 后来被添加进来的拥有管理权限的Ubuntu desktop

三台机器都可以看作是服务器。只是从方便人使用的角度,总是将项目文件提交到S1上,并从S1上获得最新项目文件。

1.Ubuntu server安装Git服务程序

下文称这台Ubuntu server为S1

[plain]

sudo apt-get install git-core  

2.S1上安装Gitosis程序.

Gitosis是一个工具程序,可以帮助我们进行Git仓库的访问控制和远程管理。

[plain]

sudo apt-get install Python-setuptools   mkdir ~/src   cd ~/src   git clone git://eagain.net/gitosis.git   cd gitosis   sudo python setup.py install  

3.S1上创建一个git帐号。

没有密码。这个帐号是给Gitosis程序使用的。

[plain]

sudo adduser \     --system \     --shell /bin/sh \     --gecos 'git version control' \     --group \     --disabled-password \     --home /home/git \     git  

4.安装远程管理客户端

下文将第一个远程管理客户端称为C1

[plain]

sudo apt-get install openssh-client   ssh-keygen  

如果没有安装openssh-client,才需要第一行命令。ssh-keygen命令会创建公钥和私钥文件。将公钥文件复制到服务端。然后在S1上导入到Gitosis中以后C1就无需用户名和密码便能通过SSH连接服务端了。

[plain]

scp /home/chenshu/.ssh/id_rsa.pub cncm@S1:/home/cncm   sudo -H -u git gitosis-init < /home/cncm/id_rsa.pub  

得到下面的结果:

Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

意思是S1上已经成功创建了仓库目录,路径是/home/git/repositories,并且里面还创建了一个管理员仓库,叫gitosis-admin。


修改S1上一个文件的权限:

[plain]

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

从S1上clone出gitosis-admin仓库到C1:

[plain]

/home/chenshu/my_git   cd ~/my_git  

[plain]

git clone git@S1:gitosis-admin.git   Cloning into gitosis-admin...   remote: Counting objects: 5, done.           remote: Compressing objects: 100% (4/4), done.           remote: Total 5 (delta 1), reused 5 (delta 1)           Receiving objects: 100% (5/5), done.   Resolving deltas: 100% (1/1), done.  

现在你可以通过修改gitosis-admin/gitosis.conf文件来远程管理S1上的仓库:

[plain]

[gitosis]      [group gitosis-admin]   members = chenshu@chenshu-System-Product-Name   writable = gitosis-admin  

上面是之前gitosis初始化导入C1的公钥的时候自动创建的,已经将C1的用户加入到管理员成员中

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/57a2249071cebee7605304306ce727b4.html