作者:莫小北 | 来源:互联网 | 2017-09-21 06:00
因为后面要采用Git代替Subversion,花了点时间配置了Git服务端和客户端,像以前一样,仍然基于最新的Ubuntu11.10server/desktop系统。注意,Git是分布式管理工具,因此没有真正的Server,本文用了三台机器,分别是S1代表机房里面的Ubuntu11.10serverC1代表第一台拥有管理权限的UbuntudesktopC2代表
因为后面要采用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
- sudo apt-get install git-core
2.S1上安装Gitosis程序.
Gitosis是一个工具程序,可以帮助我们进行Git仓库的访问控制和远程管理。
- 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程序使用的。
- sudo adduser \
- --system \
- --shell /bin/sh \
- --gecos 'git version control' \
- --group \
- --disabled-password \
- --home /home/git \
- git
4.安装远程管理客户端
下文将第一个远程管理客户端称为C1
- sudo apt-get install openssh-client
- ssh-keygen
如果没有安装openssh-client,才需要第一行命令。ssh-keygen命令会创建公钥和私钥文件。将公钥文件复制到服务端。然后在S1上导入到Gitosis中以后C1就无需用户名和密码便能通过SSH连接服务端了。
- 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上一个文件的权限:
- sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
从S1上clone出gitosis-admin仓库到C1:
- /home/chenshu/my_git
- cd ~/my_git
- 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上的仓库:
- [gitosis]
-
- [group gitosis-admin]
- members = chenshu@chenshu-System-Product-Name
- writable = gitosis-admin
上面是之前gitosis初始化导入C1的公钥的时候自动创建的,已经将C1的用户加入到管理员成员中