VSS使用技巧

VSS創建數據庫方法

解決方法:

1. 新建文件夾 C:/Sstemp.

2. 打開命令運行窗口進入路徑VSS/Win32 (具體路徑根據安裝vss)

3.輸入命令:mkss c:/sstemp

4.輸入命令:ddconv c:/sstemp

5.輸入命令:ddupd c:/sstemp

6.從C:/SStemp中把Um.dat 和Rights.dat文件複製到C:/Program Files/Microsoft Visual Studio/Common/VSS/data下

 

Cannot find SS.INI file for user *** 解決方法


1,vss/users/***/  下無文件SS.INI
若無從別處copy一個
2,vss/users/***/  下有文件SS.INI
修改vss下users.txt文件
添加:
*** = users/***/ss.ini

 

VSS(Visual SourceSafe)使用入門
第二版(2.01)
張博 2006.12.4

1 前言 2
2 概念 3
2.1 數據庫SourceSafe Database 3
2.2 服務器和客戶機 3
2.3 項目Project 3
2.4 工作目錄Working Folder 4
2.5 簽入、簽出 4
2.6 基本工作方式 4
3 作業指導書 4
3.1 客戶機作業指導書 4
3.1.1 準備工作 4
3.1.2 獲取文件 4
3.1.3 修改文件 5
3.1.4 脫機工作(未簽出的情況下修改) 5
3.2 管理員作業指導書 6
3.2.1 準備工作 6
3.2.2 項目管理 6
4 指南 6
4.1 安裝 6
4.1.1 VSS6.0的安裝 6
4.1.2 VSS8.0的安裝 7
4.2 數據庫管理 7
4.2.1 介紹 7
4.2.2 Visual SourceSafe 6.0 Admin程序 8
4.2.3 打開指定的數據庫 9
4.2.4 創建新數據庫 9
4.2.5 用戶管理 10
4.2.6 使用項目權限Project Rights 10
4.2.7 禁止自動登錄 12
4.2.8 設置文件類型 12
4.3 使用VSS瀏覽器 13
4.3.1 藉助VSS開發項目 13
4.3.2 VSS瀏覽器 14
4.3.3 設置對項目遞歸操作 15
4.3.4 修改密碼 15
4.4 項目操作 15
4.4.1 添加項目和文件 15
4.4.2 設置項目工作路徑 16
4.4.3 取得項目最新版本 16
4.4.4 簽出項目Check Out 17
4.4.5 簽入項目Check In 17
4.4.6 撤銷簽出Undo Check Out 18
4.4.7 顯示歷史記錄Show History 18
4.4.8 顯示差異Show Differences 20
4.4.9 設置版本標籤Label 21
4.4.10 取得歷史版本 21
4.4.11 項目屬性 21
4.5 文件操作 22
4.5.1 取得最新版本 22
4.5.2 簽出 22
4.5.3 簽入 22
4.5.4 撤銷簽出 22
4.5.5 查看和編輯(View,Edit) 22
4.5.6 顯示文件歷史Show History 23
4.5.7 文件比較Show Differences 24
4.5.8 文件屬性 25
4.6 與開發工具整合 26
4.7 已知的問題 26
4.7.1 VSS6.0的UNICODE、UTF-8的問題 26
4.7.2 InterDev開發Web應用的問題 27
4.7.3 文件比較的問題 27
4.7.4 簽入無效的問題(與CuteFTP有關的) 27
4.8 Tip 27


1 前言
這是這個文件的第二個版本。之所以產生第二個版本是因爲第一版寫得比較早,因缺乏作文訓練而盡顯文筆之粗劣,同時內容也未能達到我所期待的目標。另外VSS新版推出,我也要與時俱進嘛!
本 文件所講述的內容來自作者本人及其他人使用VSS的經驗,絕非翻譯幫助文件。所講述的功能都是實際使用中會經常用到的,對於不常用的功能並未涉及。儘管微 軟的產品總是比較容易入門(並因此招致競爭對手的嫉妒和指責),然而,坦白說,這個軟件的使用並不是一目瞭然的(特別還是英文版),我爲我在第一版中對此 問題的不當描述再次感到羞愧難當,事實上,這是我所見過的最拙劣的微軟產品(注意,只是在微軟產品中比較)。
其實我們知道,微軟公司的大多數項目 並非用VSS管理,他們使用更強大的版本控制系統,當然“更強大”的版本控制系統指的是需要支付更昂貴的費用的商業軟件,而不是什麼自由軟件。然而很多管 理嚴格的公司(真正的CMM3)卻也在使用VSS進行管理,他們的VSS數據可以累積到好幾個G。這些公司並非僅僅使用VSS管理源代碼,他們用VSS管 理所有受控的文件,包括組織級文件、項目文檔、會議記錄、評審報告等等,總之一句話,所有重要的東西和他們的歷史都可以在VSS中獲得。
很多程序員在體會了版本控制系統的好處以後開始用版本控制系統管理自己的所有文件,從此不用擔心自己遺忘什麼或者因爲偶然的失誤失去什麼重要的東西。這是一種幸福的感覺。
Visual SourceSafe 是一個源代碼控制系統,可以保存文件的不同版本,可以比較文件的差別,可以控制不同的人對同一文件的修改。就功能而言是同類產品中比較弱的,但滿足了基本的需要並且非常容易使用,因此獲得了非常廣泛的使用。
VSS 目前的最高版本是8.0(也就是VS.net2005所帶的版本),上一個版本是6.0D(6.0+SP6=6.0C,VS6的SP6-不是VSS的 SP6-所帶的VSS則是6.0D)。微軟公司終於開發了VSS.net,但我們仍然繼續忍受Visual Studio 98風格的界面,微軟爲VSS所做的革新實在不多,不知道他們的臉皮爲什麼那麼厚,居然敢把版本跳到8.0。8.0和6.0的數據庫是兼容的,客戶端也可 以交叉使用。
所謂VSS服務器指的是存放VSS數據庫的計算機,客戶端是訪問VSS數據庫的計算機,而VSS數據庫是一個共享的目錄,僅此而已(因此並不存在服務器程序)。
2 概念
2.1 數據庫SourceSafe Database
所謂數據庫就是一個目錄,裏面包含了存儲的各個版本的文件、配置信息、當前的簽出狀態等,一切都在這個目錄裏面。當然,文件數據可不是直接存儲文件,看不懂的。
2.2 服務器和客戶機
服務器就是存放數據庫(就是一個目錄)的機器,客戶機就是訪問數據庫(就是訪問目錄)的機器。其實根本沒有服務器,多個客戶之間的協作都是通過讀寫數據庫目錄的文件完成的。
2.3 項目Project
VSS 以樹形目錄的方式組織內容,每個目錄稱之爲一個項目(Project,這是一個重要概念),每個子目錄也同樣是一個項目,如果使用了遞歸選項(在菜單 Tools下的Options裏面)則對一個項目的操作會包含下面的所有子項目,對一個項目的設定會影響子項目,子項目的設定會覆蓋繼承自父項目的設定 (但具體每個操作的效果要看具體的操作,並非沒有特例)。簡單地說,項目就是虛擬目錄(並且通過工作目錄和外部實際目錄對應)。
2.4 工作目錄Working Folder
工作目錄是項目或文件操作時的默認路徑。一般來說,我們總是用一個本地目錄對應VSS的一個項目,簽入、簽出、修改都是在這個工作目錄下進行。大致可以說,工作目錄下放的就是VSS的項目的私人副本,我們在這個副本上工作。
注意,多數操作都允許改變操作位置,所以說工作目錄只是個“默認”目錄。
2.5 簽入、簽出
簽出獲得文件修改權,簽入將修改後的文件放回VSS庫並放棄修改權。必須先簽出才能修改文件。
2.6 基本工作方式
VSS裏面的東西是正式的東西,每個人的本地版本都只是臨時的。每個人先獲取一套只讀的版本,然後簽出要修改的文件,修改完畢再簽入VSS,這樣新的修改就算生效,別人簽出或取得最新版的時候就可以看到剛纔的修改。
一般我們禁止多人同時簽出。如果允許多人同時簽出則簽入時後簽入者會被告知版本衝突,此時需要先合併差異然後才能簽入。
3 作業指導書
3.1 客戶機作業指導書
3.1.1 準備工作
順序 步驟 相關章節
1 安裝客戶機軟件 4.1
2 向管理員獲取VSS庫位置、帳號 
3 打開VSS庫,修改密碼 4.2.3,4.3
4 設置工作路徑 4.4.2

3.1.2 獲取文件
順序 步驟 相關章節
1 確認文件不是自己簽出的 
2 在項目或文件上使用右鍵菜單“Get Latest Version”獲取最新版本 4.4.3,4.5.1

3.1.3 修改文件
順序 步驟 相關章節
1 確認文件沒有被人簽出 
2 在項目或文件上使用右鍵菜單“Check Out”簽出 4.4.4,4.5.2
3 修改文件 
4 比較文件差異,檢查修改的內容 4.4.8,4.5.7
5 在項目或文件上使用右鍵菜單“Check In”簽入項目或文件,或者在項目比較界面用右鍵菜單簽入,如果需要繼續編輯,可以選擇“保持簽出”。簽入時要填寫說明。 4.4.5,4.4.8,4.5.3
6 比較文件差異,確認修改已入庫 4.4.8,4.5.7


3.1.4 脫機工作(未簽出的情況下修改)
如果暫時無法連接VSS庫,或者文件已被他人簽出,請遵守本作業指導。注意,對每個文件單獨操作。
順序 步驟 相關章節
1 將文件的只讀屬性去掉 
2 修改文件 
3 備份文件到其它位置 
4 確認文件沒有被人簽出(別人已經簽入) 
5 在文件上使用右鍵菜單“Check Out”簽出,簽出時選擇保留本地版本,如果誤操作,請用步驟3所作的備份恢復。 4.5.2
6 比較文件差異,手工合併他人的修改 4.5.7
7 在文件上使用右鍵菜單“Check In”簽入文件,簽入時要填寫說明。 4.5.3
8 比較文件差異,確認修改已入庫 4.4.8,4.5.7

3.2 管理員作業指導書
3.2.1 準備工作
順序 步驟 相關章節
1 購買正版VSS軟件 
2 以功能最全方式安裝VSS 4.1
3 建立存放VSS庫的目錄 
4 創建新數據庫 4.2.4
5 配置數據庫 4.2.6,4.2.7
6 在操作系統爲VSS庫建立用戶組 
7 將VSS庫目錄完全共享給用戶組(共享屬性) 
8 將VSS庫目錄的修改權限分配給用戶組(安全屬性) 
9 將客戶端安裝程序共享(完整安裝程序或6.0版安裝以後的客戶安裝目錄) 

3.2.2 項目管理
順序 步驟 相關章節
1 建立新項目 4.4.1
2 爲每個使用者建立新用戶 4.2.5
3 爲每個使用者分配權限 4.2.6
4 設置二進制文件類型 4.2.8
雜項 發佈版本 4.4.9,4.4.7
雜項 查看、恢復刪除的文件 4.4.11
雜項 定期備份VSS庫目錄

 

4 指南
4.1 安裝
4.1.1 VSS6.0的安裝
微軟產品的安裝 一向簡單,只有少數選項需要說明一下。安裝類型包括“SHARED DATABASE SERVER”、“CUSTOM”和“STAND-ALONE”三種,第一種共享數據庫服務器是完全安裝,第二種定製安裝的默認值也是完全安裝,因爲這個 軟件本來就很小,所以選前兩種就行了,第三種單機安裝就是單機版。
此軟件的安裝與標準的Windows程序略有不同,安裝過程中檢查已經安裝的舊 產品的方式是搜索整個文件系統,因此可能將同一電腦上的其他操作系統上安裝的VSS檢查出來,此時不必理睬安裝程序的警告,將安裝位置改到合適的地方繼續 安裝就行了。安裝過程可能還會提示數據庫版本的問題,新的V6數據庫V5軟件不能訪問,一般來說總是應該使用更新版本的數據庫,再說升級VSS客戶端軟件 是很容易的。
安裝完成以後得到一個VSS目錄,這個目錄包含了一切:程序文件、配置文件、默認數據庫、用於網絡安裝的客戶端安裝程序。如果這個默 認數據庫需要在網絡上共享(一般總是需要的)則將這個VSS目錄共享,並給相關人員設置完全訪問的權限(即使這個用戶只是VSS數據庫的只讀用戶)。注 意,目錄的安全屬性與共享權限不同,“Program Files”目錄下子目錄和文件的訪問權限可能是受限制的,所有VSS用戶在VSS目錄的安全屬性也必須是完全訪問的。
這樣修改安全屬性:在VSS目錄上點右鍵,選擇“屬性”,切換到“安全”屬性頁,設置權限,然後點下面的“高級”按鈕,選中高級裏面最下面的“重置所有子對象的權限並允許傳播可繼承權限”選擇框,點“確定”退出高級,再點確定使修改生效。
安全提示:因爲VSS數據庫要在網絡上完全共享,所以網絡要安全,如果有刪除所有文件的病毒就會出大麻煩,一般的只感染特定文件類型的病毒危害相對小一些,無論如何,安全最重要。
4.1.2 VSS8.0的安裝
我沒有見到獨立的版本,整合在VS2005的版本沒什麼安裝選項。
4.2 數據庫管理
4.2.1 介紹
VSS 的數據庫是一個目錄,目錄下包含若干個文件和目錄,“srcsafe.ini”是關鍵文件,此文件用來標識一個VSS數據庫。VSS客戶端打開一個數據庫 的方式就是找到這個文件,所以共享數據庫的方式就是簡單地共享包含這個文件的目錄。另外一個文件“users.txt”記錄用戶信息。還有三個目 錄:“data”、“temp”和“users”,分別存放數據庫的內容、臨時的信息和用戶的相關數據。安裝VSS軟件的目錄除了上面所說的VSS數據庫 的文件外還包含幾個目錄存放VSS程序,根據安裝類型不同可能還包括網絡客戶端安裝程序。
VSS不存在服務程序,一切都通過文件操作進行。最簡單 的備份方式、也是最可靠、絕不會出錯的方式就是備份整個目錄。另一個方式是定期取得數據庫裏所有文件的最新版本,只對最新版本進行備份。爲了避免保存大量 不必要的版本,可以對每個項目建立一個VSS數據庫,這個數據庫保存所有的變更(包括開發過程中的大量嘗試性的變更),而公司級的受控庫只保存正規的版 本。
安裝VSS軟件的時候可能已經安裝了一個數據庫,那麼這個數據庫就是默認的數據庫,數據庫都用位置命名,目錄名字或者網絡位置的名字(名字其實是無關緊要的,數據庫的實際位置纔是關鍵)。
VSS 軟件在程序菜單中包含四個程序,其中兩個——分析並修復數據庫、分析數據庫——都是很少用的,另外兩個VSS Admin程序(Visual SourceSafe 6.0 Admin)和VSS 瀏覽器(Microsoft Visual SourceSafe 6.0)是最常用的。另外還有一些其他程序並未出現在程序菜單,需要閱讀幫助文件挖掘,VSS支持命令行方式,有編程接口(不然開發工具是如何與VSS整 合的)。
VSS8.0特性:程序組不再有分析並修復數據庫、分析數據庫這兩個程序,當需要的時候VSS Admin程序會提供使用這兩個程序的方法。
每 個數據庫初始擁有兩個用戶:“Admin”和“Guest”,都擁有全部權限並且沒有口令(因爲Admin沒有口令是不安全的,所以初次打開Admin程 序會得到一個安全警告)。Admin用戶是超級用戶並且無法被刪除也不能修改權限。Admin口令是最重要的,因爲默認情況下VSS程序會用上一次的用戶 名和口令登錄VSS,所以一般用戶忘記口令是很常見的,這時候就需要Admin用戶使用Admin程序重新設定用戶的口令了(建議改變默認設置,禁止自動 登錄)。
4.2.2 Visual SourceSafe 6.0 Admin程序
打開Admin程序要求輸入口令,但並不總是這樣,VSS會保存上次使用的數據庫和用戶名、口令,這樣下一次使用VSS就不需要輸入口令,進入VSS的Admin或瀏覽器程序以後可以再改變數據庫。Admin程序的界面如下:
 
基 本上這是個相當簡單的界面,功能都通過菜單實現。界面的主要部分用來顯示當前的用戶列表、權限和登錄狀態,不支持右鍵,僅支持雙擊,雙擊可以修改用戶的名 字和權限。權限很簡單,默認爲“Read-Write”,可以修改爲“Read-Only”,顯然這不會使我們滿足,我們需要的是“Project Rights”,對每個目錄給每個用戶特定的權限,這些權限包括只讀、寫入、添加刪除重命名、銷燬,除了不能控制到文件,這基本上滿足了我們的要求。具體 操作後面會介紹,相當簡單。
4.2.3 打開指定的數據庫
當前打開的數據庫也許並不是需要的,菜單“Users”下的第一個菜單“Open SourceSafe Database”用來打開一個不同的數據庫,打開新數據庫會關閉原來的數據庫。

圖中的“Open”按鈕不可用是因爲temp數據庫正是現在打開的,選擇一個不同的數據庫,可以用“Open”按鈕打開它。“Browse”按鈕用 來在系統中尋找一個數據庫,尋找的目標就是srcsafe.ini文件,尋找的位置範圍就是一般Windows查找文件的範圍,從桌面開始,包括了“我的 電腦”和“網上鄰居”。“Remove”用來從列表中刪除一個數據庫信息,並非刪除數據庫。下面的“Username”不可編輯是因爲Admin程序只允 許Admin用戶使用,如果是在VSS瀏覽器下執行這個功能則可以編輯。
4.2.4 創建新數據庫
很多時候我們並不喜歡默認的數據庫,可 能是因爲它的安裝位置太深了。我們也可能爲了不同的目的創建幾個不同的數據庫。創建數據庫使用菜單“Tools”下的“Create Database”,僅僅需要選擇一個存放數據庫的目錄即可(不會在這個目錄下創建“VSS”目錄,所有文件和目錄直接放在選擇的目錄下,因此這個目錄應 該是新建的專門用來放VSS數據庫的)。新創建的數據庫的目錄裏面只有數據庫,不包含VSS程序。
VSS8.0會提出一些問題,但這些問題都是可以在後面更改的。
4.2.5 用戶管理
用戶管理無非是添加、刪除、編輯、修改口令,都在“Users”菜單下,一目瞭然。所有能設定的不過是用戶名、口令和是否只有只讀權限而已。最重要的功能是“Project Rights”,下面介紹。
4.2.6 使用項目權限Project Rights
項 目權限是針對每個項目的用戶權力。使用項目權限首先要啓用項目權限,在菜單“Tools”下的“Options”裏面的“Project Rights”選項卡上,選中最上面的“Enable Rights and Assignments Commands”選擇框即可。
 
一般新用戶的默認權限建議只給一個“Read”就行了,如果這個庫包含很多項目(企業意義的)那麼就連“Read”也不要給。然後確定。這時“Tools”下面原來不可以使用的菜單全部可以使用了。
現在可以給項目設定權限了。打開菜單“Tools”下面的“Project Rights”,顯示如下窗口:
 
在 左邊選擇項目,右邊上面選擇一個用戶,右邊下面設定用戶的權限,如果只有“Read”權限可以選擇的話說明這個用戶是“Read-Only”,在編輯用戶 那裏去掉只讀就可以了。因爲可以對每一級每個目錄單獨設定權限,因此很容易疏忽。設定完權限後最好再逐級檢查一遍看有沒有發生錯誤,有可能發生這樣的情 形:試圖通過對級別較高的項目的權限的禁止阻止用戶訪問整個項目,然而對子項目用戶有單獨設定的訪問許可,因此對子項目實際上並未禁止訪問。
四種訪問權限含義如下:
? “Read”,讀
? “Check Out/Check In”,簽入/簽出,也就是寫
? “Add/Rename/Delete”,添加/重命名/刪除,刪除的文件仍然存儲在數據庫中,可以被恢復,直到被銷燬
? “Destory”,銷燬,銷燬的文件就再也找不回來了,這個是會造成無法挽回的後果的權力,通常不應該賦予任何一個一般用戶,僅保留給管理員(Admin,不能爲管理員設定權限,它永遠可以做任何事)。
這四種權力逐個包含,選中下面一個上面所有的會被自動選中,取消上面一個下面所有都回被自動取消。
如果一個用戶在當前選擇的項目上什麼權力都沒有就不會顯示在用戶列表中,必須用“Add User”添加進來,“Delete User”則刪除用戶在當前項目的所有權力並把用戶從列表中清除。
菜單“Tools”下的“Rights Assignments for User”則提供了對單一用戶的項目權力指派。功能相同,視圖不同。
4.2.7 禁止自動登錄
默認情況下用戶可以使用登錄電腦或網絡的用戶名自動登錄,這種方式存在安全隱患,可以通過設定要求每次登錄都必須提供用戶名和口令。
菜單“Tools”下的“Options”裏面的“General”選項卡上取消“Use network name for automatic user log in”即可禁止自動登錄。
 
另 外,可以將用戶的操作記錄在日誌文件裏,在文字“Log all actions in joural file:”下的編輯框輸入帶路徑文件名即可,爲了安全日誌文件應該放在只有管理員能夠訪問的目錄裏。(注意,該功能用於網絡共享的庫時必須是一個網絡路 徑,而且必須可寫)
4.2.8 設置文件類型
菜單“Tools”下的“Options”裏面的“File Types”選項卡可以設定文件類型,一般應對“Binary Files”補充其它的二進制文件類型,比如“*.pdf”。如果沒有設置可能會導致VSS用文本方式存儲,結果存儲的文件內容錯誤。
 
4.3 使用VSS瀏覽器
4.3.1 藉助VSS開發項目
在 程序菜單VSS的瀏覽器叫做“Microsoft Visual SourceSafe 6.0”,用來操作VSS。很多開發工具可以直接操作VSS,因此不需要使用這個工具。另外有些開發工具不支持和VSS瀏覽器混用(比如MS Visual Studio 裏面的InterDev),如果混用,開發工具可能不能正確地處理文件,因此如果項目在使用開發工具整合的VSS功能,建議不要跳過開發工具直接使用 VSS瀏覽器。
如果項目採用VSS作爲版本管理,那麼被認可的代碼(以及其它文檔)就應當是VSS數據庫裏面的最新版本(而不是某個人的版本)。 每天早上,每個人都從VSS中取得(叫做Get)最新版本放在自己的工作目錄下(這保證每個人用的都是最新的,並同時在每個人的電腦上做了備份),然後獲 得特定文件的修改權(叫做Check Out,簽出),然後開始編輯,編輯完成之後放回並放棄修改權(叫做Check In,簽入),簽入以後其他人再去取得新版本的時候就會取得這個簽入的版本了。
VSS可以記錄每個變化,每個文件的每次簽入都產生一個新版本,可 以單獨取得舊版本。VSS可以給整個項目貼上版本標籤(Label Version),比如“beta 2”,這個版本是用戶定義的版本(與VSS自身對每次簽入的自動編號不同),可以針對版本標籤取得版本,一個標籤標識的是做標籤之前簽入的最新版本。
VSS可以方便地比較目錄或文件,可以是VSS裏的不同版本或不同項目互相比較,也可以是VSS和VSS之外的目錄或文件比較,也可以是與VSS無關的外部文件或目錄的相互比較,比較的結果包括相同的、不同的、增加的、刪除的,對於文本文件可以直接可視化地顯示差異。
除 非Admin用戶專門將數據庫配置爲允許多人簽出,否則不會有兩個人同時修改一個文件的情況發生(如果多人簽出,簽入時會要求首先合併,確認合併完成才能 簽入)。儘管提供了多人簽出、分支開發、版本合併的功能,然而實際的合併操作仍然完全依靠腦力進行,因爲工具只能指出兩個版本有這些差異,但是這些差異如 何合併卻完全依賴腦力判斷,絕非簡單地合併爲一個文件那麼容易。因此還是儘可能地避免多人簽出或分支開發。
4.3.2 VSS瀏覽器
VSS瀏覽器擁有如下界面,工具欄和右鍵菜單很完善,使用起來非常方便。
 
界 面下邊的狀態欄用來輸出一些沒用的信息,不必管它。左邊是項目列表,看起來就是一個目錄樹,根用“$/”表示,可以手工添加項目,然後往項目裏面添加文 件,也可以一次把一個目錄(可以遞歸包含子目錄)添加進來成爲一個項目。右邊是項目下的文件,不包括子項目,顯示的信息包括簽出的用戶的名字和最後一個版 本的時間以及簽出位置。右邊上面兩個文本是當前的項目名稱和項目的工作路徑(工作路徑是項目默認的本地目錄)
對項目可做的操作主要包括:創建項目、刪除項目、添加項目或文件、設置項目工作路徑、設置版本標籤、取得最新(最後)版本、簽出、簽入、撤銷簽出、查看歷史、比較差異、查看屬性(沒什麼重要屬性,這個功能的關鍵價值是這裏可以恢復刪除的文件)。
對 文件可做的操作主要包括:查看、編輯、簽出、簽入、撤銷簽出、取得最新(最後)版本、查看歷史、比較差異、刪除、重命名、查看屬性(文件類型很重要,二進 制文件無法比較細節,只能比較相同或不同,文本文件則可以按行比較,但有時VSS不能正確識別文件類型,需要手工修改)。
4.3.3 設置對項目遞歸操作
菜單“Tools”下的“Options”可以設定一些選項,唯一值得修改的就是“General”頁面的“Act on project recursively”選項,選中該選項可以在任何對項目操作的時候都自動選擇遞歸,非常方便。
4.3.4 修改密碼
菜單“Tools”下的“Change Password”修改密碼,請保持密碼安全。

 

4.4 項目操作
4.4.1 添加項目和文件
VSS6.0版:選中項目樹的節 點,然後點右鍵選擇“Create Project”或者工具欄上的第一個(也許你的版本不是第一個)按鈕“Create Project”或者菜單“File”下的“Create Project”可以在選中的節點下創建一個新項目(看起來就是創建一個子目錄,事實上也沒什麼差別),需要輸入的是項目的名字,支持中文,有興趣的話順 便把註釋也填上,省得以後忘了這個項目是幹什麼的。
很多時候可以通過添加一個目錄以及目錄下的所有內容來創建項目。選擇“Add Files”命令可以添加項目或文件。這個命令的名字實際上並不準確,它既可以添加文件又可以添加項目。
 
選 擇左邊的文件然後點“Add”按鈕會把這個文件添加到當前項目,選擇右邊的目錄點“Add”按鈕則會把目錄添加到項目(也就是成爲一個子項目,存在一個選 項讓你把整個目錄全部添加進來)。有時候你會注意到左邊不會顯示任何文件或者只顯示了一小部分文件,這是因爲同名文件已經在項目中存在,不可能添加同名文 件進來的緣故。如果選擇的是項目,彈出的“Add”對話框不僅提供輸入註釋的地方,還在下面提供了一個選項:遞歸 “Recursive”,這個選項在很多地方都有,用起來很方便。選擇這個選項就不只是把當前目錄和下面的文件全部添加進來,而且把子目錄及子目錄下的內 容也全部添加進來。曾經有人向作者抱怨VSS不好用,每個子目錄都需要一個一個創建,很麻煩,嘿嘿,他只是英文不太好又不願意查字典而已。
VSS8.0版:採用了操作系統的文件選擇界面,只能選擇文件,也不能處理子目錄。替代辦法是先比較目錄,然後將增加的目錄和文件添加進來,在目錄比較結果界面既可以處理子目錄又可以同時添加不同位置的目錄和文件,非常方便,這也適用於6.0版。
4.4.2 設置項目工作路徑
爲 項目設置一個對應的本地目錄,用來取得版本進行編輯。只需要爲項目(工程意義的項目,而不是VSS的項目)的總入口的VSS項目設置一個工作目錄既可,獲 得版本時下面的所有VSS子項目自動作爲一個子目錄得到。如果子項目設置了獨立的工作路徑,那麼這個工作路徑僅當對在這個子項目上執行操作的時候纔會有 用。
4.4.3 取得項目最新版本
這個命令通常從項目的右鍵菜單獲得,名爲“Get Last Version”。
 
目 標位置默認是項目的工作路徑,但可以更改。“Recursive”遞歸,若選中可以得到整個項目樹,否則只得到項目下的文件而不包含子項目。“Make writeable”,默認取得的文件是隻讀的(Check Out纔是獲得可編輯的版本的合理方式),若選中則不設置只讀屬性。
4.4.4 簽出項目Check Out
一次性簽出項目下的所有文件,適合一個項目(子項目)下所有文件都歸一個開發人員負責的情況。
 
若選擇遞歸則連子目錄下的東西一起簽出。“Don`t get local copy”,不取得本地版本,這樣不會覆蓋本地已有的版本(也許本地版本包含着你一個通宵的勤苦工作,當然不能隨便覆蓋)。
籤 出的文件沒有隻讀屬性,可以修改。對於不允許多人簽出的情況下,過程上應該首先簽出纔有權修改文件,簽入以後修改纔會被其他人看到。如果文件已經被簽出, 首先應該等待或者去跟簽出者協商,然後才能考慮在沒有簽出的情況下修改本地文件,以後簽出的時候要很小心,不要覆蓋了本地版本,而且必須進行手工的版本合 並。任何人都應該謹慎地處理這種情形,否則項目版本將仍然陷入混亂。
4.4.5 簽入項目Check In
一次性簽入一批文件。不簽入別人看不到你的修改。
 
有 遞歸選項,可以連子目錄一起簽入。“Keep checked out”,保持簽出狀態,在頻繁修改代碼時經常會這樣做,保存一箇中間版本然後立即繼續修改。“Remove local copy”,刪除本地版本,這個主意不好,萬一VSS服務器硬盤壞了不就完蛋了,不過你也許有別的方面的考慮。
4.4.6 撤銷簽出Undo Check Out
如果後悔了,不想修改文件,可以撤銷簽出。
 
有遞歸選項。還要選擇本地版本的處理方式,可以用VSS裏面的版本覆蓋,也可以留着不管它,還可以刪除,要仔細斟酌。
? Replase 用VSS版本覆蓋本地版本,未簽入的改動將丟失
? Leave 保持本地版本不動,以後簽出的時候仍然要考慮保持本地版本還是使用VSS版本
? Delete 刪除本地版本,未簽入的改動將丟失

4.4.7 顯示歷史記錄Show History
查看項目的所有歷史,包括增加文件、刪除文件、簽入文件(文件有更改)。
 
可 選項包括遞歸(包括子目錄的歷史)、包括文件的歷史、包括版本標籤、只包含標籤(不顯示文件歷史)、從什麼時候開始、到什麼時候(時間格式大概按照操作系 統來的,至少YYYY-MM-DD是合法的時間格式)、哪個用戶。默認沒有遞歸選項,多數時候需要加上這個選項,其餘選項不常用。顯示的歷史記錄如下圖所 示:
 
按照時間順序列出了所有歷史,可以注意到文件file1.cpp在“Added”之後有兩次簽入,這兩次簽入之間有一個 Label“Labeled‘v1’”,Label對應項目下的所有文件,除非子項目用一個同名的Label覆蓋(這種情形應當避免)。這個窗口提供了很 重要的項目管理功能。
“View”,查看選中的文件的內容,就是查看以前版本的內容。
“Details”,查看歷史記錄的詳細信息,有一些內容是可以編輯的。清除Label的內容將導致Label被刪除,沒有獨立的刪除Label命令,這就是刪除Label的方法。
“Get”,取得選中的文件的歷史版本或者取得選中的Label版本(label之前的最新版),會提示取得版本放到哪裏去,對項目也有遞歸選項。能夠取得任何時候的歷史版本,這個功能纔是版本控制系統存在的價值。
“Check Out”,簽出文件或項目。
“Share”,共享。兩個項目可以共享一個文件,兩邊看起來各自有一份,但其實是同一份,一次只能由一邊簽出。通常用菜單“SourceSafe”下的命令執行,共享以後可以斷開搞分支開發。
“Report”,報告歷史,可以報告到打印機、剪貼板或者文件,可以包含文件歷史和版本差異。
4.4.8 顯示差異Show Differences
這也是關鍵功能。可以比較兩個項目或目錄的差異,包括一邊有而另一邊沒有的文件和內容不同的文件。
 
默 認情況下比較的是項目和項目的工作目錄的差異,以“$”開頭的是VSS項目,但兩個都可以用“Browse”改變,所以實際上可以比較任何VSS和目錄的 差異。下面四個選項全選是最全面的,顯示所有的相同和不同,一般我們取消第三個選項,不顯示相同的文件。遞歸選項選中可以包含子項目或子目錄。下圖是比較 結果:
 
存在下列差異:
demo.cpp在項目中存在,但在工作目錄不存在,藍色顯示。
file1.cpp有差異,圖標到有紅色標記。
file2.txt沒有差異。
file1.cpp.bak和“新建 文本文檔.txt”項目裏面沒有,綠色顯示。
對於這些差異可以用右鍵菜單分別處理(注意鼠標點在哪邊的文件上可能是不同的,這裏進行添加、刪除、簽入的最佳場所)。此界面的功能可以利用Shift和Ctrl鍵進行多選,目錄和文件可以混選,然後可以一次執行添加或刪除等操作。
對於項目裏面有但工作目錄沒有的,可以從項目裏刪除,也可以取得最新版本或簽出。
對於項目裏面沒有的,添加到項目裏面,或者從目錄裏刪掉(真的刪除了文件,而不是僅僅從列表刪除)。
對於有差異的,可以查看差異(產生一個文件的差異比較,這是很常用的功能)、簽入或撤銷簽出。
對於沒有差異的,可以刪除或簽出。
4.4.9 設置版本標籤Label
給 項目做一個版本號,這個標籤代表的版本是做這個標籤的時間之前的最新版本。一般在管理上要求做版本標籤(有時稱之爲封版)之前所有文件都已簽入(VSS並 不要求這樣),以後就可以取得標籤版本。如果標籤搞錯了,可以在項目歷史裏面查看標籤細節,然後將標籤名稱修改,如果要撤銷標籤就把標籤名稱清空。
4.4.10 取得歷史版本
因爲這是版本控制的標誌功能之一,所以重複一次。
取得項目歷史版本,在項目上查看歷史,找到合適的Label,選擇“Get”命令。
取得文件歷史版本,在項目或文件上查看歷史,找到合適的版本,選擇“Get”命令。
4.4.11 項目屬性
可以在此查看刪除的文件。

 

4.5 文件操作
4.5.1 取得最新版本
Get Last Version,VSS數據庫裏的最後一個版本會放到指定的目錄下,默認是項目的工作目錄。
4.5.2 簽出
Check Out,然後就可以修改。
4.5.3 簽入
Check In,然後別人取得最新版本就可以看到你的修改。
4.5.4 撤銷簽出
Undo Check Out,放棄修改權。對本地文件有三種處理方式:用VSS版本覆蓋、保留、刪除,請謹慎選擇。
? Replase 用VSS版本覆蓋本地版本,未簽入的改動將丟失
? Leave 保持本地版本不動,以後簽出的時候仍然要考慮保持本地版本還是使用VSS版本
? Delete 刪除本地版本,未簽入的改動將丟失
4.5.5 查看和編輯(View,Edit)
VSS提供整合的查看、編輯能力(當然通常我們是在專門的開發環境中工作的)。這兩個功能有同樣的界面,只是默認操作不同,View的默認操作是查看,Edit的默認操作是簽出並編輯。
 
不管從哪個命令進入都可以改變“Do you want to”選項進入另外一個命令。查看或編輯的工具可以是VSS內置程序或者操作系統註冊的程序(如果沒有註冊的程序則該項不可用)或者手工選擇一個不同的程序。
4.5.6 顯示文件歷史Show History
比項目的顯示歷史少一點選項,但顯示結果有不同的命令可用。
 
這裏每個文件版本都獲得了一個版本號“Version”,是從1開始的自然數序號,每次簽入都產生一個新版本(但沒有修改的簽入不產生新版本)。注意到有一個版本標籤“v1”是來自項目的版本標籤。
這裏多出幾個不同的命令可用:
“Diff”,比較差異,默認跟工作目錄的版本比較,但選中兩個不同的版本(用Ctrl鍵)也可以進行兩個歷史版本之間的比較,比較的結果是可視化的,非常直觀(僅限於文本文件,對二進制文件只能報告相同或不同)。
“Pin”,訂住,被訂住的版本成爲最新版,別人取最新版本只能取得被訂住的版本,而不影響簽出者修改文件、簽入、簽出。只能訂住還沒有被簽出的文件。訂住可以避免其他開發者得到一個不可用的中間版本。
“Rallback”,回滾,選中的版本之後的版本都會被刪除,選中的版本成爲最新版。出於對歷史的尊重,先簽出,然後取得歷史版本覆蓋到工作目錄,然後簽入,這也許是更好的回滾方式,畢竟一個糟糕的版本也是一個版本。
4.5.7 文件比較Show Differences
重要功能。可以直接從右鍵菜單進入,也可以從文件歷史結果窗口進入,還可以從項目差異結果進入。
 
比較的兩個文件都可以改變到VSS數據庫裏的一個文件或者一個普通文件,VSS數據庫的文件還可以帶上VSS的版本號。下面的選項一般不用修改,格式如果選擇爲SourceSafe或Unix,就會使用原始方式顯示結果,很不爽,還是Visual比較好。結果如下圖:
 
原來的文件第三行被刪除,文件最後又增加幾行,一目瞭然,點工具欄上的向上向下箭頭可以查看下一個上一個差異。
4.5.8 文件屬性
文 件屬性首要關心就是文件類型,Text文件可以按行存儲,按行比較,Binary文件則只能按照原始格式存儲,每個版本都是一個完整文件,佔用很大空間, 而且只能比較出相同或不同。可以在文件屬性窗口改變這個屬性。如果某個文件VSS不能正確存儲,就只能改爲二進制格式。有時候VSS自動判斷出錯,也要逐 個修改文件屬性。
VSS8.0特性:文件屬性增加了幾種Unicode格式,對很多人這是企盼已久的。
 
其他幾項暫時沒什麼可說的,需要用的時候自然就會了。
4.6 與開發工具整合
很多開發工具都整合了VSS支持,此時最好只用開發工作操作。開發工具對VSS的操作本質上與VSS瀏覽器是一樣的,不過是簽入簽出而已。只是一定不要忘了及時簽入,否則你的工作是不能被別人看到的。

 

4.7 已知的問題
4.7.1 VSS6.0的UNICODE、UTF-8的問題
ANSI 格式沒有問題,UTF-16、UTF-8有問題,不能正確識別,存儲的文件會錯亂。微軟承認麻煩很大,詳細的說明MSDN裏面可以查到,下面的斜體文字引 自MSDN文檔“ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vsintro7/html /vxtsksavingfileswithencoding.htm”(升級到8.0可解決此問題)。
爲了方便代碼在特定語言和特定平臺上進行顯示,可將文件與特定字符編碼建立關聯。
如果使用 Visual SourceSafe 以 ANSI、UTF8 或 Unicode 格式存儲文件,請注意它們各自的以下限制。
? ANSI 文件只允許使用當前代碼頁中支持的字符,這會限制國際使用。
? Unicode 文件無法使用共享簽出、差異檢查或合併功能,原因是此類文件是作爲二進制文件處理的。可在國際文件中使用此格式。
? UTF8 文件在 Visual SourceSafe 中不能安全地工作,因爲在簽入、簽出、差異檢查和合並過程中該文件會被更改,而這會導致 UTF8 文件編輯器出現問題。

4.7.2 InterDev開發Web應用的問題
不可繞過InterDev直接使用VSS瀏覽器簽入簽出,會出人命的。InterDev實際上藉助IIS訪問VSS,所以會有這個問題。很幸運,vs.net裏面已經沒有InterDev了。
4.7.3 文件比較的問題
有 時候會報告文件有差異但卻看不出差別,也許是換行符的差異,也許不是,如果執行簽入會發現並沒有簽入(這意味着簽入程序並不認爲文件有差別)。如果是 6.0C,這種情況會非常多,6.0D則好很多,基本上不會出現。因爲是C版大量使用所以特別提到這個問題。順便說一下,C版和D版可以混用,沒發現什麼 問題,跟8.0也可以混用。
4.7.4 簽入無效的問題(與CuteFTP有關的)
有時候看起來簽入成功但實際上並未簽入。如果文件是用CuteFTP下載到本地的,那麼可能是因爲CuteFTP顯示FTP文件的窗口需要刷新。推測可能是CutFTP下載文件時使用舊的文件信息,VSS簽入時發現文件是舊的就認爲不是新版本不需要簽入。
4.8 Tip
1 有時會出現某個文件無權 GET 的問題,重起 SERVER 端機器即可解決
2 有一次,不知因何原因(可能是病毒),Sourcesafe 的數據庫訪問權限變了,需要在 Windows 頁面重新分配所有權
3 建議經常做 SourceSafe 備份,以便文件丟失時(Sourcesafe 大了會丟失),可以挽回,備份採用 WINDOWS 的自動備份功能即可(管理工具中有一個備份工具,排定一個計劃,即可自動備份)
4 瞭解 sourcesafe 目錄結構的方法如下:將所有內容 GET 出來, 用 TREE>*.txt(DOS命令),即可將該目錄結構存儲到一個文本文件中
5 訪問網絡VSS數據庫時如果在打開VSS瀏覽器時出現“Invalid handle”提示常見原因是網絡共享有口令無法自動連接,在網上鄰居里面打開這個共享位置即可。

第一版結語

我寫這下這些東西,希望對別人能有一點點幫助,因爲我也總是從別人那裏獲得幫助。

感謝karencao向我提供的大量的幫助,這方面她是我的老師,有一些經驗直接來自她那裏。感謝在千鄉萬才工作的八個月,讓我感受真正的先進管理方式。不是所有的企業都可以讓離去的員工懷念。千鄉夢散。。。。。。
感謝普信的jasmine、Samantha等人提供的建議,他們都很熱心,他們的熱心讓我感覺到做這一切的價值。

 

 

 

感謝小王子,沒有他的鼓勵,我會永遠是個空想家而不會開始實幹。他是我最好的朋友。

 

 

 

……
狐狸說。“喏,這就是我的祕密。很簡單:只有用心才能看得清。實質性的東西,用眼睛是看不見的。”
……
“正因爲你爲你的玫瑰花費了時間,這才使你的玫瑰變得如此重要。”
……
“人們已經忘記了這個道理,”狐狸說,“可是,你不應該忘記它。你現在要對你馴服過的一切負責到底。你要對你的玫瑰負責…”
……

第二版結語

  唯有了解

  我們才關心

  唯有關心

  我們纔會採取行動

  唯有行動

  生命纔會有希望

Don`t call me Snoopy !
I`m Charlie Brown !

 

發佈了4 篇原創文章 · 獲贊 6 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章