淺論中小型專案版控系統的基本分支(branch)規劃

關於版控的分支與標籤的基本觀念,可參考原來寫的一篇:關於版本控管系統的分支(branch)與標籤(tag)的區別

關於中小型專案規模的版控分支 (branch)規劃,個人以為應該至少有三條 (以 Git 為例):master, develop , issue。

master (主幹):作為對外版本的釋出 (release)。

develop (開發用分支):作為內部開發的主要分支。其內的開發版本並不會對外釋出。

issue (支援性分支):Bug/Hot-fix (臭蟲/重大更新), 新功能 (new feature) ...。一般紀錄於「Issue Tracking」系統內的 問題/功能 等待解決的 Issue,即會轉入該分支。

看圖說故事

中小型專案規模的版控分支規劃
(點擊圖片鏈接看原圖)圖、中小型專案規模的版控分支規劃

閱讀全文 »

關於版本控管系統的分支(branch)與標籤(tag)的區別

版本控管系統:版本控管係為「建構管理 (configuration management)」的範疇。理論上,關於「分支 (branch)」與「標籤 (tag)」,從觀念上來看在各版控系統應是類似的,只是做法不同罷了。

Suversion vs. Git:雖然兩者常被拿來比較的是,subversion 是集中式的儲庫 (repository),而 Git 則為分散式的。但若從專案管理者的角度來看,要管理的其實只有一個:位於伺服器上的儲庫。即使如 Git 可以有一堆分散式的儲庫,但管理者真正只有管理到例如儲存在 GitHub (or private Git server)上的儲庫。至於開發者在私人的儲庫內,要如何分支與標籤是自己的事,只要最終能提交給專案管理者做合併 (merge)即可。

關於版本控管的分支與標籤說明範例
(點擊圖片鏈接看原圖)圖、關於版本控管的分支與標籤說明範例

    關於分支 (branch):

  • 原則上,任一版本管控系統只有一條主幹,例如 suversion 稱為 trunk,Git 稱為 master。
  • 每一次對開發文件的提交 (commit),可視為是一個節點 (node)。節點會持續隨開發時間推進,並期能達成所設定的里程碑 (milestone)。
  • 如果把主幹的任一節點當成是可能對外發布的釋出 (release),而這些釋出不希望與開發/維護期間的文件相互干擾,則可以另闢其它分支 (branch),可與主幹並行開發並個別維護。主幹與分支(可能多個)盡量將耦合性 (coupling)降低,讓版本釋出與開發維護得以順暢並行。
  • 分支後的開發/維護的節點,最終仍需將修改的文件回到主幹上,此時就必須做「合併 (merge)」的動作。

閱讀全文 »

[NAS 應用] 在 QNAP TS-209 Pro 上跑 Subversion Server

一開始購買 QNAP TS-209 Pro NAS 伺服器時,就打算要安裝 Subversion Server,但是當時受限於以為一定要安裝 Apache Web Server 2.X 以上的版本,而 QNAP 內嵌的 ARM-based Linux 系統,預設是安裝 Apache 1.X。 後來才恍然大悟,並不需要透過 Apache 來做連接傳輸與權限管控,利用 Subversion 預設跑的 svnserver daemon 當然也可以作到,而且使用 svn 的傳輸協定,效能還好上很多呢。

安裝 Subversion Server 有兩大項目,一為先為 QNAP 安裝 iPKG;另一個就是再利用 ipkg 安裝 Subversion Server。 iPKG 是一種輕量 (lightweight)級的套件管理系統,其作用如同 Fedora 的 RPM 或如 Debian 的 APT。而 iPKG 多是應用在容量有限的嵌入式 (Embedded) Linux 系統內。 當然,執行這兩件項目前,要先利用如 PieTTY 登入 QNAP NAS 的 Console 內。

iPKG 的安裝方法直接參照此篇:[Optware/Ipkg]: Install any Linux app on TS-109/209/PRO
先下載 iPKG 的安裝壓縮檔,儲存該檔案於 /share/Public/ 目錄下,並解壓縮它。 只要依照該安裝步驟,執行自動安裝程序,過程非常順利,沒有任何問題。這裡所提供的壓縮檔是最新版的,一切均會自動執行設定與安裝,包括環境變數等,都不需要再自行新增修改。安裝完畢後,重新開機再利用 PieTTY 登入後即可利用 iPKG 執行安裝 Subversion。

Subversion 的安裝步驟是參考該篇: Subversion Server on QNAP-209 Pro ,不過我有調整了一些步驟,參考如下:
閱讀全文 »

在 Windows 平台安裝及設定 Subversion

概述:
Subversion 是一個自由/開放源碼的版本控制系統,也就是說 Subversion 管理著隨時間改變的檔案,這些檔案放置在一個中央 檔案庫 (repository) 中,這個檔案庫,很像一個尋常的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案回復到舊的版本,或是瀏覽檔案的變動歷程,許多人會把版本控制系統想像成某種 “時光機器”。。

Subversion 的原始設計團隊定下了幾個簡單的目標,他們決定它必須在功能上可取代 CVS,也就是說,所有 CVS 可達成的事,它都要能夠作到,在修正最顯而易見的瑕疵的同時,還要保留相同的發展模式,還有,Subversion 應該要和 CVS 很相像,任何 CVS 使用者只要花費少許的力氣, 就可以很快地上手。

關於為何使用 Subversion 來取代 CVS,可以參考 Subversion 的電子書內容。

目的:

  • 在 Windows2003 Server 上安裝及設定 Subversion,以便於團隊成員透過 Internet 協同開發軟體專案,並有版本控管功能。
  • 在用戶端安裝 Subversion 的 Client-side 工具:TortoiseSVN ,可以整合與檔案總管整合在一起,利用 GUI 方式提供了建立檔案庫、以及匯入、匯出等功能。

平台:
Windows Server 2003 + Apache 2.0.54 for Windows 2000/2003/XP

所需軟體與版本:
˙Apache 2.0.54 win32 platform
˙Subversion 1.2.0
˙TortoiseSVN 1.2.0 and 繁體中文 Language Pack

安裝心得:
Subversion 係與 Apache 很緊密的整合在一起,所以安裝 Subversion 之前,必須先安裝 Apache Web Server,藉由其提供主要的四大功能:WebDAV、Browsing The Repository、Authentication、Security。

安裝的整個過程,係參考蔡煥麟先生所寫的一篇:「Subversion for Windows 安裝指南」,非常詳細,照其步驟安裝 Apache and Subversion,以及在 Apache 的設定檔中設定相關 Subversion 的一些設定,非常簡單。

參考文件:
˙Subversion 電子書中譯本
˙Subversion Wiki (中文)

***強烈建議***,在用戶端上安裝 TortoiseSVN,如此要建立 Repository、CheckIn/CheckOut 等功能,相當地方便。

TortoiseSVN

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal