使用web方式展现git仓库可不clone代码却可以查看仓库中的信息,如 linux kernel网站的gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/
实现上面这样的一个git的web展示并不难,因为有一个工具就叫做gitweb,下面简单介绍下,我如何使用它的。
1. 安装gitweb:方式可以使使用yum install 或者 自行下载rpm包 或者 源码编译git来获得gitweb
2. 配置gitweb:编辑 /etc/gitweb.conf 配置文件,一般修改 “ our $projectroot = "/home/jay/gitweb"; ”这一行即可。
3. 配置web server: 比如配置apache的httpd.conf文件,如下:
1 2 3 4 5 6 7 8 9 10 |
Alias /git/ "/var/www/git/" SetEnv GITWEB_CONFIG /etc/gitweb.conf <Directory /var/www/git> Options ExecCGI FollowSymLinks SymLinksIfOwnerMatch AllowOverride All order allow,deny Allow from all AddHandler cgi-script cgi DirectoryIndex gitweb.cgi </Directory> |
配置apache等web server时,有2个注意点:一是这里的“/var/www/git/”这样的目录下是有gitweb.cgi这个文件的(一般还是有一个static目录);二是确保之前的仓库目录/home/jay/gitweb 让启动web server的用户(如apache用户)可以有权限访问。
4. 重启web server: 比如 service httpd restart ,之后访问web server地址如:http://my-server/git/ 即可。
不过gitweb的展示我也调整了一下:
1. git repo 描述description部分:在各个git仓库的description文件中(如果有.git目录的,就在.git/description路径),编辑这个文件加入自己的想要的描述,如:“my qemu git project”。 若不修改这个文件,你看到的将是“Unnamed repository; edit this file 'description' to name the repository.”这样一句话。
2. 它默认会显示owner,owner显示的是代码仓库的在系统中的owner(用户名),这个我一般会隐藏它,那么就需要修改 gitweb.cgi 文件,设置 “ our $omit_owner = 1; ”即可。
至于让别人可以clone的git server如何搭建,我之前写过一篇:用git daemon搭建git repositoy(搭建git服务器)
同时,由于希望能很容易clone到linux.git/qemu.git等常用的代码库,可以在内网环境server上建立一个镜像,使用git daemon提供clone等服务,并且交给gitweb来展示。顺便展示一段用于定期pull远程代码建立镜像仓库的脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash base_dir=/home/jay/gitweb log_file=$base_dir/sync.log echo "==============================================================" >> $log_file echo "start sync at $(date '+%Y-%m-%d %H:%M:%S')" >> $log_file for i in $(ls -d $base_dir/*/); do cd $i for b in $(git branch -a | grep remotes | grep -v HEAD | grep -v master); do git branch --track ${branch#remotes/origin/} $b 2>/dev/null done git pull --all if [ $? -ne 0 ]; then echo "Failed to do git pull in $i" >> $log_file fi done echo "end sync at $(date '+%Y-%m-%d %H:%M:%S')" >> $log_file |
另外,除了gitweb,其实如果是临时用web方式查看一个git仓库,可以使用如下命令:
1 2 3 4 |
# 使用webrick作为httpd,也可以使用lighttpd git instaweb --httpd=webrick # 关闭web server git instaweb --httpd=webrick --stop |
参考文档:
http://www.cnblogs.com/gtarcoder/p/5309229.html
https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb