Linux內核修煉之道》精華分享與討論(20)——學會使用Git

作爲一名人民的好乾部,如果希望被惦記,可以學我們的鄭書記,將自己和藹可親的光輝形象搬上臺歷;作爲一名有夢想有追求而又不知道如何出名的人,你可以參考對岸的 “超想被包養”社團。而作爲一個內核愛好者,要想成爲一名內核開發者,爲內核貢獻自己的代碼,我們必須要能夠與其他衆多的內核開發者協同工作,這就意味着應該能夠使用內核的版本控制工具 Git 管理內核代碼。

1. 什麼是 Git

Git Linus 專門爲內核而開發的一個開放源碼的版本控制軟件,如下圖 所示, Git 的主頁 http://git-scm.com/ 很好的回答了 Git 是什麼的問題。

Git 是一款免費的、開源的、分佈式的版本控制系統,旨在快速高效地處理無論規模大小的任何軟件工程。每一個 Git clone (克隆)都是一個含有全部項目歷史記錄的文件倉庫( repository ),具有完整的版本修訂追蹤能力,它不依賴於網絡連接或中心服務器,創建分支( branching )和合並分支( merging )非常的快速和簡單。

目前,已經有越來越多的著名項目採用 Git 來管理項目的開發,比如 Perl Gnome Wine 等等。(注意,在 Ubuntu/debian 上,安裝的是 git-core ,而不是 git

2. Git 的由來

Linus 2002 2 月開始使用 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 歷史上有段很著名的錄像,是 Linus Google 的一個演講,我們可以在 youtube 上看到它。在這段錄像中, Linus 說明了設計 Git 的原因,基本的設計哲學,以及與其他版本控制工具的比較。

從技術的觀點上, Linus 非常尖銳的批判了 CVS SVN 。雖然 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 翻譯的《爲什麼 Git X 更好》,簡要的說明了 Git 與其他版本控制工具的比較,可以讓你瞭解各種工具之間的差異細節。

http://github.com/

很多人說正是 GitHub 讓他們選擇了 Git ,相比其他的項目託管網站,它更象一個社交網絡,可以追蹤別人的狀態,不過追蹤的不是朋友發出的信息,而是朋友寫出的代碼。人們可以在 GitHub 上找到與他們在做的事相關的其他開發人員或項目,然後輕鬆地 fork 和貢獻,這樣形成了一個以 Git 和各種項目爲中心的活躍社區。

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章