centos搭建git仓库gitosis

接着昨天的活,我们写好的markdown文件要传到./_posts/文件夹下,然后由jekyll生成,所以我们要用到git来帮助我们同步文件。(当然ftp/sftp/rsync也可以,但是用git听说可以装13)首先就需要在vps上搭一个git仓库gitosis。

1、安装python-setuptools

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-1.1.7.tar.gz
tar zxvf setuptools-1.1.7.tar.gz
cd setuptools-1.1.7
python setup.py build
python setup.py install

2、安装git

yum -y install git

3、安装gitosis

git clone https://github.com/tv42/gitosis.git  #获取最新gitosis
cd gitosis   #进入gitosis文件夹
python setup.py install

4、生成rsa公钥和私钥

ssh-keygen -t rsa   #生成密钥,一路回车即可,不需要密码
cp ~/.ssh/id_rsa.pub /tmp/id_rsa.pub    #将公钥.pub文件复制到tmp文件夹下

5、初始化gitosis

useradd git    #新增git用户
su - git    #切换到git用户下进行
gitosis-init < /tmp/id_rsa.pub    #刚刚把id_rsa.pub放在/tmp目录主要原因是此目录所有人都有权限的
rm /tmp/id_rsa.pub    #OK,id_rsa.pub已无用了,可以删除了

6、获取并配置gitosis管理员

su - root    #切换回root用户在根下进行
git clone git@localhost:gitosis-admin.git    #次步骤如果报错,可以使用下面的
#git clone git@localhost:/home/git/repositories/gitosis-admin.git

gitosis的配置就基本完成了, gitosis-admin/gitosis.conf就是仓库的配置文件,需要添加新项目或者修改项目对应用户都通过它修改。

下面举一些实际的例子:

在git仓库添加一个lalala项目,项目成员为test

首先修改gitosis-admin/gitosis.conf文件,在文件后面加入:

[group 组名]
writable = 项目名    #一般为要新建的代码库的名字
members = 成员名    #成员名必须与keydir文件夹下的.pub公钥一致;可以有多个成员,用空格进行分割

组名随意,项目名填lalala,成员填test,保存退出。

把配置文件push到仓库中

git add .
git commit -am "add project lalala"
git push git@localhost:gitosis-admin.git master

假设成员test在另一台机器使用,则先在那台生成ssh-keygen -t rsa,把生成的id_rsa.pub放到上面gitosis-admin/keydir目录下,并改名为test.pub(文件名跟成员名保持一致,.pub不能省略)。然后再git push一下,之后test就有访问项目lalala的权限了。

然后在test的本地机器执行:

mkdir lalala
cd lalala
git init
touch test.txt
git add .
git commit -am "add test.txt"
git push git@your-gitosis-server:lalala.git master

test本地就建成lalala项目了。

至于多用户访问一个项目,只需要在gitosis.conf里面添加名字,然后把对应的id_rsa.pub放入keydir就可以了。

如果想在git push完成后执行系统命令,那么可以用到hook功能。

更多用法请自行google- -

« 返回