centos下应用gitosis搭建git代码仓库

PS:最近因为项目要用到”版本管理工具”,最后在权衡了svn和git后,大家决定用Git分布式版本控制系统.由于对git不熟悉,所以经过多方查找资料并成功的完整配置了git服务器后,特把此过程写下.
Git是非常著名的分布式版本控制系统,Gitosis则是通过Git与ssh架设中央服务器的软件.关于svn和git的区别,本文不多说,想了解的可以去google AND baidu .

  1. 服务端和客户端配置

            服务器端:root
            服务器端ip:192.168.1.100
            win7客户端管理员user:administrator
            win7客户端管理员ip:192.168.1.101
            
  2. 服务器端:

    git和Gitosis源码安装

    1. 先安装git依赖的包

                      yum -y install  curl curl-devel zlib-devel openssl-devel perl  perl-devel cpio expat-devel gettext-devel autoconf;
                      
    2. 源码下载安装执行

      命令:

                      wget https://git-core.googlecode.com/files/git-1.8.2.rc2.tar.gz
                      tar -zxvf git-1.8.2.rc2.tar.gz
                      cd git-1.8.2.rc2
                      ./configure --with-curl=/usr/local;
                      make && make install
                      

      git下载地址:http://code.google.com/p/git-core/downloads/list

    3. 查看版本号,确实git是否安装成功

                      # git --version
                      git version 1.8.2.rc2
                      
    4. 安装gitosis

                      yum -y install python python-setuptools
                      [root@localhost src]# git clone https://github.com/res0nat0r/gitosis.git
                      [root@localhost src]# cd gitosis
                      [root@localhost src]# python setup.py install
                      #命令汇总:
                      git clone https://github.com/res0nat0r/gitosis.git;cd gitosis;python setup.py install
                      
  3. win7客户端:

    通过win7客户端客户端管理员的公钥来初始化服务器端gitosis,方便日后管理git库

    *注意*必须先安装msysgit和msysgit工具

    1. 管理员ssh密钥生成和上传

                      $ ssh-keygen -t rsa
                      

      在C:\Users\Administrator\.ssh\下生成私钥id_rsa和公钥id_rsa.pub文件

    2. 将刚才生成的id_rsa.pub公钥传输到服务器端的电脑,也可以直接用U盘拷贝过去

                      $ scp /c/Users/Administrator/.ssh/id_rsa.pub git@192.168.1.100:/tmp
                      
  4. 服务器端:

    初始化gitosis

    1. 创建git用户,切换倒git用户下,初始化gitosis

                      [root@localhost ~] /usr/sbin/groupadd git
                      [root@localhost ~] /usr/sbin/useradd -g git git
                      [root@localhost ~] su git
                      [git@localhost ~] gitosis-init < /tmp/id_rsa.pub
                      #初始化空的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
                      #重新初始化现存的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
                      # id_rsa.pub已经无用,可删除
                      [git@localhost ~] rm /tmp/id_rsa.pub
                      #命令汇总:
                      cd;/usr/sbin/groupadd git;/usr/sbin/useradd -g git git;su git;gitosis-init < /tmp/id_rsa.pub;rm /tmp/id_rsa.pub
                      

      初始化后,在/home/git/repositories/下生成名为gitosis-admin仓库的gitosis-admin.git/目录,包含gitosis的配置文件
      gitosis 的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了gitosis-admin.git目录
      *提醒*以后所有的仓库都会生成在/home/git/repositories/目录下,具体参考下例。

    2. 修改文件的权限才可以在管理员客户端更新配置文件:

                      chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
                      
    3. 在/home/git/repositories/下新建一个空的'teamwork'项目仓库供大家测试一下

                      [git@localhost ~]$ cd /home/git/repositories/
                      [git@localhost repositories]$ ls
                      gitosis-admin.git
                      [git@localhost repositories]$ mkdir teamwork.git
                      [git@localhost repositories]$ cd teamwork.git/
                      [git@localhost teamwork.git]$ git init --bare #服务器端初始化仓库
                      #初始化空的 Git 版本库于 /home/git/repositories/teamwork.git/
                      #命令汇总:
                      cd /home/git/repositories/;ls;mkdir teamwork.git;cd teamwork.git/;git init --bare;
                      
  5. win7客户端:

    clone仓库gitosis-admin.git下来,以管理员的身份修改配置

    1. 在E:\新建gitdata文件夹

                      $ git clone git@192.168.1.100:gitosis-admin.git
                      $ cd gitosis-admin
                      

      目录结构:
      gitosis-admin
      --keydir 所有用户包括管理员的公钥**.pub文件
      ----win7_Administrator.pub 管理员公钥
      --gitosis.conf git版本库权限设置

    2. 把你们 team 所有人的 ssh 公钥文件都拿来,按名字重新命名一下,比如 user1.pub, user2.pub等,统统拷贝到 keydir 下

    3. 修改 gitosis.conf 文件,我的配置大致如下:

                      [gitosis]
                      [group gitosis-admin]
                      writable = gitosis-admin
                      members = win7_Administrator
      
                      [group team]
                      writable = teamwork
                      members = win7_Administrator user1 user2
                      

      这个配置文件表达了如下含义:gitosis-admin 组成员有 win7_Administrator,该组对 gitosis-admin 仓库有读写权限;team 组有 win7_Administrator user1 user2 三个成员和keydir下的文件名对应如(user1对应user1.pub)

    4. 当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的 gitserver 上才能真正生效。加入新文件、提交并 push 到 git 服务器

                      $ git add .
                      $ git commit -am "add teamwork project and users"
                      $ git push origin master
                      

      好了,现在服务器就搭建完了,并且有一个空的项目 teamwork 在服务器上,空仓库是不能 clone 的,所以需要某一个有写 权限的人初始化一个版本

                      $ cd
                      $ mkdir teamwork-ori
                      $ cd teamwork-ori
                      $ git init
                      $ echo "test" > test.txt
                      $ git add .
                      $ git commit -am "initial version"
                      $ git remote add oringin git@192.168.1.100:teamwork.git
                      $ git push origin master
                      

      命令操作对应操作图
      1.在E:\gitdata下新建teamwork-ori文件夹
      2.本地初始化 git init 对应工具操作图

      3.
      git remote add oringin git@192.168.1.100:teamwork.git 对应工具操作图

      4.git push origin master 对应工具操作图

      到此为止 teamwork 已经有了一个版本了,team 的其他成员只要先 clone 一下 teamwork仓库,就可以任意玩儿了。(克隆方法可参考上面步骤中的图)

      $ git clone git@git@git-server-ip:teamwork.git 

总结:
在初次安装git环境的时候,有些关键件需要理解.
1:首先必须在本地Windows环境中安装git工具也就是参考4
2:所有的仓库都会生成在/home/git/repositories/目录下
3.新建一个空的项目仓库要在/home/git/repositories/下 git init --bare 命令初始化仓库
4:空仓库是不能clone的,必须在客户端有人初始化一个提交一个版本


参考:
1.GIT服务器配置
2.Git 服务器 Gitosis 架设指南
3.Ubuntu下Git以及Github使用
4. 在Windows环境中使用版本管理工具Git

相关文章
  1. 对Web静态资源缓存自动更新的思考与实践的总结
  2. 单机多git帐号的访问详解案例
  3. CentOS 6.5安装部署SVN 1.8.13
  4. php-redis扩展
  5. Redis安装部署
  6. gearman应用-分布式图库系统设计
本站版权
1、本站所有主题由该文章作者发表,该文章作者与尘埃享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和尘埃的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:
二维码
Posted in Cache/File存储, Git

发表评论