Visual SourceSafe入门教学
作者:蔡煥麟日期:Sep-4-2003作者:蔡焕麟 日期:Sep-4-2003
摘要摘要
本文介紹了版本管理的基本概念,以及Visual SourceSafe 的基礎功能,目的在於希望提供一個能夠快速上手的入門指南,讓初學者能儘快將它用在專案管理上,同時也具備學習其他進階議題的基礎。本文介绍了版本管理的基本概念,以及Visual SourceSafe的基础功能,目的在于希望提供一个能够快速上手的入门指南,让初学者能尽快将它用在项目管理上,同时也具备学习其他高级功能的基础。 1. 簡介 1.简介
在軟體工程的領域裡,有一塊叫做SCM(Software Configuration Management),有人管它叫「軟體建構管理」。在软件工程的领域里,有一块叫做SCM(Software Configuration Management),有人管它叫「软件配置管理」。 SCM 的傳統定義是原始碼的版本管理,後來則逐漸演進擴大,還包含了軟體開發的一些標準和程序的制定與應用[Summerville 2000]。 SCM的传统定义是源代码的版本管理,后来则逐渐演进扩大,还包含了软件开发的一些标准和程序的制定与应用[Summerville 2000]。 版本管理工具對目前的軟體開發開環境來說相當重要,因為不管是軟硬體環境的改變、需求改變、軟體本身的等等,都會令軟體不斷地演進,我們必須記錄各個版本,以便隨時比對版本之間的差異,或者回到(rollback to)過去的某個版本;此外,當專案小組成員眾多時,工作交接、多人修改同一個檔案等情況,都有可能造成檔案的版本混亂。版本管理工具对目前的软件开发开环境来说相当重要,因为不管是软硬件环境的改变、需求改变、软件本身的等等,都会令软件不断地演进,我们必须记录各个版本,以便随时比对版本之间的差异,或者回滚到(rollback to)过去的某个版本;此外,当项目小组成员众多时,工作交接、多人修 改同一个文件等情况,都有可能造成文件的版本混乱。 例如一支程式本來由張三撰寫,可是因為某些原因(請假、臨時支援其他專案、請別人)暫時由李四修改,後來又交回給張三。例如一个程序本来由张三编写,可是因为某些原因(请假、临时支援其他项目、请别人)暂时由李四修改,后来又交回给张三。 如果用傳統的檔案共享機制,每次有這種情形就要互相通知:我改好囉,請把檔案從檔案伺服器搬回你家,萬一有人忘了,可能就會造成檔案版本錯亂,而東西交到客戶手上才發現bug 依然存在。如果用传统的文件共享机制,每次有这种情形就要互相通知:我改好啰,请把文件从文件服务器搬回你家,万一有人忘了,可能就会造成文件版本错乱,而东西交到客户手上才发现bug依然存在。 因此,如果你曾碰過下列情形,而且深感困擾,你可能就需要版本管理工具的協助:因此,如果你曾碰过下列情形,而且深感困扰,你可能就需要版本管理工具的协助:
∙ 檔案不見了(用滑鼠拖放檔案時誤動作,不知道拖去哪兒放了);文件不见了(用鼠标拖放文件时误动作,不知道拖去哪儿放了);
∙ 檔案被別人覆蓋;文件被别人覆盖;
∙ 想要比對各版本之間有何差異;想要比对各版本之间有何差异;
∙ 想要回到之前修改的版本(客戶反覆無常,設計改來改去....);想要回到之前修改的版本(客户反覆无常,设计改来改去....);
∙ 多人同時修改造成的版本混亂;多人同时修改造成的版本混乱;
∙ 想要知道誰動過的我的程式碼;想要知道谁动过的我的源代码;
∙ 跨專案共享元件或模組散落在各處。跨项目共享软件或模块散落在各处。
目前市場上的版本管理工具已經有很多,環肥燕瘦任君挑選,以下幾個可能是大家比較熟悉的:目前市场上的版本管理工具已经有很多,环肥燕瘦任君挑选,以下几个可能是大家比较熟悉的:
∙ Rational Clear Case Rational Clear Case
∙ Borland StarTeam Borland StarTeam
∙ Merant PVCS Version Manager Merant PVCS Version Manager
∙ Microsoft Visual SourceSafe(VSS) Microsoft Visual SourceSafe(VSS)
∙ Concurrent Versions System(CVS) Concurrent Versions System(CVS)
CVS 雖然免費,也有視窗介面,但是入門門檻還是偏高,不易入手,以unix/linux 社用得較多;StarTeam 和ClearCase 功能較強大,價格當然也較貴;PVCS 個人也沒使用過,無法提供意見;而Visual SourceSafe(VSS)功能雖然比較陽春,但是筆者試用之後,覺得如果只需要管理多人開發時的文件和原始碼版本,其實還挺好用的,也很容易上手。 CVS虽然免费,也有图形化介面,但是入门门槛还是偏高,不易入手,以unix/linux社用得较多;StarTeam和ClearCase功能较强大,价格当然也较贵;PVCS个人也没使用过,无法提供意见;而Visual SourceSafe(VSS)功能虽然比较阳春,但是笔者试用之后,觉得如果只需要管理多人开发时的文件和源代码版本,其实还挺好用的,也很容易上手。 VSS 在Visual Studio .NET 光碟中就有附了,價格算是相當實惠。 VS
S在Visual Studio .NET光盘中就有附了,价格算是相当实惠。 以下是使用VSS 管理原始碼的好處(有些不是VSS 特有的):以下是使用VSS管理源代码的好处(有些不是VSS特有的):
∙ 建構人員可以實施每週的里程碑版本建立,統一編譯所有程式碼,確保交給客戶的版本一定是最新的,不會因為某個開發人員忘了把自家local 的檔案複製到server 的共享目錄而遺漏掉。建构人员可以实施每周的里程碑版本建立,统一编译所有源代码,确保交给客户的版本一定是最新的,不会因为某个开发人员忘了把自家local的文件复制到server的共享目录而遗漏掉。
∙ leader 不用一天到晚打電話或發mail 去追誰還沒有把新的檔案放上file server。 leader不用一天到晚打电话或发mail去追谁还没有把新的文件放上file server。
∙ 共用單元的更新更簡便、確實。共享单元的更新更简便、确实。
∙ 提供獨立且細微的user 權限控管,沒有Windows 檔案分享時的帳戶權限檢查困擾。提供独立且细微的user权限管理,没有Windows文件共享时的帐户权限检查困扰。
∙ 同一個檔案多人同時修改可自動merge 最後的修改成果。同一个文件多人同时修改可自动merge最后的修改成果。
∙ 可將歷史版本叫出來比對,顯示差異處,以進行合併或修正。可将历史版本拿出来比对,显示差异处,以进行合并或修正。
∙ 提供Web 應用程式的檔案佈署功能。提供Web应用程序的文件布署功能。
∙ 可以和多種開發工具整合,例如:Visual Basic、Visual Studio .NET、FrontPage 200x。可以和多种开发工具整合,例如:Visual Basic、Visual Studio .NET、FrontPage 200x。
註:撰寫此文件時,使用的是VSS 版本是Visual Studio .NET 1.0 附的Visual SourceSafe 6.0cscm文件。注:撰写此文件时,使用的是VSS版本是Visual Studio .NET 1.0附的Visual SourceSafe 6.0c。
1.1 基本概念 1.1基本概念
想像一下沒有工具協助的情況下,當多人同時修改一份文件時,要如何確保文件的版本一致?想像一下没有工具协助的情况下,当多人同时修改一份文件时,要如何确保文件的版本一致?
也許你可以指派一位專人負責管理文件的進出,這個人姑且就叫他Manager 好了,Manager 待在一間小小的辦公室裡,負責文件庫的維護和文件的進出。也许你可以指派一位专人负责管理文件的进出,这个人姑且就叫他Manager好了,Manager待在一间小小的办公室里,负责文件库的维护和文件的进出。 當小組成員Eric 要修改文件時,就拿磁片到這個窗口請Manager 複製一份給他,Manager 在複製的同時會記下來:這份文件正由Eric 修改;而Eric 則會把磁片拿到他自己的機器上,把檔案複製到他的工作目錄(working folder),然後進行修改。当小组成员Eric要修改文件时,就拿磁盘到这个窗口请Manager复制一份给他,Manager在复制的同时会记下来:这份文件正由Eric修改;而Eric则会把磁盘拿到他自己的机器上,把文件复制到他的工作目录(working folder),然后进行修改。 等到Eric 修改完畢,再從工作目錄中把檔案複製到磁片上交給Manager,最後文件就被更新到文件庫中(這動作叫做check in),至此整個文件的修改與更新的程序就完成了。等到Eric修改完毕,再从工作目录中把文件复制到磁盘上交给Manager,最后文件就被更新到文件库中(这动作叫做check in),至此整个文件的修改与更新的程序就完成了。 如果在Eric 修改期間,Vivid 也拿著磁片向Manager 要求修改同一份文件,這時Manager 會告訴Vivid:這份文件目前已經由Eric 領出(check out),且還在修改當中,你得等他改完才行喔。如果在Eric修改期间,Vivid也拿着磁盘向Manager要求修改同一份文件,这时Manager会告诉Vivid:这份文件目前已经由Eric领出(check out),且还在修改当中,你得等他改完才行喔。
以目前的作業環境來看,使用磁片來傳遞檔案似乎是原始人的行徑,我們當然可以透過網路來傳遞檔案,但是透過網路傳遞檔案卻無法提供上面的例子所要表達的重點:檔案的鎖定。以目前的作业环境来看,使用磁盘来传递文件似乎是原始人的行径,我们当然可以透过网络来传递文件,但是透过网络传递文件却无法提供上面的例子所要表达的重点:文件的锁定。 而鎖定機制就是VSS(或其他版本管理工具)提供的基本功能之一,它確保了多人修改文件時,版本的一致性。而锁定机制就是VSS(或其他版本管理工具)提供的基本功能之一,它确保了多人修改文件时,版本的一致性。 上面這個例子當中的文件庫,就相當於VSS 的資料庫,而VSS 的用戶端工具(稱為VSS Explorer)則扮演了Manager 的角。上面这个例子当中的文件库,就相当于VSS的数据库,而VSS的客户端工具(称为VSS Explorer)则扮演了Manager的角。
當然VSS 提供的功能更多,它也允許多人同時取出(check out)同一個檔案進行修改,並且在將檔案送回(check in)資料庫時,自動進行合併(merge),這屬於比較進階的功能,稍後亦會提到。当然VSS提供的功能更多,它也允许多人同时取出(checkout)同一个文件进行修改,并且在将文件送回(check in)数据库时,自动进行合并(merge),这属于比较进阶的功能,稍后亦会提到。
現在你應該已經大概知道什麼是VSS 資料庫、什麼是check in、check out,以及文件修改的流程了,接下來就把一些常見的VSS 術語列出來,在閱讀本文時,如果碰到不了解的術語,也可以隨時回查看。现在你应该已经大概知道什么是VSS数据库、什么是check in、check out,以及文件修改的流程了,接下来就把一些常见的VSS术语列出来,在阅读本文时,如果碰到不了解的术语,也可以随时回头查看。