ubuntu12.04搭建git服务器
Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。
每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。
一、安装配置git
1、安装git和openssh
a@ubuntu:~$ sudo apt-get install git-coreopenssh-server openssh-client
添加用户git, 该用户将作为所有代码仓库和用户权限的管理者:
a@ubuntu:~$ sudo useradd -m git
a@ubuntu:~$ sudo passwd git(设置git管理者用户密码)
2、建立git仓库
a@ubuntu:~$ sudo mkdir /home/git/repositories
让除了git 以外的用户对此目录无任何权限:
a@ubuntu:~$ sudo chown git:git/home/git/repositories
a@ubuntu:~$ sudo chmod 755/home/git/repositories
二、安装配置gitosis
1、初始化服务器的git用户,为安装gitosis 做准备。在任何一台机器上使用git,第一次必须要初始化一下:
a@ubuntu:~$ git config --global user.name"yourname"
a@ubuntu:~$ git config --global user.email"yourname@server"
例如:
a@ubuntu:~$ git config --global user.name"huangsen"
a@ubuntu:~$ git config --global user.email"huangsen@126.com"
2、安装gitosis
a@ubuntu:~$ sudo apt-get installpython-setuptools
a@ubuntu:~$ cd /tmp
a@ubuntu:/tmp$ git clonehttps://github.com/res0nat0r/gitosis.git
a@ubuntu:/tmp$ cd gitosis
a@ubuntu:/tmp/gitosis$ sudo python setup.pyinstall
3、生成ssh公钥
a@ubuntu:/tmp/gitosis$ ssh-keygen -t rsa
(默认回车,保存到当前用户的主目录下)
a@ubuntu:/tmp/gitosis$cp /home/huangsen/.ssh/id_rsa.pub/tmp/id_rsa.pub
a@ubuntu:/tmp/gitosis$ sudo chmod a+r/tmp/id_rsa.pub
4、让gitosis运行起来
a@ubuntu:/tmp/gitosis$ sudo -H -u gitgitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitializedexisting Git repository in/home/git/repositories/gitosis-admin.git/
5、添加可执行权限
a@ubuntu:/tmp/gitosis$ sudo su
root@ubuntu:/tmp/gitosis#cd /home/git/repositories/gitosis-admin.git/
root@ubuntu:
/home/git/repositories/gitosis-admin.git#chmod 755 hooks/post-update
root@ubuntu:/home/git/repositories/gitosis-admin.git#exit
三、在服务器上新建一个测试项目仓库
1、我们在服务器上新建一个空的项目仓库,叫“trunk”。
切换到git 用户:
huangsen@Jason:/home/git$ su git
$ cd /home/git/repositories
$ mkdir trunk.git
$ cd trunk.git
$ git init --bare
注:这是在服务器上运行的,初始化一个根级的git仓库
$ exit
四、管理gitosis配置文件
一般通过具有gitosis-admin.git(主要利用该库管理git用户)权限的用户先将gitosis-admin.git clone至本地,然后添加用户利用ssh生成的公钥copy至clone的目录下的keydir下,另外修改gitosis-admin.git下的配置文件gitosis.conf---添加相应库的用户,最后将本地的gitosis-admin.git push至server中
1、clone仓库gitosis-admin.git
a@ubuntu:/home/git$ cd ~
a@ubuntu:~$ mkdir work
a@ubuntu:~/work$ git clone git@<serverip>:gitosis-admin.git (在同一台电脑时)
或者:
a@ubuntu:~$ git clone git@<serverip>:/home/git/repositories/gitosis-admin.git
(在另外一台电脑时)
2、添加git服务器的用户,并生成ssh公钥
a@ubuntu:~/work$ sudo useradd -m b
a@ubuntu:~/work$ sudo passwd b
a@ubuntu:~$ git config --global user.name"b"
a@ubuntu:~$ git config --global user.email"b@126.com"
a@ubuntu:~/work$ su b
$ ssh-keygen -t rsa(默认在用户b的主目录下)
$ exit
a@ubuntu:~/work$ sudo -su
root@Jason:/home/howie/work#
cp /home/b/.ssh/id_rsa.pub gitosis-admin/keydir/b@Jason.pub
(keydir是在用户a克隆的gitosis-admin.git下自动生成的目录,)
root@Jason:/home/howie/work#exit
3、修改gitosis.conf文件,配置如下
[gitosis]
[group gitosis-admin]
members = huangsen@Jason
writable = gitosis-admin
[group test]
writable = trunk
members = huangsen@Jason b@Jason
4、加入新文件、提交并push到git服务器
a@ubuntu:~/work$ cd gitosis-admin
a@ubuntu:~/work/gitosis-admin$ git add .
a@ubuntu:~/work/gitosis-admin$ git commit -am"add trunk prj and users"
a@ubuntu:~/work/gitosis-admin$ git pushorigin master
五、初始化测试项目
1、初始化一个版本
a@ubuntu:~/work$ mkdir trunk-ori
a@ubuntu:~/work$ cd trunk-ori/
a@ubuntu:~/work/trunk-ori$ git init
注:这是在用户端的PC 上执行的,为的是初始化一个本地的版本库
a@ubuntu:~/work/trunk-ori$ echo "helloworld" > hello
a@ubuntu:~/work/trunk-ori$ git add .
a@ubuntu:~/work/trunk-ori$ git commit -am"initial version"
a@ubuntu:~/work/trunk-ori$ git remote addorigin git@<server ip>:trunk.git
或者:
a@ubuntu:~/work/trunk-ori$git remote addorigin git@<serverip>:
/home/git/repositories/trunk.git
a@ubuntu:~/work/trunk-ori$ git push originmaster
2、clone trunk仓库
a@ubuntu::~/work/teamwork-ori$ su b
$ cd /home/b
$ git clone git@<server ip>:trunk.git
$ cd trunk
$ vi hello
$ git add .
$ git commit -am "b add"
$ git push origin master
$ exit