現在我們的項目已經有了可讀可寫和只讀的連接方式,不過如果能有一個簡單的 web 界面訪問就更好了。Git 自帶一個叫做 GitWeb 的 CGI 腳本,運行效果可以到 http://git.kernel.org 這樣的站點體驗下(見圖 4-1)。

Figure 4-1. 基于網頁的 GitWeb 用戶界面
如果想看看自己項目的效果,不妨用 Git 自帶的一個命令,可以使用類似 lighttpd 或 webrick 這樣輕量級的服務器啟動一個臨時進程。如果是在 Linux 主機上,通常都預裝了 lighttpd ,可以到項目目錄中鍵入 `git instaweb` 來啟動。如果用的是 Mac ,Leopard 預裝了 Ruby,所以 webrick 應該是最好的選擇。如果要用 lighttpd 以外的程序來啟動 `git 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 端口開啟一個 HTTPD 服務,隨之在瀏覽器中顯示該頁,十分簡單。關閉服務時,只需在原來的命令后面加上 `--stop` 選項就可以了:
`$ git instaweb --httpd=webrick --stop`
如果需要為團隊或者某個開源項目長期運行 GitWeb,那么 CGI 腳本就要由正常的網頁服務來運行。一些 Linux 發行版可以通過 apt 或 yum 安裝一個叫做 gitweb 的軟件包,不妨首先嘗試一下。我們將快速介紹一下手動安裝 GitWeb 的流程。首先,你需要 Git 的源碼,其中帶有 GitWeb,并能生成定制的 CGI 腳本:
~~~
$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/opt/git" \
prefix=/usr gitweb
$ sudo cp -Rf gitweb /var/www/
~~~
注意,通過指定 GITWEB_PROJECTROOT 變量告訴編譯命令 Git 倉庫的位置。然后,設置 Apache 以 CGI 方式運行該腳本,添加一個 VirtualHost 配置:
~~~
<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 的網頁服務來運行;如果偏向使用其他 web 服務器,配置也不會很麻煩。現在,通過 http://gitserver 就可以在線訪問倉庫了,在 http://git.server 上還可以通過 HTTP 克隆和獲取倉庫的內容。
- 1. 起步
- 1.1 關于版本控制
- 1.2 Git 簡史
- 1.3 Git 基礎
- 1.4 安裝 Git
- 1.5 初次運行 Git 前的配置
- 1.6 獲取幫助
- 1.7 小結
- 2. Git基礎
- 2.1 取得項目的 Git 倉庫
- 2.2 記錄每次更新到倉庫
- 2.3 查看提交歷史
- 2.4 撤消操作
- 2.5 遠程倉庫的使用
- 2.6 打標簽
- 2.7 技巧和竅門
- 2.8 小結
- 3. Git分支
- 3.1 何謂分支
- 3.2 分支的新建與合并
- 3.3 分支的管理
- 3.4 利用分支進行開發的工作流程
- 3.5 遠程分支
- 3.6 分支的衍合
- 3.7 小結
- 4. 服務器上的Git
- 4.1 協議
- 4.2 在服務器上部署 Git
- 4.3 生成 SSH 公鑰
- 4.4 架設服務器
- 4.5 公共訪問
- 4.6 GitWeb
- 4.7 Gitosis
- 4.8 Gitolite
- 4.9 Git 守護進程
- 4.10 Git 托管服務
- 4.11 小結
- 5. 分布式Git
- 5.1 分布式工作流程
- 5.2 為項目作貢獻
- 5.3 項目的管理
- 5.4 小結
- 6. Git工具
- 6.1 修訂版本(Revision)選擇
- 6.2 交互式暫存
- 6.3 儲藏(Stashing)
- 6.4 重寫歷史
- 6.5 使用 Git 調試
- 6.6 子模塊
- 6.7 子樹合并
- 6.8 總結
- 7. 自定義Git
- 7.1 配置 Git
- 7.2 Git屬性
- 7.3 Git掛鉤
- 7.4 Git 強制策略實例
- 7.5 總結
- 8. Git與其他系統
- 8.1 Git 與 Subversion
- 8.2 遷移到 Git
- 8.3 總結
- 9. Git 內部原理
- 9.2 Git 對象
- 9.3 Git References
- 9.4 Packfiles
- 9.5 The Refspec
- 9.6 傳輸協議
- 9.7 維護及數據恢復
- 9.8 總結
- 9.1 底層命令 (Plumbing) 和高層命令 (Porcelain)