您的位置:首页 > 产品设计 > UI/UE

搭建轻量级git server和git web UI

2016-04-11 20:56 471 查看

背景

如果你用ECS来管理日常代码,一定会有这样一个过程:

step 1:

git clone user@domain.com:/my/git/repo/dir


step 2:

git clone http://domain.com/my-repo.git[/code] 
step 3:

浏览器里输入 http://domain.com/my-repo.git 即时浏览源码和git提交记录

大部分人,停止在了第一步,因为第二步、第三步,还挺麻烦。特别是第二步。

周末再次(大约1年前已经折腾过一次,惜败)尝试安装gitlab-ce (community-edition),再次,惜败!于是我决定放弃 gitlab,开辟新大陆。

工具

GitPHP

在线浏览源码和 git 提交记录的工具。基于PHP编写,很轻量,无需数据库,权限控制功能相当强大。

下载地址: https://github.com/xiphux/gitphp

Git-Lighttp

以 http 的形式对外提供 git clone push 服务。基于Rudy编写,无需数据库。厌倦了基于 ssh 服务提交代码的话,不妨一试。

下载地址:https://gitlab.com/hallison/git-lighttp.git

两个工具都很靠谱,安装文档比较缺乏,需要动用你的钻研精神哦。下面就重点介绍一下。

安装配置

安装很简单,直接从 git clone 即可。

GitPHP 和 Git-Lighttp 都支持权限控制,下面重点说明。

GitPHP 配置

GitPHP的配置(包括权限控制)都在源码的 config 目录下

[ray@aliyun config]# tree
.
|-- gitphp.conf.php
|-- projects.conf.php
`-- users.conf.php


核心配置包括:

gitphp.conf.php
---
// 注意:php 必须具有对 git 仓库目录的访问权限
$gitphp_conf['projectroot'] = './your/git/repo/dir';

projects.conf.php
---
可以不动

projects.conf.php
---
$gitphp_users = array(
array(
'username' => 'ray',
'password' => 'woshidachunlv'
),
array(
'username' => 'jack',
'password' => 'iloverose'
),
array(
'username' => 'rose',
'password' => 'youjumpijump'
)
);


用户名密码配置好后,去每一个 git 数据仓库的 .git/config 文件里面增加项目 (project) 级别的权限控制。例如 vue.git 项目中,给 ray 增加可读的权限:

[ray@aliyun vue.git]# pwd
/web/domain.com/git/repo/vue.git/

[ray@aliyun vue.git]# cat config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[gitphp]
category = Vue
description = Vue
owner = Evan You
cloneurl = http://git.domain.com:4096/vue.git pushurl = http://git.domain.com:4096/vue.git bugpattern = "/#([0-9]+)/"
bugurl = http://bug.domain.com/projects/gitphp/issues/${1} compat = false
website = http://www.domain.com/ allowedusers = ray


不配置 [gitphp] 的话,默认对所有人可见。

Git-Lighttp 的权限控制

它依赖 htpasswd 文件来做权限控制。运行 htpasswd 命令能够添加用户,将结果放到 repo 根目录的 htpasswd 文件里。下面是我的配置:

[ray@aliyun repo]# pwd
/web/domain.com/git/repo
# 这是我的数据仓库位置

[ray@aliyun repo]# tree -L 1
.
|-- htpasswd
|-- gitphp.git
|-- vue.git
`-- vue-cli.git

[ray@aliyun repo]# cat htpasswd
ray:.za9933xxooB6


ray 就是我的用户名,在 clone 和 push 的时候会用到。

例如,在我的 Mac 上使用 git 仓库:

[ray@mac repo]#  git clone http://git.domain.com:4096/vue.git Cloning into 'vue'...
Username for 'http://git.domain.com:4096': ray
Password for 'http://ray@git.domain.com:4096':
remote: Counting objects: 16183, done.
remote: Compressing objects: 100% (4274/4274), done.
remote: Total 16183 (delta 11817), reused 16172 (delta 11811)
Receiving objects: 100% (16183/16183), 5.33 MiB | 487.00 KiB/s, done.
Resolving deltas: 100% (11817/11817), done.
Checking connectivity... done.


总结

其实,还是 gitlab 省事,无奈 gitlab-ce 就不是诚心给人用,太难安装了。 如果你有钱,专门买个预装了 Gitlab 的 ECS,忒方便。 或者买个 预装 Ubuntu 的 ECS, 然后安装一个 Docker,最后搞个 Gitlab 的 Docker 发布包装一下就行了。

自己装一个 Git Server 是长久以来的打算,终于完成了,之后的代码管理可以更规范一些,不错不错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: