引言:為什麼需要版本控制? 1.情景1:程式員A和B共同修改同一個模組,兩人都辛辛苦苦改了好幾天、最後都回存到伺服器上。可到使用的時候,發現有一個人的修改被衝掉了! 2.情景2:使用者1發現一個錯誤,交給程式員A去修改,A修改之後直接改動了使用者正在使用的版本,使用者2想要增加一個功能,交給程式員B去做,B也如法炮製,結果導致A的改動被B覆蓋而丟失 3.情景3:使用者提出需要一個新功能,程式員A辛辛苦苦改了幾天,改完後使用者又說新功能不要了,程式員A發現原來版本的程式找不到了,又花了幾天時間把程式改了回來。 版本管理器的簡單工作原理 版本管理器將所有的項目源檔案(包括各種檔案類型)以特有的方式存入資料庫。開發組的成員不能對該資料庫中的檔案進行直接的修改,而是由該版本管理器將該項目的來源程式或是子項目的來源程式拷貝到各個成員自己的工作目錄下進行調試和修改,然後將修改後的專案檔作Checkin提交給SGV,由它進行綜合更新。 使用者可以根據需要隨時快速有效地共用檔案。檔案一旦被添加進SGV,它的每次改動都會被記錄下來,使用者可以恢複檔案的早期版本,項目組的其他成員也可以看到有關文檔的最新版本,並對它們進行修改,SGV也同樣會將新的改動記錄下來。 下面介紹一些.net平台下的原始程式碼控制工具 Visual SourceSafe、CVS、PVCS、ClearCase、SourceGear SourceOffsite、SourceGear Vault SourceGear Vault(SGV)與Visual SourceSafe (VSS) 安全性(資料庫/檔案分享權限設定,目錄許可權) 穩定性(>1G) 速度(增量儲存演算法,IO) 支援遠端存取 與IDE整合 SGV的解決方案 在一台伺服器上安裝SGV的WebService和SQL資料庫,建立一個為整個項目存放用的資料庫(Repository),然後在該資料庫中建立各個檔案夾,並由SGV管理員為小組的每個成員建立一個帳號及他們各自的許可權; 在開發小組其他成員的PC上安裝SGV的用戶端軟體,並建立自己的工作目錄,這樣在軟體的開發過程中,他們只要通過整合IDE或用戶端軟體登入到SGV伺服器上,Checkout當前要進行工作的項目或檔案,如有修改的在工作結束時將其Check in提交給SGV伺服器進行統一更新。 已用VSS管理的工程項目如何處理? 方法一 “檔案”-“原始程式碼控制”-“從原始程式碼控制開啟”-登入SGV-選擇工作目錄-選擇工程項目 方法二 1. “以斷開方式工作”開啟本地項目 2.“檔案”-“原始程式碼控制”-“更改原始程式碼控制” 整合IDE的基本操作
- 添加解決方案、工程項目至原始程式碼控制
- 從原始程式碼控制中開啟或添加項目
- 更改原始程式碼控制
- 簽出
- 撤消簽出
- 簽入
- 查看狀態(SourceGear Vault 屬性)
- 獲得最新版本
- 查看曆史
通用用戶端的基本操作
- 修改密碼(Tools-Chage Password)
- 登出(File-Disconnet From Server)
- 項目選擇(File-Choose Repository)
- 建立檔案夾
- 添加檔案夾/檔案
- 自動探測新檔案
- 搜尋檔案
- 刪除/恢複檔案
- 查看/修改檔案
- 建立工作目錄
- 簽出資料夾/檔案(Check Out)
- 撤消簽出
- 簽入檔案夾/檔案(Check In)
- 共用資料夾/檔案(Share)
- 拆分檔案(Branch)
- 重新命名檔案夾/檔案
- 移動檔案夾/檔案
- 查看曆史資訊(Show History)
- 擷取早期版本
- 給檔案或項目建立標籤(Label)
- 禁止修改檔案夾/檔案(Pin)
- 檔案夾/檔案忽略操作(Cloak)
好了,帖了這麼多東西,大家基本應該知道版本控制的重要性和原理了吧,還有好多用戶端的基本操作和技巧,大家可以在使用中慢慢研究和體會,下面用帖圖的方式示範安裝和使用的過程: 安裝SourceGear Vault3.5.2(可以從官方網站http://www.sourcegear.com/vault/downloads.html 下載) 在伺服器安裝一般不選擇Client(除非Server和Client同時安裝到一台機使用),如。 選擇IIS的進程模式,我們使用預設的NETWORK SERVICE(你也可以選擇定製Custom,不過這個要使用一個專用的Windows帳戶,可以按需要配置) 設定管理員(預設系統管理員帳戶是Admin)密碼,如: 輸入串連到SQL的驗證資訊,下面我們選擇的是SQL Server驗證模式,登陸名為sa(此使用者在SQL中必須有許可權可以建立資料庫) 下面是建立資料資訊,應該是編碼模式的選取,這裡我沒有做基它設定,直接點OK 安裝完成後,VaultServer會在IIS中建立兩個虛擬目錄VaultService、VaultShadowFolder,這可以通過Web(唯讀)下載,可查看最近變化,可查看各版本。在這裡推薦Vault的理由很多,因為它基於SQL Server,因為它使用.NET編寫,因為它採用XML Web Services作為通訊協定,還有一點別忘記了,SourceGear Vault提供了免費一個月10使用者的試用授權,如果不怕麻煩的話,您也可以每個月更新License,當然如果你是個人使用者,只是管理你自己的一些代碼,你大可不用這麼麻煩,免費試用授權到期後你還可以繼續使用Admin帳戶,這是沒有限制的。 擷取Serial Number:https://store.sourcegear.com/sgstore/vaultdemo.aspx 再看一下伺服器端的Admin Tool的登陸介面: 用Admin帳戶登陸進去後可以對其它使用者進行許可權的分配和管理等等設定,這裡就不再多說了,大家自己研究一下吧。 以上就是伺服器端的安裝過程,用戶端沒有什麼安裝技巧,在安裝過程中記得勾上“Make Vault you default SCC provider”就OK了,現在俺使用VS.NET2005建立的一個項目簽入VaultServer的過程進行說明: 在VS.NET2005的工具--選項中調出下面圖,可以看到安裝完SourceGear Vault後的原始程式碼控制外掛程式(預設也是不用修改的,除非你安裝多個原始程式碼控制軟體) 下面我們看一下如何將解決方案添加到SourceGear Vault3.5.2中,點擊解決方案右鍵,如: 出現串連到伺服器的視窗,輸入使用者名稱和伺服器名或IP地址(首次建立必須是使用有許可權的帳戶) 我們為本項目建立一個檔案夾“相簿管理” 如果你還可以“相簿管理”檔案夾中建立多個檔案夾,如“開發文檔”和“原始碼”,可以分別把開發文檔和原始碼放到這兩個檔案夾中,大家可以看到這兩個檔案夾前面我分別加了一個1和2的數字,呵呵,這可是一個技巧問題,可以讓這兩個檔案夾按順序排序呵。好了,建立好目錄後,我們選擇“2原始碼”把項目簽入到此檔案夾中就OK咯。 在使用時還有一些小技巧問題,比如可以設定你在修改原始碼裡,是否自動提示簽出,如果設定了“提示簽出”,則在你修改代碼時自動會提示你簽出的檔案和注釋,你可以在注釋中記錄下你簽出的原因等,好了,有了這篇文章大家應該可以方便著手管理好自己寫的代碼咯。 我們看一下VaultServer.3.5.2帶來的以下好處: 1、伺服器端基於 Web Service,因而無需像 VSS 那樣通過檔案分享權限設定方式訪問(並開放寫入權限) 2、使用者及使用者組的管理(許可權和VSS一樣,僅有基本的幾種,遠遠不如 StarTeam,但作為 CVS 已經非常足夠) 3、類似 VSS 的版本差異比較、曆史紀錄、合并、分支/分支合并等功能,一點兒也不差 4、關鍵資料儲存在資料庫中(SQLServer),並支援伺服器端備份 5、提供 WebClient,但目前僅僅只能通過 Web 方式瀏覽和查看檔案內容 6、劃分 Repository 知識庫,這樣管理和使用起來就更加方便了 7、支援安全套接層(SSL(Secure socketlayer))協議串連,這樣就不必太擔心基於 HTTP/WebService 所帶來的安全的問題了——不過我還沒有能成功設定通過Internet進行訪問,使用VSS可以成功訪問,但由於訪問速度太慢,所以放棄了。現在是使用SourceGear Vault3.5.2+VPN進行Internet訪問,這比起HTTP/WebService 安全多了,而且速度非常快,比起VSS的速度要快上10倍都不止(估計時間,俺沒有真正計算過時間,只是大概估算了一下)。 有了它,最大的好處是回到家後依然能夠與公司的伺服器保持串連,而不必斷開 Solution ——第二天上班的時候又不得不小心翼翼的比較/合并,並 Checkin 了。 不管檔案類型(文字檔、影像檔、二進位檔案、音效檔或視頻檔案)是什麼,都可以通過將檔案存入資料庫來協助使用者管理項目。當您需要在兩個或多重專案間共用檔案時,您可以快速和有效地共用它們。當您向Vault添加檔案時,檔案被備份到資料庫中,使同組使用者都能訪問檔案,對檔案的任何改動都會存入Vault這樣您就可以在任意時候恢複檔案的曆史版本。使用者團隊的組員可以得到任一檔案的最新版本,對檔案進行修改,和在資料庫中存入檔案的新版本。 |