Skip to content

Commit ae6877e

Browse files
committed
wrap lines to 78, long lines are hard to diff.
1 parent e01f9dc commit ae6877e

35 files changed

Lines changed: 1150 additions & 430 deletions

01-explore-github/010-what-is-github.rst

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,76 @@
11
什么是GitHub
22
================
3+
GitHub(网址 https://github.com/\ )是一个面向开源及私有软件项目的托管平台,\
4+
因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
35

4-
GitHub(网址 https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
56

6-
GitHub的注册用户已经超过百万\ [#]_\ ,托管的版本库数量已超三百万,其中不乏知名的开源项目,如:Ruby on Rails\ [#]_\ 、Hibernate\ [#]_\ 、phpBB\ [#]_\ 、jQuery\ [#]_\ 、Prototype\ [#]_\ 、Homebrew\ [#]_\ 等。
7+
GitHub的注册用户已经超过百万\ [#]_\ ,托管的版本库数量已超三百万,其中不乏知\
8+
名的开源项目,如:Ruby on Rails\ [#]_\ 、Hibernate\ [#]_\ 、phpBB\ [#]_\ 、\
9+
jQuery\ [#]_\ 、Prototype\ [#]_\ 、Homebrew\ [#]_\ 等。
710

8-
GitHub于2008年4月10日正式发布\ [#]_\ ,相比始于1999年的SourceForge\ [#]_\ 和2005年的GoogleCode\ [#]_\ ,GitHub后来者居上。以2011年的数据从代码提交数量上看,GitHub已经超越其前辈\ [#]_\ ,如图1-1所示。
11+
GitHub于2008年4月10日正式发布\ [#]_\ ,相比始于1999年的SourceForge\ [#]_\ 和\
12+
2005年的GoogleCode\ [#]_\ ,GitHub后来者居上。以2011年的数据从代码提交数量上\
13+
看,GitHub已经超越其前辈\ [#]_\ ,如图1-1所示。
914

1015
.. figure:: /images/explore-github/survival-of-the-forges.png
1116
:scale: 100
1217

1318
图1-1:开源项目托管平台提交数量对照
1419

15-
对于一个开源项目,从开发角度讲大体上分为两类人群,一类称为核心开发团队,他们可以向保存源代码的版本库提交,即对源代码的修改具有最终的决定权。另外一类称为贡献者,他们不属于核心开发团队,虽然也能看到源代码,但只可读不可写。
20+
对于一个开源项目,从开发角度讲大体上分为两类人群,一类称为核心开发团队,他们\
21+
可以向保存源代码的版本库提交,即对源代码的修改具有最终的决定权。另外一类称为\
22+
贡献者,他们不属于核心开发团队,虽然也能看到源代码,但只可读不可写。
1623

17-
采用传统的集中式版本控制系统(如SVN)的开源项目,这两个群体的用户体验都不是太好。如图1-2所示,项目的贡献者(非核心成员)很不“高兴”,因为他们即便有修改源代码的能力和渴望,也不能直接向版本库提交,要想成为提交者需要一个很长的建立信任的过程。然而即便是核心开发团队的成员,体验也不是太好,因为凡是涉及到版本库的操作(检入、检出、查看日志等)都需要在联网的状态下进行,网络带宽对用户体验影响相当大。
24+
采用传统的集中式版本控制系统(如SVN)的开源项目,这两个群体的用户体验都不是\
25+
太好。如图1-2所示,项目的贡献者(非核心成员)很不“高兴”,因为他们即便有修改\
26+
源代码的能力和渴望,也不能直接向版本库提交,要想成为提交者需要一个很长的建立\
27+
信任的过程。然而即便是核心开发团队的成员,体验也不是太好,因为凡是涉及到版本\
28+
库的操作(检入、检出、查看日志等)都需要在联网的状态下进行,网络带宽对用户\
29+
体验影响相当大。
1830

1931
.. figure:: /images/explore-github/cvcs-model.png
2032
:scale: 100
2133

2234
图1-2:使用集中式版本控制系统
2335

24-
Git等分布式版本控制系统的出现,彻底颠覆了原有代码管理的管理模式。使用Git,不再需要唯一的、集中式的版本库,而是每个开发者本地都拥有一份完整的版本库。Git并不排斥集中式的使用模式,但更倾向于将集中式版本库称为共享版本库。核心开发团队的成员和贡献者(非核心成员)都可以从共享版本库克隆一份本地版本库,但只有核心团队成员才可以将自己本地版本库的提交推送到共享版本库上。如图1-3所示。
36+
Git等分布式版本控制系统的出现,彻底颠覆了原有代码管理的管理模式。使用Git,\
37+
不再需要唯一的、集中式的版本库,而是每个开发者本地都拥有一份完整的版本库。\
38+
Git并不排斥集中式的使用模式,但更倾向于将集中式版本库称为共享版本库。核心\
39+
开发团队的成员和贡献者(非核心成员)都可以从共享版本库克隆一份本地版本库,\
40+
但只有核心团队成员才可以将自己本地版本库的提交推送到共享版本库上。\
41+
如图1-3所示。
2542

2643
.. figure:: /images/explore-github/dvcs-model.png
2744
:scale: 100
2845

2946
图1-3:使用分布式版本控制系统
3047

31-
使用Git做版本控制(如图1-3所示),核心开发团队非常“高兴”,因为他们和共享版本库之间不必一直保持连接状态,诸如查看日志、提交、创建分支等几乎全部操作都(脱离网络)在本地的版本库中完成。项目贡献者(非核心成员)也不再那么沮丧,因为版本库人人皆可更改(当然是对本地版本库而言)。稍微让贡献者感到困难的就是如何将自己对项目的改进被核心开发团队所了解并接纳。Git提供了多种途径,一个方法是先用\ ``git format-patch``\ 命令将本地提交转换为补丁文件或补丁文件序列,再通过邮件发送给核心开发团队。另外一个办法就是搭建一个自己专有的共享版本库,通过邮件创建一个拉拽请求(Pull Request),让核心团队的开发者到自己的版本库来抓取(Pull)。
32-
33-
GitHub的出现极大地改善了开源项目的生态环境,无论是项目的核心开发团队,还是普通的项目贡献者都工作得非常“愉快”。创建项目变得非常轻松,创建者只需在GitHub上点击一下鼠标即可创建一个新版本库,组建项目核心团队也很容易。核心团队使用Git命令操作共享版本库,如图1-4所示。
48+
使用Git做版本控制(如图1-3所示),核心开发团队非常“高兴”,因为他们和共享\
49+
版本库之间不必一直保持连接状态,诸如查看日志、提交、创建分支等几乎全部操作\
50+
都(脱离网络)在本地的版本库中完成。项目贡献者(非核心成员)也不再那么沮丧,\
51+
因为版本库人人皆可更改(当然是对本地版本库而言)。稍微让贡献者感到困难的就是\
52+
如何将自己对项目的改进被核心开发团队所了解并接纳。Git提供了多种途径,一个方法\
53+
是先用\ ``git format-patch``\ 命令将本地提交转换为补丁文件或补丁文件序列,再\
54+
通过邮件发送给核心开发团队。另外一个办法就是搭建一个自己专有的共享版本库,\
55+
通过邮件创建一个拉拽请求(Pull Request),让核心团队的开发者到自己的版本库来\
56+
抓取(Pull)。
57+
58+
GitHub的出现极大地改善了开源项目的生态环境,无论是项目的核心开发团队,还是\
59+
普通的项目贡献者都工作得非常“愉快”。创建项目变得非常轻松,创建者只需在GitHub\
60+
上点击一下鼠标即可创建一个新版本库,组建项目核心团队也很容易。核心团队使用\
61+
Git命令操作共享版本库,如图1-4所示。
3462

3563
.. figure:: /images/explore-github/github-model.png
3664
:scale: 100
3765

3866
图1-4:GitHub的协同模式
3967

40-
在GitHub中,非核心团队成员参与项目也很容易。先找到自己希望参与的项目,然后只需在Web上点击一下鼠标即可在自己的托管空间下创建一个派生(fork)的项目,并对派生项目的版本库具有读写的完全权限,就好像这个项目原本就是由自己创立的那样。当贡献者完成开发并向自己派生的版本库推送后,可以通过GitHub的Web界面向项目的核心开发团队发送一个 Pull Request,请求审核。项目的核心团队收到 Pull Request 后审核代码,审核通过后可以直接通过Web界面完成合并。
68+
在GitHub中,非核心团队成员参与项目也很容易。先找到自己希望参与的项目,然后\
69+
只需在Web上点击一下鼠标即可在自己的托管空间下创建一个派生(fork)的项目,\
70+
并对派生项目的版本库具有读写的完全权限,就好像这个项目原本就是由自己创立的\
71+
那样。当贡献者完成开发并向自己派生的版本库推送后,可以通过GitHub的Web界面向\
72+
项目的核心开发团队发送一个Pull Request,请求审核。项目的核心团队收到\
73+
Pull Request后审核代码,审核通过后可以直接通过Web界面完成合并。
4174

4275
----
4376

01-explore-github/020-github-hightlights.rst

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,55 @@ GitHub亮点
55

66
1. 只用Git。
77

8-
GitHub只支持Git格式的版本库托管,而不像其他开源项目托管平台还对CVS、SVN、Hg等格式的版本库进行托管。GitHub的哲学很简单,既然Git是最好的版本控制系统之一(对于很多喜欢Git和GitHub的人没有之一),没有必要为兼顾其他版本控制系统而牺牲Git某些独有特性。因此没有支持其他版本控制系统的历史负担,是GitHub成功的要素之一。
8+
GitHub只支持Git格式的版本库托管,而不像其他开源项目托管平台还对CVS、SVN、\
9+
Hg等格式的版本库进行托管。GitHub的哲学很简单,既然Git是最好的版本控制系统\
10+
之一(对于很多喜欢Git和GitHub的人没有之一),没有必要为兼顾其他版本控制\
11+
系统而牺牲Git某些独有特性。因此没有支持其他版本控制系统的历史负担,\
12+
是GitHub成功的要素之一。
913

10-
只用Git并不是说GitHub完全无视其他版本控制系统的使用者,相反,GitHub面向SVN(Subversion)用户和Hg(Mercurial)用户开发了接口,让这些用户可以使用SVN或Hg的客户端工具访问Git版本库。
14+
只用Git并不是说GitHub完全无视其他版本控制系统的使用者,相反,GitHub面向\
15+
SVN(Subversion)用户和Hg(Mercurial)用户开发了接口,让这些用户可以使用\
16+
SVN或Hg的客户端工具访问Git版本库。
1117

1218
2. 对Git的完整支持。
1319

14-
相比其他开源项目托管平台,GitHub对Git版本库提供了完整的协议支持,支持HTTP智能协议、Git-daemon、SSH协议。相比只支持HTTP协议的GoogleCode,GitHub通过SSH协议可以实现版本库访问的无口令认证\ [#]_\
20+
相比其他开源项目托管平台,GitHub对Git版本库提供了完整的协议支持,支持HTTP\
21+
智能协议、Git-daemon、SSH协议。相比只支持HTTP协议的GoogleCode,GitHub\
22+
通过SSH协议可以实现版本库访问的无口令认证\ [#]_\
1523

1624
3. 无处不在的Git。
1725

18-
除了在版本库托管上使用Git,Git还被应用到GitHub更多的领域。维基使用Git,可以通过克隆维基所在的版本库,离线修改维基;在线粘贴数据的Gist网站\ [#]_\ 使用Git,记录变更历史;以及在Jekyll应用的帮助下,用Git版本库维护个人网站和博客等。
26+
除了在版本库托管上使用Git,Git还被应用到GitHub更多的领域。维基使用Git,\
27+
可以通过克隆维基所在的版本库,离线修改维基;在线粘贴数据的Gist网站\ [#]_\
28+
使用Git,记录变更历史;以及在Jekyll应用的帮助下,用Git版本库维护个人网站\
29+
和博客等。
1930

2031
4. 在线编辑文件。
2132

22-
GitHub提供了在线编辑文件的功能,不熟悉Git的用户也可以直接通过浏览器修改版本库里的文件。
33+
GitHub提供了在线编辑文件的功能,不熟悉Git的用户也可以直接通过浏览器修改\
34+
版本库里的文件。
2335

2436
5. 社交编程。
2537

26-
将社交网络引入项目托管平台是GitHub的创举。用户可以关注项目、关注其他用户进而了解项目和开发者动态。项目的派生(Fork)和拉拽请求(Pull Request)构成GitHub最独具一格的工作模式。对提交代码的逐行评注及Pull Request构成了GitHub特色的代码审核。
38+
将社交网络引入项目托管平台是GitHub的创举。用户可以关注项目、关注其他用户\
39+
进而了解项目和开发者动态。项目的派生(Fork)和拉拽请求(Pull Request)\
40+
构成GitHub最独具一格的工作模式。对提交代码的逐行评注及Pull Request构成了\
41+
GitHub特色的代码审核。
2742

2843
6. 商业上的成功。
2944

30-
GitHub通过私有版本库托管、面向企业的版本库托管和项目管理平台、人员招聘等付费服务获得了商业上的成功,这种成功使得GitHub不必以页面中嵌入广告的方式维持运营,最大的受益者还是用户。
45+
GitHub通过私有版本库托管、面向企业的版本库托管和项目管理平台、人员招聘等\
46+
付费服务获得了商业上的成功,这种成功使得GitHub不必以页面中嵌入广告的方式\
47+
维持运营,最大的受益者还是用户。
3148

3249
7. 关注细节。
3350

34-
GitHub网站采用了Ruby on Rails架构,在Web设计中运用了大量的JavaScript、AJAX、HTML5等技术,支持对使用Markdown等标记语言的内容进行渲染和显示等。关注细节使得GitHub成为了项目托管领域的后起之秀。
51+
GitHub网站采用了Ruby on Rails架构,在Web设计中运用了大量的JavaScript、\
52+
AJAX、HTML5等技术,支持对使用Markdown等标记语言的内容进行渲染和显示等。\
53+
关注细节使得GitHub成为了项目托管领域的后起之秀。
3554

3655
----
3756

38-
.. [#] 实际上使用HTTP协议也可以免口令输入。即通过文件\ ``~/.netrc``\ 写入HTTP认证的明文口令,具体文件格式参见\ ``ftp``\ 命令的MAN手册中相关介绍。
57+
.. [#] 实际上使用HTTP协议也可以免口令输入。即通过文件\ ``~/.netrc``\ 写入\
58+
HTTP认证的明文口令,具体文件格式参见\ ``ftp``\ 命令的MAN手册中相关介绍。
3959
.. [#] https://gist.github.com/

01-explore-github/030-explore-github.rst

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,66 @@
11
探索GitHub
22
===============
33

4-
打开浏览器,访问网址 https://github.com/ 来探索GitHub吧。GitHub的首页(图1-5所示)特意给出了Git和GitHub的音标,可能不少国人需要据此校准一下Git的读音\ [#]_\
4+
打开浏览器,访问网址 https://github.com/ 来探索GitHub吧。GitHub的首页\
5+
(图1-5所示)特意给出了Git和GitHub的音标,可能不少国人需要据此校准一下\
6+
Git的读音\ [#]_\
57

68
.. figure:: /images/explore-github/github-homepage.png
79
:scale: 100
810

911
图1-5:GitHub的首页
1012

1113

12-
在首页的右上角是导航条,从左至右分别是:注册和收费方案、探索GitHub、功能、博客和登录。还醒目地显示出不断增长着的注册用户数和托管的版本库数目。
14+
在首页的右上角是导航条,从左至右分别是:注册和收费方案、探索GitHub、功能、\
15+
博客和登录。还醒目地显示出不断增长着的注册用户数和托管的版本库数目。
1316

1417

15-
如果想要了解GitHub上哪些项目最热门,进而寻找到好的开源产品,那么可以从导航条中的“Explore GitHub”开始。图1-6显示通过对社交数据的分析得到的托管版本库动态趋势。
18+
如果想要了解GitHub上哪些项目最热门,进而寻找到好的开源产品,那么可以从导航条\
19+
中的“Explore GitHub”开始。图1-6显示通过对社交数据的分析得到的托管版本库动态趋势。
1620

1721
.. figure:: /images/explore-github/explore-trends.png
1822
:scale: 100
1923

2024
图1-6:版本库动态趋势
2125

22-
还可以根据感兴趣的人数、建立分支的数量、关注程度等寻找热门项目。图1-7显示分支最多的项目是Homebrew —— 一款用ruby开发的苹果Mac OS X通用的非官方包管理软件。考虑到不断攀升的苹果用户数量以及易于上手的ruby语言,这并不奇怪。
26+
还可以根据感兴趣的人数、建立分支的数量、关注程度等寻找热门项目。图1-7显示\
27+
分支最多的项目是Homebrew —— 一款用ruby开发的苹果Mac OS X通用的非官方包管理\
28+
软件。考虑到不断攀升的苹果用户数量以及易于上手的ruby语言,这并不奇怪。
2329

2430
.. figure:: /images/explore-github/explore-repositories.png
2531
:scale: 100
2632

2733
图1-7:热门版本库排行
2834

29-
图1-8显示了托管版本库所用编程语言的动态分布,多掌握几个热门编程语言一定会对找工作有帮助。;-)
35+
图1-8显示了托管版本库所用编程语言的动态分布,多掌握几个热门编程语言一定会对\
36+
找工作有帮助。;-)
3037

3138
.. figure:: /images/explore-github/explore-languages.png
3239
:scale: 100
3340

3441
图1-8:托管项目的编程语言统计
3542

3643

37-
GitHub通过屏幕截图等方式介绍了GitHub的常见功能,可以通过点击导航条中的“Features”访问到。如图1-9可以看到在项目管理中,如何利用GitHub提供的团队管理功能、维基、缺陷追踪以及代码审核。
44+
GitHub通过屏幕截图等方式介绍了GitHub的常见功能,可以通过点击导航条中的\
45+
“Features”访问到。如图1-9可以看到在项目管理中,如何利用GitHub提供的团队管理\
46+
功能、维基、缺陷追踪以及代码审核。
3847

3948
.. figure:: /images/explore-github/features-pm.png
4049
:scale: 100
4150

4251
图1-9:GitHub功能介绍
4352

44-
博客也是了解GitHub的一个重要的途径,可以获知GitHub的最新动态,如最新改进等。图1-10显示的是GitHub在感恩节推出的促销活动:收费服务免费试用一个月!\ [#]_\ 如果及时关注博客就不会错过噢。
53+
博客也是了解GitHub的一个重要的途径,可以获知GitHub的最新动态,如最新改进等。\
54+
图1-10显示的是GitHub在感恩节推出的促销活动:收费服务免费试用一个月!\ [#]_\
55+
如果及时关注博客就不会错过噢。
4556

4657
.. figure:: /images/explore-github/blog.png
4758
:scale: 100
4859

4960
图1-10:GitHub博客
5061

51-
图1-10的博客中一个由小章鱼和小猫组合而成的吉祥物,名字叫做Octocat。这个可爱的GitHub吉祥物时不时会出来带给你惊喜。
62+
图1-10的博客中一个由小章鱼和小猫组合而成的吉祥物,名字叫做Octocat。这个可爱的\
63+
GitHub吉祥物时不时会出来带给你惊喜。
5264

5365
马上到GitHub上注册,开始GitHub之旅。
5466

01-explore-github/index.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
探索GitHub
22
********************
3-
熟悉Git\ [#]_\ 的人几乎都知道并喜欢GitHub\ [#]_\ ,反过来GitHub也吸引更多的人来使用Git。GitHub正在成为开源项目托管的主要平台,是什么成就了GitHub?
3+
熟悉Git\ [#]_\ 的人几乎都知道并喜欢GitHub\ [#]_\ ,反过来GitHub也吸引更多的\
4+
人来使用Git。GitHub正在成为开源项目托管的主要平台,是什么成就了GitHub?
45

56
.. toctree::
67
:maxdepth: 1
@@ -11,9 +12,9 @@
1112

1213
.. seealso::
1314

14-
本书并非一本介绍Git的书,并且假设读者已经掌握了Git的相关操作。
15-
如果读者对Git尚不了解,可以参考我写的 《Git权威指南》\ [#]_\ 一书。此外还可以从网上找到很多免费的、很好的Git资料,
16-
如:Git社区书\ [#]_\ 、Pro Git\ [#]_\ 等。
15+
本书并非一本介绍Git的书,并且假设读者已经掌握了Git的相关操作。如果读者对\
16+
Git尚不了解,可以参考我写的 《Git权威指南》\ [#]_\ 一书。此外还可以从网上\
17+
找到很多免费的、很好的Git资料,如:Git社区书\ [#]_\ 、Pro Git\ [#]_\ 等。
1718

1819
----
1920

0 commit comments

Comments
 (0)