搭建轻量级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 是长久以来的打算,终于完成了,之后的代码管理可以更规范一些,不错不错。
相关文章推荐
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- activiti自定义流程之整合(二):使用angular js整合ueditor创建表单
- 山东省第四届ACM大学生程序设计竞赛 Mountain Subsequences dp
- EqualsBuilder和HashCodeBuilder
- 入门QT4+VS2008-Gui设计
- IOS开发-UI学习-UITabBarController的使用
- 算法课笔记系列(0)——Prologue and Notation
- String、StringBuffer与StringBuilder之间区别
- StringBuffer与StringBuilder的区别
- UIScrollView subviews多了两个UIImageView
- Gensim and LDA: a quick tour
- 334. Increasing Triplet Subsequence
- zoj 3929 Deque and Balls 树状数组 递推
- 常用SQL语句的整理--SQL server 2008(查询三--子查询)和guid
- UITextField Delegate
- [New learn]动画-基于UIView
- lightoj 1048 - Conquering Keokradong 二分答案
- poj-1986 Distance Queries(lca+ST+dfs)
- UITableView 滑动cell显示不全
- UIImagePikerController 浅析