Skip to content

Commit bb57b30

Browse files
committed
New post: build git-scm.com
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
1 parent 3ca9c4c commit bb57b30

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
layout: post
3+
title: "墙不住的Git官网"
4+
---
5+
6+
微博中关于《Git Community Book》(Git社区书)本地化的帖子,使我想起久未造访的 [Git官网](http://git-scm.com/)
7+
却吃惊地发现Git官网已遭G\\F\\W认证。值此“两会”召开、古月三昷卸任之季,G\\F\\W居然再次做出如此这般非和谐之举,
8+
不啻于继股市暴跌后又一记对“十年和谐”响亮的耳光。
9+
10+
《墙不住的Git官网》这篇文章送给那些仍在攒钱买房,尚无闲钱购置境外主机以搭建VPN、SSH,也不会使用 goagent 的码农。
11+
12+
[Git官网](http://git-scm.com/) 的维护者是 GitHub 的 Scott Chacon,他也是
13+
[Git社区书](https://github.com/schacon/gitbook) 的主要维护者和 [《ProGit》](https://github.com/progit/progit/) 的作者。
14+
15+
新设计的Git官网不但重新设计了Git的Logo,还将《ProGit》这本书贡献到官网,取代Git社区书成为官网上的官方教程。
16+
(毕竟一人维护两套书负担太重,而且不小心会被人误解为 Copy & Paste。)
17+
18+
Git官网的源代码托管在GitHub,已由 [旧版网站地址](https://github.com/schacon/git-scm) 更换到新的地址:
19+
20+
* <https://github.com/github/gitscm-next/>
21+
22+
新网站基于 Rails 构建,默认使用 sqlite 本地数据库。其中 HTML 格式的 Git 手册、ProGit电子书的源代码并不在此版本库中,
23+
而是要执行相应的 rake 任务,从Git版本库和 ProGit版本库中获取内容、编译并保存到 sqlite 数据库中。
24+
下面介绍一下如何在本地搭建Git官网。
25+
26+
## 准备
27+
28+
* 克隆Git版本库(可选)
29+
30+
Git官网中的Git手册直接从Git项目的本地版本库中编译,会对 Git v1.0 之后的每一正式发布版本的手册进行编译。
31+
32+
如果本地已经克隆了Git版本库,可以跳过这一步。
33+
34+
如果没有克隆Git版本库,先克隆一份Git版本库。
35+
36+
$ cd Your/WorkSpace/
37+
$ git clone git://github.com/git/git
38+
39+
* 克隆Git官网版本库
40+
41+
$ cd Your/WorkSpace/
42+
$ git clone git://github.com/github/gitscm-next
43+
44+
* 进入到克隆出的Git官网版本库
45+
46+
$ cd gitscm-next
47+
48+
* 安装 Ruby 1.9.2 。
49+
50+
(在 `gitscm-next` 目录下的 `.ruby-version` 这个文件指定了 ruby 的版本。)
51+
52+
$ rvm install 1.9.2
53+
$ rvm use 1.9.2
54+
55+
* 下载并安装依赖的 Gem 包。
56+
57+
(由文件 Gemfile 设定 gem 包依赖)
58+
59+
$ bundle install
60+
61+
## Rails 应用配置
62+
63+
Git新官网是一个 Rails 应用。数据库的默认配置文件 `config/database.yml` 已指定使用 sqlite3 本地数据库。
64+
执行如下命令即可创建该本地数据库。
65+
66+
* 初始化本地数据库。(执行数据迁移操作)。
67+
68+
$ rake db:migrate
69+
70+
* 导入缺省数据
71+
72+
$ rake db:fixtures:load
73+
74+
## 第一次启动应用
75+
76+
* 启动Web应用
77+
78+
$ script/rails server
79+
...
80+
=> Rails 3.2.11 application starting in development on http://0.0.0.0:3000
81+
...
82+
83+
* 文档页面 404
84+
85+
从上面命令的输出可以看出启动的内置Web服务器运行在 3000 端口。打开 Web 浏览器,输入地址 <http://localhost:3000/>
86+
墙外的 Git官网在本地重现了。在网站中四处转转,会发现文档部分的链接( [doc/](http://localhost:3000/doc/) )催悲地404了。
87+
88+
这是因为相关文档需要从其他版本库获取数据并编译。
89+
90+
* 退出Web应用
91+
92+
在控制台按下 Ctrl+C 退出运行在 3000 端口的 Web 服务。
93+
94+
## 编译 Git 手册
95+
96+
阅读版本库根目录下的 ``README.md`` 文件(GitHub上项目的说明文件),可以看到编译文档的说明。
97+
98+
* 编译Git手册。
99+
100+
如果你有耐心,可以执行下面的命令,将Git v1.0 之后的 240 多个正式发行版本的文档逐一编译(当然很多小版本并未更新文档),并保存到数据库中。
101+
102+
$ GIT_REPO=/Your/WorkSpace/git/.git rake local_index
103+
104+
你也可以只编译Git某一个版本的手册。如下:
105+
106+
$ GIT_REPO=/Your/WorkSpace/git/.git REBUILD_DOC=v1.8.1 rake local_index
107+
108+
(关于该 rake 命令的具体实现参见脚本: `lib/tasks/local_index.rake`
109+
110+
* 访问编译的Git手册。
111+
112+
再次启动Web应用,文档页面仍然显示 404 错误。编译的Git手册文档藏到哪里了呢?从 Rails 的路由文件 `config/routes.rb` 文件可以猜出Git手册页面的URL地址为:
113+
114+
+ <http://localhost:3000/docs/>
115+
116+
按 Ctrl+C 退出Web应用。
117+
118+
## 编译 ProGit 和其他文档
119+
120+
执行下面命令可以编译出其余文档,包括《ProGit》电子书。
121+
122+
* 更新Git下载链接,执行如下命令:
123+
124+
$ rake downloads
125+
126+
* 编译 ProGit 电子书。
127+
128+
提供您的 GitHub 账号——将如下命令中的 your_github_username 和 your_github_password 用您的用户名及口令替换。
129+
执行 rake 命令,通过 GitHub API (调用 octokit 包)远程读取 progit 版本库源码,编译电子书。
130+
131+
$ export API_USER=your_github_username
132+
$ export API_PASS=your_github_password
133+
$ rake remote_genbook
134+
135+
至此 Git官网在本地部署完毕,运行内置 Web server:
136+
137+
$ script/rails server
138+
...
139+
=> Rails 3.2.11 application starting in development on http://0.0.0.0:3000
140+
...
141+
142+
墙外的Git官网在本地重现: <http://localhost:3000/>
143+
144+

0 commit comments

Comments
 (0)