CentOS 下搭建 Gitosis


菜鸟新作,老鸟勿喷


安装git需要的库文件

# yum install curl-develexpat-devel gettext-devel openssl-devel zlib-devel perl-devel

 

 

安装libcionv

tar -zxflibiconv-1.14.tar.gz

cd libiconv-1.14

./configure--prefix=/usr/local/libiconv

make &&make install

 

安装git

tar -zxfgit-2.0.4.tar.gz

cd git-2.0.4

./configure--prefix=/usr/local/git --with-iconv=/usr/local/libiconv/

make &&make install

 

添加环境变量

# vim /etc/profile

exportPATH=$PATH:/usr/local/git/bin

 #source /etc/profile

 #git --version

出现版本信息,说明安装成功


创建软连接,否则git clone时候会报错

# ln -s/usr/local/git/bin/* /usr/bin/

 #git --version

 

安装gitosis

# yum install python python-setuptools

#git clonegit://github.com/res0nat0r/gitosis.git

#cd gitosis/

#python setup.pyinstall

Installed/usr/lib/python2.4/site-packages/gitosis-0.2-py2.4.egg

Processingdependencies for gitosis==0.2

 

初始化gitosis

因为刚刚安装完的gitosis,是什么都没有的,所以必须要初始化一下,让它生成配置文件,代码仓库,才可以生效


添加git用户

#groupadd git

# useradd –g git git

 

 

客户端(开发机):

$ ssh-keygen -trsa

一路回车,就会在宿主目录下的.ssh目录下生成id_rsa.pub公钥

传到服务器,根据自己习惯,传到服务器git用户能访问的地方

 


git服务器:

#su - git

$gitosis-init <id_rsa.pub

此步执行完之后,会在git宿主目录中生成一个代码仓库目录,其中里面包括的git-admin.git,就是权限管理用的


 PS:

上面的步骤,网上99%的的资料都是这么写的,其实也可以在git服务器本地生成个密钥,来初始化gitosis,但是不同用户的公钥是不同的,你第一次使用哪个用户的公钥,只能在这个用户下进行后面的操作

 

$git clone ssh://git@ipaddress:port/gitosis-admin.git

$ls

gitosis.conf  keydir


gitosis.conf里就是项目管理的配置文件,简单易懂,keydir目录里,是开发机的密钥,这里的密钥必须以.pub为后缀,pub前面的名称,要和gitosis.conf里members里的成员名称一致才生效,至于怎么权限分配管理,根据gitosis-admin举一反三,很容易


如果想添加开发成员dev007,那么,先取得dev007的公钥,然后在keydir里编辑一个dev007.pub文件,将dev007的公钥粘贴进去,在将gitosis.conf的members后面加上dev007


这还没有完,因为gitosis是以代码库形式存在的,我们刚刚编辑的是下载到本地的,所以还要提交,才能生效

$git add .

$git commit -m "1"

$git push

这样,才能使刚才的配置生效,在第一次提交过程中,可能会出现一些提示,比如让你先发送用户名,用户邮箱之类的,根据提示操作就可以了.


创建裸仓库

# git init --bare  project.git

Initialized emptyGit repository in /data/git/project/

 这里一定要git结尾,否则很麻烦,以git结尾之后,你git clone时候不用加路径,直接项目名.git就可以了,例如

$git clone ssh://git@ipaddress:port/project.git  



Git的常用clone方式

$ git clone git@192.168.1.171:/data/git/project.git

$ git clone file:///data/git/project.git project

$ git clone ssh://user@ip:project.git

 

 

最简单的使用流程

下载

$git clone ssh://git@ipaddress:port/projectname.git

$touch tt.txt

$Git add tt.txt

$Git commit –m “tt”

$Git push




关于钩子

由于公司是搞网站开发的,之前用的是svn,所以对钩子还是相当有依赖性的,看了不少关于git钩子的资料,但对于刚接触git的我还是感觉两眼昏花,所以就偷个懒,自己写了一个,功能最简单的傻瓜式钩子,原理就是,远端开发机提交,这边钩子被触发,执行我傻瓜式的shell脚本,把我们网站目录的代码给更新一下(git pull)

先进入bare仓库的hook目录

#vim post-receive

#!/bin/sh
# Usage:
# 1. put this into the post-receive hook file itself below
# 2. `chmod +x post-recive`
# 3. Done!
 
# Check the remote git repository whether it is bare
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE"
exit 1
fi
 
 
# Check the deploy dir whether it exists
WEB_DIR=/data/htdocs/html/
if [ ! -d $WEB_DIR ] ; then
echo >&2 "fatal: post-receive: DEPLOY_DIR_NOT_EXIST: \"$WEB_DIR\""
exit 1
fi
 
# Goto the deploy dir and pull the latest sources
cd $WEB_DIR
#env -i git reset --hard
env -i git pull

这样,在远端执行git pull时候,这个钩子会被触发,更新你指定的网站目录

如果远端执行时候,提示错误,有可能是你的权限分配问题,可以把git用户加入到权限管理中,让git用户在你代码仓库中有执行钩子的权限








 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值