《Linux内核修炼之道》精华分享与讨论(20)——学会使用Git

时间:2021-04-08 23:40:27

推荐博文: Linux内核“问题门”——学习问题、经验集锦

推荐下载:《Linux内核修炼之道》精华版之方法论

 

作为一名人民的好*,如果希望被惦记,可以学我们的郑书记,将自己和蔼可亲的光辉形象搬上台历;作为一名有梦想有追求而又不知道如何出名的人,你可以参考对岸的“超想被包养”社团。而作为一个内核爱好者,要想成为一名内核开发者,为内核贡献自己的代码,我们必须要能够与其他众多的内核开发者协同工作,这就意味着应该能够使用内核的版本控制工具Git管理内核代码。

1. 什么是Git

GitLinus专门为内核而开发的一个开放源码的版本控制软件,如下图所示,Git的主页http://git-scm.com/很好的回答了Git是什么的问题。

《Linux内核修炼之道》精华分享与讨论(20)——学会使用Git

Git是一款免费的、开源的、分布式的版本控制系统,旨在快速高效地处理无论规模大小的任何软件工程。每一个Git clone(克隆)都是一个含有全部项目历史记录的文件仓库(repository),具有完整的版本修订追踪能力,它不依赖于网络连接或中心服务器,创建分支(branching)和合并分支(merging)非常的快速和简单。

目前,已经有越来越多的著名项目采用Git来管理项目的开发,比如PerlGnomeWine等等。(注意,在Ubuntu/debian上,安装的是git-core,而不是git

2.Git的由来

Linus20022月开始使用BitKeeper作为内核的版本控制工具。但是BitMover公司在商业版的BitKeeper之外,提供的BitKeeper只是仅可免费使用但不允许加以修改开放的精简版,因此,包括GNU之父Richard Stallman之内的很多人,对Linus使用BitKeeper感到不满。

然而,当时市场上并没有其他具备BitKeeper类似功能的*软件可用,于是有些人就尝试对其进行逆向工程,这惹恼了BitMover,该公司于是决定停止提供BitKeeper的免费版本。为解决无工具可用的窘境,Linus便自行开发Git,希望在适当的工具出现前,暂时得充当解决方案。当时Linus曾称Git为愚蠢的内容管理器(the stupid content tracker)。当Git有了迅速成长之后,Linus就建议能够以其作为长期的解决方案,并于之后的2.6.12-rc3内核第一次采用Git进行发布。

3. 一段录像

Git历史上有段很著名的录像,是LinusGoogle的一个演讲,我们可以在youtube上看到它。在这段录像中,Linus说明了设计Git的原因,基本的设计哲学,以及与其他版本控制工具的比较。

从技术的观点上,Linus非常尖锐的批判了CVSSVN。虽然Linus从来没有使用过CVS去管理内核代码,但是他在商业公司曾有过一段不短时间的使用经历,而且对其强烈的厌恶。同时他批判SVN是毫无意义的,因为SVN尝试从各方面去改善CVS的一些缺点,却无法根本的解决一些基本的使用限制。具体来说就是,SVN改善了创建分支的所耗费的成本,相对CVS利用了比较少的系统资源,但是却无法解决合并分支的需求。但是许多项目的开发过程中,都时常需要为不同的新功能创建分支、合并分支,如此依赖,SVN就成为一个没有未来的项目。

Git作为一个分布式的版本控制工具,你可以随意的创建新分支,进行修改、测试、提交,这些在本地的提交完全不会影响到其他人,可以等到工作完成后再提交给公共的仓库。这样就可以支持离线工作,本地提交可以稍后提交到服务器上。

Linus提到,在内核开发社区中有一种信任关系(web of trust),像内核这样庞大的项目,每个版本参与的开发者都非常多,但是Linus不可能认识这么多的人,自然地,他只能信任最为熟悉的极少数人,并相信那些人的智商与能力是足以信赖的,于是他只需要信赖这些人的成果,而同时这些人又在自己的信任圈力找到他可以信赖的人,于是利用这样的信赖机制扩展成了网状的内核开发社区。

实际上,社区中也会演化出几个角色,比如司令(dictator)、副官(lieutenants)、开发者,少数的副官只需要专注在他们熟悉的领域,整合开发者的成果,并提交给司令做最后的整合决策,这样一来,各种不同的领域都可以交给最为熟悉的开发者去管理,而项目开发本身不会被限制阻塞在某个角色身上,相对而言是一种比较高效的开发社区结构。

4. 一些资源

本书并不会也不需要对Git的具体使用过程进行介绍,下面仅推荐几个好的网站或资料以供学习参考。

http://www.ibm.com/developerworks/cn/linux/l-git/

这篇文章详细描述了如何使用Git来管理内核代码。

http://www.youtube.com/watch?v=4XpnKHJAok8

这就是上面提到的那段著名的录像,相信认真的消化之后会有不小的收获。

http://book.opensourceproject.org.cn/versioncontrol/git/gittutorcn.htm

Git的中文教程。

http://zh-cn.whygitisbetterthanx.com/#github

这是Kanru翻译的《为什么GitX更好》,简要的说明了Git与其他版本控制工具的比较,可以让你了解各种工具之间的差异细节。

http://github.com/

很多人说正是GitHub让他们选择了Git,相比其他的项目托管网站,它更象一个社交网络,可以追踪别人的状态,不过追踪的不是朋友发出的信息,而是朋友写出的代码。人们可以在GitHub上找到与他们在做的事相关的其他开发人员或项目,然后轻松地fork和贡献,这样形成了一个以Git和各种项目为中心的活跃社区。