Visual SourceSafe简明培训教程
| ? |
| ? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ? | 1 說明2 概述3 管理員部分3.1 維護用戶列表(Maintain the User List)3.1.1 添加用戶(Add a User)3.1.2 更改密碼(Change Passwords)3.1.3 創建用戶列表(Create a User List)3.1.4 刪除用戶(Delete a User)3.1.5 編輯用戶屬性(Edit User Attributes)3.2 管理數據庫(Manage the Database)3.2.1 分析數據目錄(Analyze the Data Folder)*數據庫打包)。VSS數據目錄中包含有全部工程和文件的數據庫信息。由于網絡或操作系統的某些故障,VSS中的文件可能存在錯誤和不一致問題,Analyze VSS DB工具被用來查找和修復這些問題。在運行該工具前,需要鎖定(Lock)所有用戶并要求他們退出VSS,用戶可以在一個數據庫被鎖定時保持文件的簽出狀態(參見鎖定數據庫)。建議分兩次運行Analyze VSS DB工具,第一次修復錯誤,第二次核查是否仍然存在沒有被修復的錯誤。數據目錄的具體位置是由Data_Path初始化變量在SRCSAFE.INI文件中指定的(參見定制SS.INI和SRCSAFE.INI文件)。 一、本教程針對不同使用對象提供Visual SourceSafe 6.0的若干使用指導,閱讀對象包括Visual SourceSafe的管理員和普通用戶,以及希望了解如何采用Visual SourceSafe進行軟件版本控制的管理人員。管理員或普通用戶在使用Visual SourceSafe的過程中,如果遇到不知如何操作,或者對某些操作的注意事項不甚了解等類似情況時,可以查閱本教程。 二、本教程的"管理員部分"是管理員必讀的,如果管理員在除履行其自身職責之外,還兼任普通用戶的角色,則可以參閱教程中的"普通用戶部分"。作為一般的普通用戶,只需閱讀"普通用戶部分"即可。 三、教程中列舉的操作,加星號者,為高級用法(Advanced Usage),其余為基本用法(Basic Usage)。所謂基本用法是指一些通常使用頻繁的,或者是使用方法較為簡單的操作。所謂高級用法是指通常使用頻率不多,或者較為重要的,或者用法復雜的操作。 四、本教程內容摘選并改編自Visual SourceSafe 6.0英文版聯機幫助,從中提取了諸多重要信息、容易忽略的內容以及若干注意事項。一些基本內容(主要指某些基本操作的使用方法)只簡單列舉了條目,欲了解這些條目的詳細情況請查看聯機幫助的相關部分,可以通過列于這些條目之后的英文說明在聯機幫助中搜索到相關內容。 五、本教程不涉及Visual SourceSafe圖形用戶界面操作的解釋說明,對指定功能的具體操作步驟請查看聯機幫助的相關部分。可以通過列于該功能之后的英文說明在聯機幫助中搜索到相關內容。 六、在其他Visual Studio產品中(例如:Visual C++)可以集成Visual SourceSafe的功能,本教程不涉及有關在其他集成開發環境下如何使用Visual SourceSafe功能的內容,這部分內容主要針對普通用戶。對這些內容的了解,在閱讀完本教程之后,將會變得容易。此外,某些操作在Visual SourceSafe環境下使用更為方便。 ? Visual SourceSafe(以下簡稱VSS)是一種版本控制管理工具。它通過將各種類型的文件(包括:文本文件、圖像文件、二進制文件、聲音文件、視頻文件等)存入其內部數據庫的方式,幫助你有效地管理工程(Project,關于VSS中工程的概念請見下面)。它允許你在多個工程間共享同一組文件;你可以將一個文件添加到數據庫中,以便其他相關人員使用;任何對文件的更改將被記錄下來,以便在任何時候可以恢復到該文件的某個舊版本。 VSS的工程組織方式使團隊協作開發變得更為容易和直觀。一個工程是一組存放于VSS數據庫內的任意類型的文件,一個工程類似于操作系統中的目錄,但VSS為其提供了版本控制、歷史記錄、文件合并等更多的功能支持。 ? ? ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? ? 建議你定期備份完整的VSS數據目錄(參見 3.2.2 數據庫打包(Archive Databases)*3.2.3 清除臨時目錄(Clean Temporary Folder)定制SS.INI和SRCSAFE.INI文件)。 你可能需要定期地備份VSS數據庫,或者數據庫的某一部分。VSS Administrator工具提供了此項功能。它可以:
? ? VSS通常在運行時把臨時結果放在臨時目錄里,并在退出前將之刪除。由于某些原因,例如非正常重啟,可能導致臨時內容殘留在目錄中。作為管理員,你有責任定期清除臨時目錄的內容。每隔幾周一次,當沒有任何用戶運行VSS或VSS Administrator時,請清除臨時目錄的內容。臨時目錄的具體位置是由Temp_Path初始化變量在SRCSAFE.INI文件中指定的(參見 3.2.4 鎖定數據庫(Lock a Database)3.2.5 數據庫恢復(Restore Databases)3.2.6 使用多個數據庫(Work with Multiple Databases)*對文件和工程的Branch/Share操作)。 數據庫鎖定功能將不會自動鎖定那些當前已經登錄的用戶,你應該在鎖定數據庫之前要求登錄用戶退出VSS。在重新允許用戶使用VSS之前,需要解除對數據庫的鎖定。 ? 此處略,詳細內容請查閱聯機幫助。 ? 缺省時,VSS將所有文件集中放在一個數據庫中。如果可能,應盡量使用一個數據庫存放所有文件,這比分多個數據庫存放要好,因為:
? 3.3 有關權限的話題(About Rights)3.3.1 權限的傳遞(Rights Propagation)安全訪問權限),而對于工程"$/Sample",你沒有為用戶顯式指定權限,則該用戶將對工程"$/Sample"自動擁有Add權限。當你在工程"$/Sample/BusinessObject"處為其指定了Read權限后,將阻止早先assignment的向下傳遞過程,所以用戶A對該工程(指"$/Sample/BusinessObject")及其子工程都只具有Read權限了。 ? 當你添加了一個新用戶,并為該用戶設置了針對某個工程的權限時,將在VSS數據庫中建立起一個assignment。該assignment將會沿著工程樹向下傳遞直至遇到另一個assignment。 例如:針對工程"$/" ,你為用戶A指定了Add權限(參見 當你首次添加一個用戶時,該用戶在工程"$/"處被賦予的權限由"缺省權限"決定,缺省權限是通過在VSS Administrator里設置Project Security屬性頁的內容來定義的。你可以通過修改該頁內容,全局性地變更所有用戶的缺省權限。 3.3.2 安全訪問權限(Security Access Rights)3.3.2.1 缺省安全設置3.3.2.2 更高級別的安全控制VSS中部分命令的對應權限級別) ? 當安裝VSS后,缺省安全設置將被啟用。你可以利用定制的方式,使某些用戶擁有對某些工程和某些VSS命令的特定權限。 缺省安全設置很簡單,當添加新用戶時,你只有兩種級別的訪問權限可供選擇:
? 如果這樣的訪問權限級別足以應對日常使用,那么就無需再增強安全控制的級別了。 所有的VSS安全管理都在VSS Administrator中進行。任何能運行該程序的用戶都可以改變VSS的任意特性,所以最好只有管理員才使用該程序。 ? 在VSS中,對工程的安全性控制,是通過制定用戶訪問權限來實現的。每個工程僅能被那些具有相應權限的用戶訪問到,每個命令僅能被那些具有相應權限的用戶使用。可以通過VSS Administrator來定制權限,以達到更高級別的安全控制。 以下是VSS的權限級別列表,下列每種權限都擁有該權限之前的全部權限。例如:擁有Check Out權限的用戶,也將同時擁有Read權限。(參見附錄A2:
4 普通用戶部分4.1 對工程、文件的一般性使用(Normal Use about Projects and Files)4.1.1 打開/關閉數據庫(Open/Close a Database)4.1.2 創建新工程(Create New Projects)4.1.3 添加文件、目錄、工程(Add Files,Folders,and Projects)4.1.4 刪除和恢復文件、工程(Delete and Recover Files and Projects)對文件和工程的Branch/Share操作)。 ? ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? VSS提供了3種刪除文件的方法:
? 對于共享文件,Delete和Destroy僅將文件從當前所選工程中刪除掉,其他共享了該文件的工程,以及VSS數據庫中,仍留有此文件。 4.1.5 移動文件和工程(Move Files and Projects)對文件和工程的Branch/Share操作),然后將原有工程(original project)下的該文件Delete或者Destroy(參見刪除和恢復文件、工程)。移動后,文件的歷史記錄將被保留。 移動一個文件的唯一方法是,在文件新所在位置的上一級工程(parent project)處使該文件共享(參見 通過使用Move命令,你可以將一個子工程(subproject)從某個上級工程重置到另一個工程下。該操作不會改變子工程的內容和歷史記錄,但它會影響上級工程的歷史記錄(包括子工程所在的原有上級工程和新的上級工程)。當移動一個工程后,你將無法重建原有上級工程的某個舊版本。 4.1.6 重命名文件、工程(Rename Files or Projects)對文件和工程的Branch/Share操作)。 若某個文件被多個工程所共享,對該文件的重命名將影響所有工程,而在Branch狀態下,則不影響(參見 4.1.7 設置工作目錄(Set Working Folders)4.2 簽入、簽出、獲取、查看及相關操作(Check In/Out、Get、View and Other Related Use)4.2.1 簽入簽出操作(Check In and Check Out Files)4.2.2 撤銷簽出(Undo Check Out)4.2.3 獲取最近版本(Get Latest Version)4.2.4 獲取早期版本(Get Earlier Version)4.2.5 獲取和查看文件、工程(Get and View Files and Projects)4.2.6 回滾到以前版本(Rollback to Previous Versions)對文件和工程的Branch/Share操作)。建議你使用虛擬回滾(Virtual Rollback),它將不會使隨后的改動永久丟失。具體操作如下: 此處略,詳細內容請查閱聯機幫助。 ? ? 此處略,詳細內容請查閱聯機幫助。 ? 執行該操作時,若用戶選擇了替換本地文件,則用戶將丟失最近一次簽出后對該文件在本地的更改。 ? 此處略,詳細內容請查閱聯機幫助。 ? 此處略,詳細內容請查閱聯機幫助。 ? Get操作將文件或工程拷貝至本地的工作目錄,并設置為read-only屬性。可以用View操作查看文件內容,此時用戶無需設置工作目錄。 盡量不要刪除vssver.scc文件。本地工作目錄及每個子目錄下都包含一個這樣的文件,VSS利用其中記錄的信息確定本地目錄中哪個文件已經更改了。刪除后,將使新一次的Get操作速度減慢。 ? 該操作將使文件的內容恢復到先前某個版本時的狀態,它將使所有在該版本后所做的改動丟失。如果你所回滾的文件被多個工程共享,則操作只影響你所指定的那個工程,并且它會自動實行Branch操作(參見
? 4.2.7 多人同時簽出一個文件(Check Out Multiple Files)*合并) 缺省狀態下,一個文件只允許一個人簽出,管理員可以通過修改配置,允許多人同時簽出。此時,VSS將跟蹤所有簽出該文件的用戶。每當用戶簽入時,VSS都將和當前存于數據庫內的最新版本進行比較,若用戶修改的是同一文件的不同處,VSS將進行簡單的合并(Merge),否則提示用戶,并且不允許簽入。用戶可以通過VSS提供的Visual Merge工具,比較存放于VSS數據庫中的文件和本地文件的異同,手工修改本地文件,直到認為已經可以簽入時,方才執行最終簽入操作。(參見 4.2.8 合并(Merge)*多人同時簽出一個文件)。 在VSS中,合并可能發生在3種場合下:使用Multiple Checkout的工作方式;合并原先已經Branch了的文件;獲取(Get)文件。
? 在完成一個合并之后,VSS遵循如下規則:
? 缺省情況下,當發生沖突時,VSS將啟用其Visual Merge工具。 4.2.9 排他性簽出(Exclusive Check Out)*4.2.10 對工程的Cloak操作(Cloak Projects)*4.3 Branch、Share、Label和Pin操作(Branch、Share、Label and Pin)4.3.1 對文件和工程的Branch/Share操作(Branch and Share Files and Projects)*給文件、工程指定標簽),利用Share功能創建過渡版本(工程路徑為$/Application2.1),此時兩個工程中的文件是共享的,且$/Application2.1中的所有文件都處于Pin狀態(參見 Pin操作),即:在向3.0升級的過程中,對$/Application中相關文件的更改,將不影響$/Application2.1下的內容,但此時文件仍是共享的。僅對需要修改bug的文件采取Branch操作。這樣做的好處是,中間版本的bug修改工作和3.0的升級工作可以同時進行,并且最大限度的降低了所需的存儲空間。 允許多人同時簽出一個文件是針對整個VSS數據庫而言的,但用戶仍可以根據實際情況,針對某些文件修改該規則。對某個文件實施排他性簽出,則其他用戶將無法簽出該文件,直至該用戶使用了簽入操作。 ? 若對某工程實行了Cloak操作,則當對該工程的上一級工程進行Get/Check In/Check Out/Undo Check Out/Project Difference操作時,將不會影響該工程及其子工程。而在該工程上進行類似操作時,則和平常得到的結果一樣。這一屬性將傳遞給其下的子工程。 例如:某個工程其路徑為$/Application,下面有三個子工程:$/Application/Code,$/Application/Test,$/Application/Docs,而Docs工程下的內容可能對你沒有任何用處。當你每次從$/Application處進行Get操作后,都需要從本地刪除多余的Docs目錄。此時可以對Docs進行Cloak操作。這樣,每次的Get操作將只把Code和Test下的內容放到本地。如果你需要獲取Docs工程下的內容,則可以單獨從Docs處進行Get操作。 ? ? 在VSS中,通過Share操作,一個文件可以被多個工程共享,在任何一個工程中對該文件的更改,都將反映到其他相關工程里。 Branch操作則消除這種共享,每次將一個被共享的文件拆成兩個分支,在不同工程中分別跟蹤該文件。通過查看文件屬性的Links屬性頁可以了解該文件被哪些工程共享,通過查看Paths屬性頁可以了解文件的分支狀況。 例如:產品目前的正式版本為2.0(工程路徑為$/Application),在加入新功能后將升級為3.0。但在開始升級的過程中,其間的一個過渡版本2.1存在bug,需要修改。此時可以進行如下操作:選擇被Label標識為2.0的那個版本(參見 4.3.2 給文件、工程指定標簽(Label Files and Projects)*同時維護一個工程的多個版本 VSS使用3種方式跟蹤文件的歷史記錄:內部版本號,日期,用戶自定義標簽。 標簽可以是一個不超過31個字符長度的串,例如:"1.0"、"2.01b"、"Final Beta"、"Approved for QA"。應用Label功能,用戶就可以獲取某個特定時期的軟件內容了。所有當前工程下的文件和子工程都將繼承該標簽。 注意下面幾點:
? 請參見附錄A1: 4.3.3 Pin操作(Pin)*對文件和工程的Branch/Share操作)。 該功能對共享文件很有用,盡管它的使用不僅限于共享文件,也包括其他任何文件。當你對一個文件實施Pin操作后,你將不能對之做任何修改。如果一個文件在Pin之后又被實施了Share操作,而被Pin的那個版本同時也是被共享的版本,則所有共享該文件的工程都不能更改該文件。如果一個文件先被實施了Share操作,而后在某個工程中被Pin了,則除了這個工程外的其余工程仍可以更改該文件(參見 4.4 其他操作(Other Use)4.4.1 擴展關鍵字(Expand Keywords)*4.4.2 使用Shadow目錄(Work with Shadow Folders)*4.4.3 性能優化(Optimize Performance)*使用Shadow目錄) ? VSS可以將某些指定信息(例如:VSS內部版本號)直接插入文本文件中。用戶只要將某些關鍵字放入文件的注釋中,每次添加(Add)或簽入(Check In)文件時,VSS都會自動查找這些關鍵字,并將相關信息置于其后。 VSS中常用的關鍵字:
例如: 在某文件中加入如下一行: $Revision: $ 若當前該文件在VSS內部的版本號是22,則簽入后VSS會將之修改為: $Revision: 23 $ ? Shadow目錄位于服務器端,包含了工程中所有的文件。這些文件既非位于VSS數據庫中的master copy,亦非位于本地工作目錄的local copy,而是最近一次簽入的所有內容。Shadow目錄應該由管理員來設置。 是否使用Shadow目錄功能是可選的,通常在如下兩種情況下可以考慮使用該功能:
? Shadow目錄不會跟蹤子工程的變化,例如:你有一個被Shadow的工程$/A,包含兩個子工程:$/A/1和$/A/2,而你又將$/A/2重命名為$/A/B,這種變化將不會被反映到Shadow目錄中。你可以手工修改,或者利用Reconcile All功能,使之保持同步。 ? 有兩種方法可以改善VSS的性能:盡可能多的將內容通過網絡拷貝至本地來做;修改初始化文件對VSS的性能進行微調。 具體優化措施:
? 4.4.4 查找文件(Search for Files)4.4.5 設置密碼(Set Passwords)4.4.6 編寫批處理文件(Writing Batch Files)*4.4.7 定制SS.INI和SRCSAFE.INI文件(Customize the SS.INI and SRCSAFE.INI Files)附錄A1 同時維護一個工程的多個版本(Maintain Multiple Versions of a Project)A2 VSS中部分命令的對應權限級別 VSS Explore的list view缺省時只顯示當前工程中的所有文件。通過使用Search命令,可以只顯示符合指定要求的文件。例如:只顯示.h文件,只現實被簽出的文件。Search命令是允許遞歸的。 ? 如果VSS管理員指定域賬號為VSS登錄賬號,則用戶登錄VSS時將不會提示輸入密碼。 ? 在編寫批處理文件時,一些在命令行方式下使用的交互手段需要改變。 ?
? ? VSS有兩類初始化文件,它們包含了VSS的一些環境變量:SS.INI,每個用戶都有一個這樣的文件;SRCSAFE.INI,僅有一個,定義了VSS的一些全局變量,只有管理員才有權修改它。 ? ? 你可以使用Share/Pin/Branch的方式,也可以使用Label方式。如果你所處的環境只要求少量的改動,比如:輕量級的patch,使用Label比較合適;如果你正在規劃大量的開發內容,使用Share/Pin/Branch比較合適。例如:在軟件處于Beta版時,你可以通過Label功能凍結(freeze)之,并同時修改Beta版的bug。當你正同時維護著某個產品的1.1版和2.0版時,合理的做法是,為每個版本創建一個新的工程,Share并Pin所有的文件,在需要的時候Branch。當1.1發布時,你可以將1.1版的工程Label,而后將對1.1版的改動重新Merge到2.0版中。下面的幾個場景為你使用Label功能提供指導: 場景1:理想情況 1、對即將到達Beta 1版的工程進行開發和測試。 場景2:文件A的某個版本被錯誤地包含在Beta 1版中 1、對即將到達Beta 1版的工程進行開發和測試。 場景3:需將bug-fix后的文件A被包含在Beta 1版中,而其余文件未曾改動 1、對即將到達Beta 1版的工程進行開發和測試。 場景4:需將bug-fix后的文件A包含在Beta 1版中,而其余文件也作了改動 1、對即將到達Beta 1版的工程進行開發和測試。 場景5:文件A的一個原有版本需要進行bug-fix,并加入Beta 1版中 1、對即將到達Beta 1版的工程進行開發和測試。 ? 下表中打星號表示具有該類權限的用戶可以使用該命令。
[1] 此處指用戶必須有對Parent Project的A類權限。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
總結
以上是生活随笔為你收集整理的Visual SourceSafe简明培训教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黄山风景区晚上可以爬山吗
- 下一篇: 解读C#正则表达式