Chapters ā–¾ 2nd Edition

4.7 ęœåŠ”å™ØäøŠēš„ Git - GitWeb

GitWeb

å¦‚ęžœä½ åÆ¹é”¹ē›®ęœ‰čÆ»å†™ęƒé™ęˆ–åŖčÆ»ęƒé™ļ¼Œä½ åÆčƒ½éœ€č¦å»ŗē«‹čµ·äø€äøŖåŸŗäŗŽē½‘é”µēš„ē®€ę˜“ęŸ„ēœ‹å™Øć€‚ Git ęä¾›äŗ†äø€äøŖå«åš GitWeb ēš„ CGI č„šęœ¬ę„åščæ™é”¹å·„ä½œć€‚

GitWeb ēš„ē½‘é”µē”Øęˆ·ē•Œé¢
Figure 49. GitWeb ēš„ē½‘é”µē”Øęˆ·ē•Œé¢

å¦‚ęžœä½ ęƒ³č¦ęŸ„ēœ‹ GitWeb å¦‚ä½•å±•ē¤ŗä½ ēš„é”¹ē›®ļ¼Œå¹¶äø”åœØęœåŠ”å™ØäøŠå®‰č£…äŗ†č½»é‡ēŗ§ Web ęœåŠ”å™ØęÆ”å¦‚ lighttpd ꈖ webrick, Git ęä¾›äŗ†äø€äøŖå‘½ä»¤ę„č®©ä½ åÆåŠØäø€äøŖäø“ę—¶ēš„ęœåŠ”å™Øć€‚ 在 Linux ē³»ē»Ÿēš„ē”µč„‘äøŠļ¼Œlighttpd é€šåøøå·²ē»å®‰č£…äŗ†ļ¼Œę‰€ä»„ä½ åŖéœ€č¦åœØé”¹ē›®ē›®å½•é‡Œę‰§č”Œ git instaweb å‘½ä»¤å³åÆć€‚ å¦‚ęžœä½ ä½æē”Ø Mac 系统, Mac OS X Leopard ē³»ē»Ÿå·²ē»é¢„å®‰č£…äŗ† Rubyļ¼Œę‰€ä»„ webrick ęˆ–č®øę˜Æä½ ęœ€å„½ēš„é€‰ę‹©ć€‚ å¦‚ęžœäøęƒ³ä½æē”Ø lighttpd 启动 instaweb å‘½ä»¤ļ¼Œä½ éœ€č¦åœØę‰§č”Œę—¶åŠ å…„ --httpd å‚ę•°ć€‚

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

čæ™äøŖå‘½ä»¤åÆåŠØäŗ†äø€äøŖē›‘å¬ 1234 ē«Æå£ēš„ HTTP ęœåŠ”å™Øļ¼Œå¹¶äø”č‡ŖåŠØę‰“å¼€äŗ†ęµč§ˆå™Øć€‚ čæ™åÆ¹ä½ ę„čÆ“ååˆ†ę–¹ä¾æć€‚ å½“ä½ å·²ē»å®Œęˆäŗ†å·„ä½œå¹¶ęƒ³å…³é—­čæ™äøŖęœåŠ”å™Øļ¼Œä½ åÆä»„ę‰§č”ŒåŒäø€äøŖå‘½ä»¤ļ¼Œå¹¶åŠ äøŠ --stop é€‰é”¹ļ¼š

$ git instaweb --httpd=webrick --stop

å¦‚ęžœä½ ēŽ°åœØęƒ³äøŗä½ ēš„å›¢é˜Ÿęˆ–ä½ ę‰˜ē®”ēš„å¼€ęŗé”¹ē›®ęŒē»­ēš„čæč”Œčæ™äøŖé”µé¢ļ¼Œä½ éœ€č¦é€ščæ‡ę™®é€šēš„ Web ęœåŠ”å™Øę„č®¾ē½® CGI č„šęœ¬ć€‚ 一些 Linux å‘č”Œē‰ˆēš„č½Æä»¶åŗ“ęœ‰ gitweb åŒ…ļ¼ŒåÆä»„é€ščæ‡ apt ꈖ dnf ę„å®‰č£…ļ¼Œä½ åÆä»„å…ˆčÆ•čÆ•ć€‚ ęŽ„äø‹ę„ęˆ‘ä»¬ę„åæ«é€Ÿēš„äŗ†č§£äø€äø‹å¦‚ä½•ę‰‹åŠØå®‰č£… GitWeb怂 é¦–å…ˆļ¼Œä½ éœ€č¦čŽ·å¾— Git ēš„ęŗä»£ē ļ¼Œå®ƒåŒ…å«äŗ† GitWeb ļ¼Œå¹¶åÆä»„ē”Ÿęˆč‡Ŗå®šä¹‰ēš„ CGI č„šęœ¬ļ¼š

$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

éœ€č¦ę³Øę„ēš„ę˜Æļ¼Œä½ éœ€č¦åœØå‘½ä»¤äø­ęŒ‡å®š GITWEB_PROJECTROOT å˜é‡ę„č®©ēØ‹åŗēŸ„é“ä½ ēš„ Git ē‰ˆęœ¬åŗ“ēš„ä½ē½®ć€‚ ēŽ°åœØļ¼Œä½ éœ€č¦åœØ Apache 中使用这个 CGI č„šęœ¬ļ¼Œä½ éœ€č¦äøŗę­¤ę·»åŠ äø€äøŖč™šę‹Ÿäø»ęœŗļ¼š

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

å†ę¬”ęé†’ļ¼ŒGitWeb åÆä»„é€ščæ‡ä»»ä½•äø€äøŖę”ÆęŒ CGI ꈖ Perl ēš„ē½‘ē»œęœåŠ”å™Øęž¶č®¾ļ¼›å¦‚ęžœä½ éœ€č¦ēš„čÆļ¼Œęž¶č®¾čµ·ę„åŗ”čÆ„äøä¼šå¾ˆå›°éš¾ć€‚ ēŽ°åœØļ¼Œä½ åÆä»„č®æé—® http://gitserver/ åœØēŗæęŸ„ēœ‹ä½ ēš„ē‰ˆęœ¬åŗ“ć€‚

scroll-to-top