GotGit 是我在2010年底写的一本书《Git权威指南》的代号,五年的时间过去了,Git走进了 2.x 版本的时代。 短短几年 Git 爆发式的发展已经让这本书显得过时了。
-
GitHub 引领了社区式编程的潮流,成为开源社区的代名词。我曾经应邀写了一个分析 GitHub 的电子书 《GotGitHub》, 但是很难跟上 GitHub 的变化的节奏。
-
Gitlab 开源项目诞生于 2011 年,从模仿 GitHub,到被别人拿来照搬,让各种社交式编程社区在**四处开花。
-
Gerrit 和 Gitlab 是公司构建企业内部 Git 仓库托管平台的主要选择,如何构建高可用、可扩展的平台成为很多大公司探索的课题。
-
Git 曾经一度遇到外热内冷(外部开源社区热,企业内部遇冷)的情况。在2011到2013年我的主要客户还是使用 SVN,甚至我的 80% 时间用在 某些企业内部 SVN 平台的定制开发上。不过最近两年又几乎掉了一个个儿。但是在企业中推广 Git 还是很有挑战,一是 Windows 平台上的工具体验不佳, 再一个是大的 Git 仓库(10GB以上)导致的用户体验差。业界出现了一些解决方案,例如 Git-LFS,在2015年底,我和我的小伙伴们为企业 内部的 Git 平台加入了 Git-LFS 功能。我也在思考和尝试更好的方案。
-
Git 进入 2.x 之后,大的功能上的改变很少,不过小的改变很多,如果照着《Git权威指南》照搬,很多地方会遇到困难。
-
写书之前,我给 Git 只贡献了一两个提交,而这几年,我向Git社区贡献了近两百个提交,其中有一些是有点技术含量的新功能、Bugfix, 也有相当多的中文本地化。2012年我成为 Git 社区本地化的负责人,关于Git社区的工作流程理解得也更为透彻。
早在三年前,出版社又开始和我约稿,包括热心网友的询问,我一直以 Git 2.0 尚未发布为挡箭牌。但是真的等到 Git 2.0 发布, 我发现再也找不到大块儿的空余时间来专心写作了。这也就是为什么这本书现在已经很难在正规渠道买到了,那些拿到我亲笔签名的亲们, 你们赚到了。 ;)
2015年底,在为华为做咨询顾问一年多之后,我决定接受新的挑战,加入华为公司,成为这个拥有着最大的开发者群体的世界级公司的一员。 如何有效地在大公司内进行过知识的传递也是一个课题,我决定将这本书的书稿开源,惠及更多的开发者。
GotGit 书稿开源在 GitHub 上:https://github.com/gotgit/gotgit/。采用 Fork + Pull Request 方式参与贡献。
在线浏览电子书: http://worldhello.net/gotgit/。
为了方便贡献者随时检查对书稿源码的改动,建议您采用下面的方法下载和编译 GotGit。
在我开始撰写 GotGit 一书时,我就决定使用一种对版本控制友好的工具(Word肯定要排除在外),权衡之后,我决定使用 reStructured Text,不但因为这个文档格式语法丰富,更因为有着非常好的框架和格式转换工具——sphinx-doc。
sphinx-doc 存在一个问题,就是生成的 HTML 网页很多资源目录(如 _images, _static, _downloads)都使用下划线做前缀, 而 GitHub 的 Pages 网页托管因为安全性原因拒绝对下划线开头的目录提供服务。所以必须对 sphinx-doc 做些改动。
为了简化电子书工具链部署流程,我做了几个 Docker 镜像,简化编译流程。
-
克隆 jiangxin/docker-gotgit 仓库:
$ git clone https://github.com/jiangxin/docker-gotgit.git
-
编译电子书(会自动克隆 GotGit 源码到 gotgit 目录):
$ cd docker-gotgit $ make
-
如果想参与 GotGit 电子书的贡献,派生 GotGit仓库,将本地的
gotgit
目录指向您自己的派生仓。$ cd gotgit $ git remote rename origin upstream $ git remote add origin https://github.com/YOUR-NAME/gotgit.git $ git pull $ cd .. $ make
-
编译结果保存在
gotgit/_build/html
目录下。执行下面命令会启动 Nginx 的 Docker 镜像,通过 5000 端口提供电子书的网页浏览功能。打开浏览器就可以开心地阅读了。$ make server