ubuntu12.04搭建git服务器

来源:互联网 发布:木马软件怎么用 编辑:程序博客网 时间:2024/05/22 19:10

ubuntu12.04搭建git服务器

Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。

每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。

一、安装配置git

1、安装gitopenssh

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中

1clone仓库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、加入新文件、提交并pushgit服务器

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

2clone 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


原创粉丝点击