在「並行版本系統」(CVS) 團隊程式設計環境中,團隊成員會在其自己的工作台中執行其所有的工作,彼此獨立。最終會想共用他們的工作。 他們透過「CVS 儲存庫」來達成此目的。
CVS 使用分支模型來支援多個工作過程, 其有點彼此隔離,但是仍然相當互相依賴。 分支是開發團隊分享及整合進行中的工作的地方。 分支可被視為一個共用的工作區,其由團隊成員對專案進行變更時所隨之更新。這種模型可讓個人處理 CVS 團隊專案、在完成變更時與其他人共用其成果, 以及在專案運作期間存取他人的成果。有一個又稱為 HEAD 的特殊分支,其代表儲存庫中的主要工作過程(HEAD 經常又稱為幹線)。
在團隊成員產生新成果的同時,他們會藉由確認這些變更至分支來分享這項成果。同樣地, 當他們想取得最新的可用成果時,他們就將他們的本端工作區更新成分支上的異動。 因此,分支會不斷地變更,隨著團隊成員提交新成果而更新。
分支有效地代表專案的現行狀態。在任何時刻,團隊成員都可從分支更新其工作區,並得知工作區是最新的。
CVS 提供兩個在團隊中工作所需的重要特性:
團隊所提出之工作的歷程
協調及整合這項工作的方法
維護歷程非常重要,因為這樣就可以將現行工作成果與前一個初稿相比較、回復到較好的舊工作成果等等。協調工作極為關鍵, 這樣就只有存在一個現行專案狀態定義,包含團隊的整合成果。這項協調作業是透過分支模型提供。
在一個理想模型中,團隊的任何成員都可變更他們對其具有存取權的任何資源。由於兩位團隊成員可能會確認分支變更至同一個資源, 因此可能會發生衝突,必須加以處理。這個模型之所以稱為理想,是在於假設衝突會很少。
通常資源並不會單獨存在,它們會包含與其他資源的隱含或明確相依關係。例如,網頁包含對其他網頁的鏈結, 而程式碼會參照其他程式碼資源中所說明的成品。沒有任何資源是孤立的。
在資源確認到分支的同時,這些相依關係可能會受到影響。確定相依關係的整合性非常重要, 因為分支代表現行專案狀態:在任何時刻,團隊成員都可採用分支內容作為新工作的基礎。
因此,理想的工作流程就是維持了分支整合性的流程。
理想的工作流程如下進行:
從頭開始。開始工作之前,請使用現行分支狀態來更新工作區中的資源。如果您確定沒有要顧慮的本端工作,最快的執行方法是從分支(或 HEAD)中選取您想要的專案,再選取移出(如果是專案已存在本端,請選取取代為 > 儲存庫中的最新版本)。 這將會以分支中的資源改寫您的本端資源。
變更。在您的本端工作台環境中工作、建立新資源、修改現有的資源、並隨時將資源儲存在本端環境。
同步化。在準備確定工作時,請與儲存庫同步化。
更新。查驗送入的變更,並將它們新增至您的本端工作台。這可讓您判定是否有變更會影響您即將確認之變更的整合性。 解決衝突。重新測試、執行整合性檢查程式(例如,檢查中斷的超文字鏈結、確保程式碼編譯等等)。
確定。現在您已確定您的變更已經和最新的分支內容整合完成,請對分支確定您的變更。如果有新的送入變更,則為求審慎,您可以重複上一個步驟。
當然,這是理想的工作流程。在某些情況下, 您可能確信送入變更不會影響您,並選擇不更新即逕行確認。然而,一般而言, 團隊成員應努力遵循類似上述的流程,以確保不會無意間破壞了分支的整合性。
您可以在 https://www.cvshome.org 上找到有關 CVS 的詳細資訊。
建立 CVS 儲存庫位置
從 CVS 儲存庫移出專案
取代工作台中的資源
使用 CVS 來共用新專案
與儲存庫同步化
更新
解決衝突
從分支合併
確定