当前位置:文档之家› version-control-brief-浅谈版本控制系统

version-control-brief-浅谈版本控制系统


版本間的比較
比較特定 revision 與本地端版本的差異


update
將 repository 上的版本整合到本地端的工作 副本 將 workspace 同步於 repository

有可能會出現衝突
Subversion
會試圖作有限度的整合與提醒
update
before A’ update A

commit



Subversion Revision Number

Revision number 代表整個 repository 的更 動版本號
並非只是本地端修改的版本號

“HEAD” 表示最新的版本
歷史修改記錄

追蹤 revisions
版本號
作者
訊息 更動文件與檔案
場景:取出 fort.f77 並作修改 最後將 ‘commit’ 到 repository

commit
確保 workspace 與 repository 的一致與同 步 (sync) 本地端的修改包含:

文件與程式碼內容的修改、刪除,以及新增
當開發者認為足以公布本地端修改到
repository 時
程式碼的資料庫或檔案庫
版本控制系統軟體

Commercial
Bitkeeper Visual
SourceSafe

Open Source / Free
SCCS RCS (Walter F. Tichy, 1982)
CVS (Brian Berliner & Jeff Polk, 1992)
SSH

CVS 優點
歷史悠久 在許多現有的軟體專案施行有年,系統穩 定,相關工具也豐富 設定與操作相對簡易

CVS 缺點
Security! 不能移除目錄 二進位檔案有可能被修改 效率

Subversion
CVS 的替代計畫,與 CVS 具有類似的操作 方式與流程 多樣的伺服器配置方式:

import

將本地端目錄結構新增至既有的 repository One time operation. 在本地端目錄被 import 後,需要再次 check out
確保其他開發者能夠存取到
import 的目錄
Import
before import A
Central Repository after in sync A
Synchronization
A
A
Central Repository
Local Workspace(s)
詞彙:Repository vs. Workspace

workspace
一系列透過版本控制系統的程式碼與文件集合,
開發者可以在本機上進行維護與修改的動作

repository
在集中式版本控制系統的主機上,保存文件與

遠端系統



存取 Subversion 的途徑

Web - Browser
RO
WebDAV
Mount
Repository as webfolder Repository copy

SVN Client tool
Local
Repository Resources
所有被 Subversion 管理的檔案與目錄都有 唯一的 URL 表示法 支援的 URL protocols
淺談版本控制系統
觀念介紹與版本控制系統軟體介紹
Jim Huang (黃敬群)
May 19, 2005
目標
理解版本控制系統的重要性與優點,並如 何導入開發流程 版本控制系統軟體 Subversion 觀念與快速入門

為何需要版本控制 (Version Control) ?

在需要協同開發 / 創作的環境中,確保能夠 進行…
Central Repository after in sync A’
Local Workspace(s)
A’
Central Repository
Local Workspace(s)
Update

檢驗 repository 相較於本機端的版本是否有 修改?



Check Log again! New revision 5 is there.
Checkout
before A checkout
Central Repository after in sync A
Local Workspace(s)
A
Central Repository
Local Workspace(s)
Checkout




Local Work on fort.f77

Apache

web server svnserve
custom server
svnserve

& ssh
custom server with encryption layer
Subversion 優點
目錄版本控制 不可分割的送交 網路傳輸快速 參數一致 更佳的二進制處理 高效率的分支與標記

http,
https (SSL encryption)
/svn/prj/trunk/TopGun
protocol
host
repository
directory
獲得 Subversion 存取權限
可透過內建 (svn) 或 WebDAV 的方式認證 Install/Use Client Software
Configuration Builder (Build scripting tool)
版本控制系統是什麼?
能夠追蹤、比較、回復、提交程式碼或文 件更動的系統,同時也要能夠跨越多個環 境與群組開發時程的系統 維護並時 (concurrent) 的更動與保有每個版 本的程式碼與文件狀態資訊

版本控制系統 (集中化模式)

Subversion 缺點
仍然是集中式的版本控制系統 缺乏獨佔編輯權的設計 更動版本號是共用的

SVK -- 非集中式版本控制系統
以 Subversion 為基礎,但是同時支援現有 CVS 的 repository 可取出完整的更動映射 大量的合併操作

Subversion

建立分支的時間點
某個開發者或團隊針對新的考量:
可能會對 main line 造成衝擊 衍生成為獨立的產品

1st branch (e.g. RZWQM DSSAT)
branch
Main development line branch (e.g. RZWQM) 2nd branch
Time
Branch

Use Repo-Browser in Tortoise
Subversion 指示器
在檔案總管的目錄與檔案圖示就會有一個 打勾的符號 ‘.svn’ 目錄保有該版本資訊

checkout



在本機檔案系統上,從 repository 取出文件與程 式碼,並建立一份工作副本 (working copy) One time operation. 給予工作副本來源屬性資訊 在開始工作的前置動作
1.4 1.3
RELEASE 1.0
1.2 1.1 1.0 C.I. 1
1.2
1.1 1.0 C.I. 3
1.2
1.1 1.0 C.I. X
軟體系統化管理
Tracker (Issue management)
Oracle, Sybase, etc.
Version Manager (Version control, Release management)
保有所有更動的紀錄 得以快速回復到特定版本的狀態
得知成員的更動與其更動幅度
Code Peer review 鼓勵版本異動文件創作

典型的版本變遷
RELEASE 2.0
1.7 1.6 1.5
1.5
1.4 1.3 1.2 1.1 1.0 C.I. 2 1.4 1.3
RELEASE 1.5
Local Workspace(s)
A
Central Repository
Local Workspace(s)
Fort.f77

場景: work/wort.f77 即將透過 Subversion 管理
import




Check Repository

Use Web Browser in System
What does not go into Subversion?
可由原始程式碼衍生的檔案 暫時性或過渡性檔案

*.o;
*.obj, *.dll, *.exe, *.dvi

當然,有時候允許例外
很少需要重新產生
(regenerated) 的資訊檔 不容易透過整合開發環境或現有工具再產生的 項目
Do update!


What is new ?
切換到特定 Revision

需要回復到之前的版本



哪些檔案應該置放於版本控制系統?

Source Code files
*.C;
*.java, *.for, *.txt, …
相关主题