[转]ubuntu 12.04 gitolite 安装指南-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 893502
  • 博文数量: 113
  • 博客积分: 3160
  • 博客等级: 少校
  • 技术积分: 1801
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-19 10:09
文章分类

全部博文(113)

分类:

2012-09-18 19:59:24

先概述一下,你手上有一台全新的 ubuntu server,参照本文会安装下列内容:
  1、git(这是肯定的)
  2、gitolite(用于git服务器管理,简介参见附注2)
  3、gitdaemon(守护进程,开放一个公共的 git clone 服务,可选)
  4、gitweb(提供像github一样的web服务,通过浏览器查看版本库记录,可选)

下面就开始动手吧。

一、安装 git

安装 git 和 git doc:

sudo apt-get install git-core git-doc

设置用户信息:

git config --global user.name "your name"
git config --global user.email your@email.com

二、安装 gitolite

gitolite 使用ssh进行访问控制。首先将本机的ssh公钥(生成方法参见附注3:ssh-keygen)放到服务器上:

# from your local machine
scp ~/.ssh/id_rsa.pub git.server:/tmp/your-username-goes-here.pub

创建 gitolite 用户组和 gitolite 用户

sudo addgroup gitolite
sudo adduser --disabled-password --home /home/gitolite --ingroup gitolite gitolite

安装 gitolite:

sudo apt-get -y install gitolite

添加权限以便 gitweb 能够读取版本库内容:

sudo usermod -a -g gitolite www-data

重启apache服务:

sudo service apache2 restart

执行gitolite安装:

sudo su - gitolite
gl-setup /tmp/your-username-goes-here.pub

安装过程中会询问你是否修改配置文件,这时候可以修改一下权限以便 git-web 和 git-daemon 能够读取新建的版本库:将 $repo_umask = 0077; 修改为 $repo_umask = 0027;

如果出于某种原因在安装过程中你没能修改 .gitolite.rc 文件,可以按如下方式编辑:

emacs /home/gitolite/.gitolite.rc
# 将 $repo_umask = 0077; 改为 $repo_umask = 0027;
chmod g r /home/gitolite/projects.list
chmod -r g rx /home/gitolite/repositories

退出 gitolite 账户:

exit

搞定!服务器端的工作已经完成了。

三、通过 gitolite 管理 git 服务器

现在你应该已经可以将安装脚本创建的 gitolite-admin 版本库克隆到你的本机了:

# from your local machine
git clone gitolite@git.server:gitolite-admin.git

编辑 gitolite.conf 文件,创建一个名为 testing 的版本库,并且允许 git-web 和 git-daemon 的访问:

# from your local machine
cd gitolite-admin
emacs conf/gitolite.conf
# change to:
repo    testing
      rw      =   @all
      r       =   daemon
testing "owner" = "test repo"

提交并推送至服务器。

git add conf/gitolite.conf
git commit -m "enabled gitweb and git-daemon export for testing repo"
git push
cd ..

在本机clone出testing版本库并添加个文件看看:

git clone gitolite@git.server:testing.git
cd testing
echo "readme" > readme
git add readme
git commit -m "added readme"
git push origin master

四、配置 git-daemon

git-daemon 使你可以开放一个公共的git服务,任何人都无需帐号直接使用 git clone 命令克隆版本库到本地。无需此功能的话,本步骤可以跳过。

安装 git-daemon:

sudo apt-get install git-daemon-run

修改服务配置以便 git-daemon 能够以gitolite用户组的身份运行(gitolite用户组对版本库拥有读权限)

sudo emacs /etc/sv/git-daemon/run


#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
  "$(git --exec-path)"/git-daemon --verbose --base-path=/var/cache /var/cache/git

修改为:
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon:gitolite \
  "$(git --exec-path)"/git-daemon --verbose --base-path=/home/gitolite/repositories /home/gitolite/repositories

重启 git-daemon 服务:

sudo sv restart git-daemon

搞定。
现在你可以试试用下面的命令来克隆版本库了:

git clone git://git.server/testing.git

五、配置 git-web

git-web 允许你使用web界面查看版本库,此步骤也是可选的。

安装 git-web:

sudo apt-get install highlight gitweb

修改 git-web 配置:

sudo emacs /etc/gitweb.conf
# change $projectroot to /home/gitolite/repositories
# change $projects_list to /home/gitolite/projects.list

现在你可以到 在线查看版本库了。

还可以做一些增强配置,比如在 /etc/gitweb.conf 中开启 pretty url:

sudo emacs /etc/gitweb.conf

添加下列内容:
# enable path_info so the server can produce urls of the
# form: 
# this allows for pretty urls *within* the git repository, where
# my apache rewrite rules are not active.
$feature{'pathinfo'}{'default'} = [1];

还有更多:

$projects_list_description_width = 100;
# enable blame, pickaxe search, snapshop, search, and grep
# support, but still allow individual projects to turn them off.
# these are features that users can use to interact with your git trees. they
# consume some cpu whenever a user uses them, so you can turn them off if you
# need to. note that the 'override' option means that you can override the
# setting on a per-repository basis.
$feature{'blame'}{'default'} = [1];
$feature{'blame'}{'override'} = 1;
$feature{'pickaxe'}{'default'} = [1];
$feature{'pickaxe'}{'override'} = 1;
$feature{'snapshot'}{'default'} = [1];
$feature{'snapshot'}{'override'} = 1;
$feature{'search'}{'default'} = [1];
$feature{'grep'}{'default'} = [1];
$feature{'grep'}{'override'} = 1;
$feature{'show-sizes'}{'default'} = [1];
$feature{'show-sizes'}{'override'} = 1;
$feature{'avatar'}{'default'} = ['gravatar'];
$feature{'avatar'}{'override'} = 1;
$feature{'highlight'}{'default'} = [1];
$feature{'highlight'}{'override'} = 1;

六、添加用户

用户生成公钥(参见附注3)发送给git管理员(也就是你)
把这个公钥放到 gitolite-admin/keypair 目录下,记得名字改为 account-name.pub,
并且修改 conf/gitolite.conf 添加此用户(例如,到developer用户组里):

@developer root, account-name

最后别忘了 push 到服务器。

gitolite.conf 的书写规则参见文档:

添加完之后此用户就可以用 git clone gitolite@host:repo-name 来克隆版本库到本地,pull 以及 push了。

附注:

  1. 参考资料:


  2. gitolite的管理思路是完全git化的。服务器上有一个名为“gitolite-admin”的repo,存储git服务配置,你只要克隆到本机,修改并push,服务器端会自动完成配置更新。大多数管理任务都无需登录服务器,可以直接在本机搞定。
  3. 如何生成ssh公钥:
    打开gitbash,执行 ssh-keygen 然后一直回车(三次)即可,最后得到结果:
    your identification has been saved in /c/users/xwjin/.ssh/id_rsa.
    your public key has been saved in /c/users/xwjin/.ssh/id_rsa.pub.
    the key fingerprint is:
    ef:76:60:21:af:58:0b:16:a5:21:83:a5:c6:d3:1e:1b xwjin@xwjin-pc

    得到的 id_rsa.pub 就是本机的公钥了。
阅读(17721) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

sumyfly2015-04-20 19:42:19

谢谢!

|
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图