就一家軟體公司,版本控制系統幾乎是必備的工具,就算不是軟體公司,一般也建議採用這樣的工具來協調團隊合作。版本控制系統協調團隊文件、程式碼的修改工作,避免互相覆蓋而造成成果的流失。事實上,就算是一個人進行開發,版本管理系統依然提供許多好處。本文屬於 「善用雲端服務,微型企業的自強之道」系列文章之一。
在軟體越來越複雜的時代,如果有一家軟體公司可以不用版本管理系統,那真的算得上是奇葩!山姆鍋從一開始工作,公司都有採用這樣的系統,也瞭解這樣的工具的必要性。然而,隨著技術與趨勢的變遷,採用的工具是會變動的。本文,山姆鍋就說明「影化身科技」所採用的方案以及背後主要決定的因素。
需求考量
雖然山姆鍋已經習慣 Subversion, VCS 這種集中式版本控制系統。事實上,過去幾家服務的公司,都是由我決定採用 Subversion。但來到雲端計算時代,我們有其他更好的選擇?就版本控制系統,除了基本功能外,我覺得下列是幾個「影化身科技」考量的需求:
- 須有雲端服務供應商。
- 需要支援集中式權限管理。
- 方便分散式開發。
在山姆鍋的評估過程中,其實只考慮採用下列系統之一:
- Subversion
- Git
- Mercurial
「影化身科技」最終採用的是 Git,底下讓山姆鍋來說明為什麼。 Subversion 雖然是我最熟悉的系統,但是從過去的經驗,在做 branch-and-merge 的操作上,效率明顯是不太理想。要連線才能進行 branch 這點,也影響開發效能。由於知道其他分散式版本控制系統可以改善這點,山姆鍋決定捨棄 Subversion。
既然不使用 Subversion,那只剩下 Git 或 Mercurial 了。下列是我在選擇這兩者時使用的優劣比較:
Git
優點
- 採用 C 開發,理論上,執行效率較高。
- 支援度以及社群比較大。
缺點
- 沒有 Windows 原生支援,造成效率跟使用不便。
- 中文檔名支援不完善。
Mercurial
優點
- 使用 Python 開發,較容易擴充。
- 對 Windows 平台支援較好。
- 較接近 Subversion 使用的語法。
缺點
- 第三方服務支援較少。
- 中文檔名支援不完善。
這兩者從功能、效率來講,其實差異不大。老實說,山姆鍋一開始是選擇 Mercurial 的,那為什麼最終會決定採用 Git 呢?最大的原因在於第三方服務的支援。首先,雲端原始碼代管服務,不外乎: GitHub 跟 B itBucket。由於有些第三方服務只支援 GitHub,但「影化身科技」私有的原始碼是放在 BitBucket,為了避免同時採用兩種工具,只好選擇兩者都支援的 Git。現在,「影化身科技」開放原始碼的專案會放置在 GitHub。
小結
本文只是針對預先選定的三種技術來考量,並不是全面性的比較。由於山姆鍋現在的主要開發環境已經轉到 Mac OS X,所以,Git 對 Windows 平台沒有原生的支援這點已經比較無所謂。