Ubuntu下通过gitweb来浏览源码

  • Post author:
  • Post category:其他


看到kernel官网上的gitweb(

https://git.kernel.org/

),有没有自己弄一个的冲动。


本文介绍在ubuntu下快速搭建一个git服务器,通过gitweb来浏览源码。


安装git和openssh:

sudo apt-get install git-core openssh-server openssh-client


建立git用户

建立git用户,home目录为/home/git,该目录专门来放git仓库

sudo adduser –system –shell /bin/sh  –gecos ‘git version control’ –group –disabled-password –home /home/git git

sudo passwd git



安装apache2

sudo apt-get install apache2



安装gitweb

sudo apt-get install gitweb




修改gitweb配置



vi /etc/gitweb.conf可看到

$projectroot = “/var/lib/git”;

由于我们采用/home/git作为gitweb的工作目录,这里将工作目录改为

$projectroot = “/home/git”;


重启apache2

sudo /etc/init.d/apache2 restart


访问gitweb


http://localhost/gitweb/










工作路径默认是没有源码的,这时要建一个git裸仓,然后将源码推送到裸仓上。


1切换到git用户,并进入工作目录su git,cd /home/git


2建立裸仓git init –bare driver.git


3找一个git仓库,添加远程地址,如git remote add origin git@192.168.199.157:/home/git/driver.git


4推送源码到裸仓中,git push origin master:master


5网页访问localhost/gitweb就可看到driver.git




对应Ubuntu14.04,可参考文章

http://blog.csdn.net/caspiansea/article/details/41952139





对于Ubuntu16.04还需进行小范围的修改,



查看/etc/apache2/conf-available/gitweb.conf文件,可知


<IfModule mod_alias.c>
  <IfModule mod_mime.c>
    <IfModule mod_cgi.c>
      Define ENABLE_GITWEB
    </IfModule>
    <IfModule mod_cgid.c>
      Define ENABLE_GITWEB
    </IfModule>
  </IfModule>
</IfModule>

<IfDefine ENABLE_GITWEB>
  Alias /gitweb /usr/share/gitweb

  <Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
  </Directory>
</IfDefine>



要声明了enable_gitweb,才能用gitweb,由上述代码可知,要加载了特定的模块才能使用该宏,默认只加载了下列的模块,那加载一下需要的模块即可。查看apachectl的模块(

http://blog.csdn.net/qmhball/article/details/7631384

)


w@w-Lenovo-G470:~$ apachectl -t -D DUMP_MODULES 
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_event_module (shared)
 negotiation_module (shared)
 setenvif_module (shared)
 status_module (shared)



cd /etc/apache2/mods-enabled




root@w-Lenovo-G470:/etc/apache2/mods-enabled# a2enmod alias mime cgid
Module alias already enabled
Module mime already enabled
Module cgid already enabled



重启apache2服务



sudo /etc/init.d/apache2 restart



如果ubuntu是服务器版本(/var/log/apache2/error.log报错aborted at /usr/share/gitweb/index.cgi line 13),需安装桌面环境



sudo apt-get install ubuntu-desktop




版权声明:本文为mike8825原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。