爲什麼說 Git 將取代 SVN 做軟件版本控制?

請允許我從一個“非編程人員”用戶的角度先解釋一下軟件的版本控制:當若干開發人員組成的團隊聯合開發一個軟件工程時,互相有不同的代碼片段任務;他們需要將各自的成果集中起來,並方便隨時修改及更新。有時修改後又覺得之前的代碼可能更好,需要返回舊版本 —— 這就產生了版本控制的需要。代碼集中存放的地方叫“文件庫”(repository)。每個程序員都可以隨時提取(check out)文件庫中的某個文件進行修改,並將修改結果提交(commit/check in)到文件庫去。

用來實現這種管理的服務器端程序有多種,下圖中就列出了一些版本控制軟件。其中 Subversion 就是我們常說的 SVN,它替代了曾經流行的 CSV 而成爲主流。但目前看來,Git 將取代 SVN 成爲版本控制的最佳工具。

等等,這個話題跟 Joomla 有關係嗎?當然有關。因爲有些 Joomla 擴展的作者已經開始使用 Git 來管理自己的代碼庫,如果用戶需要下載最新的“開發版”,就必須瞭解 Git 的用法,通過 Git 來獲取想要的文件。  

 

Git website homepage
Git website homepage

 

什麼是 Git?

上圖是 Git 官方網站首頁的部分截圖,裏面有英文原版的對 Git 的解釋:

Git 是一款免費的、開源的、分佈式的版本控制系統。旨在快速高效地處理無論規模大小的任何軟件工程。

每一個 Git克隆 都是一個完整的文件庫,含有全部歷史記錄和修訂追蹤能力,不依賴於網絡連接或中心服務器。其最大特色就是“分支”及“合併”操作非常快速、簡便。

 

如果你不能理解“分佈式”,那麼我們看一個簡單例子:假如你把開發任務從公司帶回家,晚飯後突然有了靈感,要對代碼進行修改,不巧家裏的電腦不能連接到公司的文件庫,你怎麼下載要修改的文件?即使你將文件用優盤帶回去了,那麼修改之後,又怎樣提交?SVN 對這種情況沒有解決方案,而 Git 可以!因爲 Git 在每個用戶硬盤上都創建了完整的文件庫,不需要、也不存在一個“中心服務器”,你只要能連接上任何一個團隊成員的電腦,就能將代碼提交到文件庫去(有點像 P2P)。

順便說一下,Git 是由“Linux之父”  Linus Torvalds 創建的。因爲他發現找不到滿意的方案來管理 Linux Kernel 聯合開發的版本控制,就自己寫了 Git。

Git 有什麼優勢?

從網上的用戶評價來看,Git 最大的優勢就是“快”!對於大型的聯合開發項目,用 SVN 進行版本控制管理時速度很慢,但是用 Git 就快很多。

還有一個說法是:SVN 有的功能 Git 都有,而 Git 的某些特色 SVN 根本做不到。

這就足夠打動我了。我不是開發人員,無需關心更細節的比較了。如果你有興趣深入瞭解,請 Google 之。

Git 如何使用?

Git 本來是面向 Linux 操作系統開發的軟件。在 Linux 平臺上使用 Git 非常簡單,當然都是命令行模式。具體操作指令參看:Git 中文教程

如果你想在服務器上安裝 Git,請看 Git 服務器安裝 教程。

對於 Windows 操作系統用戶來說,藉助於 Cygwin 也能運行 Git 的命令行模式。

不過,Windows 的用戶當然更喜歡圖形界面。因此也就有了:

 

Windows 平臺的 Git 圖形界面客戶端

目前至少有三款可運行在 Microsoft Windows PC 上的 Git 客戶端:Git Extensionsmsysgit 以及 TortoiseGit

msysgit 的優勢是帶了一個命令行界面(Git Bash),其啓動命令也是整合到 Windows 資源管理器的右鍵菜單上了,如果你對 Git 的命令行模式情有獨鍾,那麼建議你安裝 msysgit,在 Win 平臺上繼續享用 Git 命令行工作模式。

Git Bash of msysgit
Git Bash of msysgit

 

安裝了 msysgit 之後,在 Windows “我的電腦”中任意一個文件夾上面點擊鼠標右鍵,選擇“Git Bash Here”就能彈出上圖所示的 Git 命令行窗口。這個啓動過程可能需要十幾秒鐘,請耐心等待。最後看到綠色的 $ 就是命令行提示符。輸入 git help git 這個命令並回車,就會在瀏覽器中打開 msysgit 自帶的幫助文檔 HTML 頁面;要離開命令行時,在 $ 提示符下輸入 exit 就退出了。

我親自用過上述三個中的後兩個。感覺 TortoiseGit 是最好用的。是不是覺得 TortoiseGit 這個名字有點熟?它就是 TortoiseSVN 客戶端的開發團隊製作的。因此用過 TortoiseSVN 的用戶能夠很快熟悉 TortoiseGit 的用法 —— 實際上,有些人懼怕 Git 而抱着 SVN 不放,就是因爲 TortoiseSVN 用起來太方便了。現在有了同樣方便的 TortoiseGit,你還怕什麼呢?

TortoiseGit 的安裝

在安裝 TortoiseGit 之前,你的 Windows PC 上仍然必須先安裝 msysgit。因爲此程序提供了 Git 核心。而且安裝順序是:先安裝 msysgit,然後安裝 TortoiseGit。如果你弄反了,就必須進入 TortoiseGit 的設置界面(右鍵菜單上 TortoiseGit -> Settings -> General -> MSysGit -> Path),手動指定 Git 核心文件的位置(例如 c:\Program Files\Git\bin)。

TortoiseGit 下載之後是一個可執行的 .msi 格式安裝包,直接雙擊就能安裝到 Windows 上,與資源管理器無縫整合。在任何文件夾上點擊右鍵就能看到它的菜單。它有 64-bit 和 32-bit 兩種版本,請根據你的 Windows 操作系統來選擇合適的安裝包。安裝完畢需要重新啓動電腦。由於目前還沒有中文語言包,因此現在使用 TortoiseGit 的話還是英文界面。

TortoiseGit 可以支持 SSH 加密方式的“上傳”,早期版本是藉助另一款專門實現 SSH 傳輸的開源軟件 Putty 來實現,用戶必須另外安裝 Putty,然後在 TortoiseGit 的設定選項中給出 Putty 的可執行文件位置(例如 C:\Program Files\Putty\plink.exe)。現在最新的 TortoiseGit 已經自帶了 TortoisePlink.exe(在右鍵菜單中 TortoiseGit -> Settings -> Network -> SSH -> SSH client)。

TortoisePlink.exe 實際上是 Putty 的 Plink.exe 文件的一個衍生產品,功能上比 Putty 可能要差一些。如果你喜歡 SSH 方式,那麼還是建議你安裝 Putty —— 沒準你的電腦上早就安裝了。

提示:通過 SSH 方式訪問遠程服務器還需要認證密鑰(Putty Key)文件,每一個服務器都不一樣。請參看 Putty 的相關文檔,本文不再贅述。

不過別擔心,我們只想通過 TortoiseGit 來下載軟件最新版本,就不需要搞清楚這個 Key 是什麼,怎麼用,一樣能達到目標。

請點擊“下一頁”來看看我使用 TortoiseGit 的實戰演示 ——

 

文件標題: TortoiseGit for Windows 32-bit Git版本控制系統客戶端軟件 v0.7.2.0 英文原版 (詳情)
文件類型: .msi
版本: 0.7.2.0
文件大小: 18.57 MB
下載次數: 4256

{mospagebreak_scroll title=TortoiseGit 客戶端實戰演示&heading=Git 版本控制系統介紹}

用 TortoiseGit 下載遠程文件演示

我們以 Joomla! 1.5 平臺上的 SJSB 橋接器組件爲例,來演示一下通過 Git 下載 SJSB 最新版本的過程。

在 SJSB 官方網站提供了一個 SVN 下載地址:

svn checkout http://sjsb.googlecode.com/svn/trunk/

有意思的是,你通過 TortoiseSVN for Windows 客戶端訪問該地址後,只下載到一個 README 文本文件,其內容是:

 

Please use git to get latest version from:

git://src.develer.com/users/woody/sjsb/.git
 

 

也就是說,實際上 SJSB 作者已經將原來 SVN 中的代碼全部遷移到 Git 文件庫去了。上面 git:// 開頭的地址就是 Git 的訪問地址。

 

在你的硬盤上某個位置創建一個新目錄,例如命名爲 sjsb Git,然後在上面點擊鼠標右鍵,在彈出菜單上選擇“Git Clone...”,如下圖所示:

get Git Clone

 

接下來就會彈出一個對話框,要你填寫該 Git Clone 對應的地址。我們輸入 SJSB 作者給出的地址即可:

Git Clone URL
Git Clone URL

 

 

是不是覺得這個對話框很熟悉?酷似 TortoiseSVN 的“檢出”對話框。在 URL 一欄填寫目標網址,去掉 Load Putty Key 的勾選,然後點擊“OK”按鈕,就開始了傳輸遠程文件的畫面:

TortoiseGit Clone receiving
TortoiseGit Clone receiving

 

畫面上那個小烏龜怎麼是反着的?呵呵,這個畫面上的小烏龜一直在翻跟頭,從遠程圖標翻到本地文件夾圖標,代表文件不斷在傳輸。我們截圖的時候剛好是翻過身去了。進度條下面的方框中顯示了 Git Clone 的來源網址及本地存儲位置,也顯示了文件總數、已收到文件數量、傳輸速度等參數。

傳輸完成後,點擊 OK 按鈕,就結束了對文件庫的下載。

下面,我們要將得到的文件導出爲可用的 SJSB 安裝包。這個過程與 TortoiseSVN 的導出過程也幾乎一樣:

在 sjsb Git 這個目錄上點擊右鍵,這時彈出菜單的內容有了變化,因爲這個文件夾已經內含 Git Clone,所以相應的增加了很多菜單項目:

Git Menu Export
Git Menu Export

 

在 Git 的右鍵菜單上選擇 TortoiseGit -> Export 就彈出了下面的對話框:

Git Clone Export Dialog
Git Clone Export Dialog

 

在最上面的 Zip File 那裏輸入導出文件的文件名,注意不要忘記 .zip 擴展名,否則導出後的結果沒有擴展名。該輸入框右側的按鈕允許用戶自定義一個輸出位置。如果不指定,默認是存放在當前 Git Clone 的目錄內,即 sjsb Git 這個文件夾裏面。

下面的幾項都不用去管,選擇好文件名之後直接點擊“OK”按鈕,就開始了導出過程。最終在 sjsb Git 文件夾下生成了一個 zip 文件。打開該 zip 文件,可看到 SJSB 橋接器最新的版本:

Git Clone Export Result
Git Clone Export Result

 

可以看到,文件日期都是 2009年5月2日的,而 SJSB 官方網站上通過 web 界面下載的 1.0.14a 版本其文件日期是2009年3月16日的。進入 com_smf 目錄後,在 XML 文件中可以看到版本號是 1.0.15a-dev2。很顯然我們已經通過 Git 得到了作者尚未發佈的“開發版”。

以上我們演示了 Git 的“下載”過程,如果你想“上傳”呢?也很簡單!在本地的 Git Clone 中修改了文件之後,可以在總目錄上點擊右鍵,選擇 Git Commit -> "master"... 這一項即可(注意是一級菜單,不是次級)。

當你在 PC 上擁有了一個 Git克隆 之後,過一段時間肯定需要更新一下,從“主庫”(master)中提取別人提交的新文件,並與你自己 PC 上的 Git Clone 合併。這些操作都可以在右鍵菜單上找到相應的命令。具體用法請仔細閱讀 TortoiseGit 的幫助(右鍵菜單上 TortoiseGit -> Help)。

Joomla之門點評 Git

我曾經用過 Git 的命令行模式,那真是很痛苦的經歷。有了 TortoiseGit,就沒有任何理由再說 Git 不好了。既然 Git 已經擁有了 SVN 的全部功能並且還有更多獨特的優勢,我想 Git 取代 SVN 也是一種必然趨勢。

或許你的開發團隊正準備搭建自己的 SVN 服務器,那麼我建議你不妨直接使用 Git 吧,很明顯大家將來都會接受 Git 的。

假如你們已經在用 SVN 了,那麼建議你參考一下 SVN+Git 魚與熊掌兼得 這篇文章,可以同時使用 SVN 和 Git,這樣也方便團隊成員完成平穩過渡。

文件標題: TortoiseGit for Windows 32-bit Git版本控制系統客戶端軟件 v0.7.2.0 英文原版 (詳情)
文件類型: .msi
版本: 0.7.2.0
文件大小: 18.57 MB
下載次數: 4256
http://www.joomlagate.com/article/joomla-review/why-subversion-will-be-replaced-by-git-for-version-control/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章