Everything should be tracked!

Visual SourceSafe 入学指南

上一篇 / 下一篇  2008-09-08 10:58:10 / 个人分类:研发资料

E3W#O s/ya0X k?'l0摘要

L@|1R/t` YOqh)v#d051Testing软件测试网BHu.h ^

本文介紹了版本管理的基本概念,以及VisualSourceSafe的基礎功能,目的在於希望提供一個能夠快速上手的入門指南,讓初學者能儘快將它用在專案管理上,同時也具備學習其他進階議題的基礎。


51Testing软件测试网1G7]]k&r R[|)Z

51Testing软件测试网V,f6FH j d3|%JwXg"F

1. 簡介

51Testing软件测试网]'g/?V ?\L

在軟體工程的領域裡,有一塊叫做 SCM(Software Configuration Management),有人管它叫「軟體建構管理」。SCM 的傳統定義是原始碼的版本管理,後來則逐漸演進擴大,還包含了軟體開發的一些標準和程序的制定與應用 [Summerville 2000]。版本管理工具對目前的軟體開發開環境來說相當重要,因為不管是軟硬體環境的改變、需求改變、軟體本身的 bug...等等,都會令軟體不斷地演進,我們必須記錄各個版本,以便隨時比對版本之間的差異,或者回到(rollback to)過去的某個版本;此外,當專案小組成員眾多時,工作交接、多人修改同一個檔案等情況,都有可能造成檔案的版本混亂。例如一支程式本來由張三撰寫,可是因為某些原因(請假、臨時支援其他專案、請別人 debug....)暫時由李四修改,後來又交回給張三。如果用傳統的檔案共享機制,每次有這種情形就要互相通知:我改好囉,請把檔案從檔案伺服器搬回你家,萬一有人忘了,可能就會造成檔案版本錯亂,而東西交到客戶手上才發現 bug 依然存在。51Testing软件测试网%L G4`z+AE

tP])~1K0因此,如果你曾碰過下列情形,而且深感困擾,你可能就需要版本管理工具的協助:

(C-n9x5y7S0
  • 檔案不見了(用滑鼠拖放檔案時誤動作,不知道拖去哪兒放了);
  • 檔案被別人覆蓋;
  • 想要比對各版本之間有何差異;
  • 想要回到之前修改的版本(客戶反覆無常,設計改來改去....);
  • 多人同時修改造成的版本混亂;
  • 想要知道誰動過的我的程式碼;
  • 跨專案共享元件或模組散落在各處。
51Testing软件测试网!H4J6OWkp@H(g

目前市場上的版本管理工具已經有很多,環肥燕瘦任君挑選,以下幾個可能是大家比較熟悉的:

,_j%i H%u&Tf+Wm}h0
  • RationalClear Case
  • Borland StarTeam 
  • Merant PVCS Version Manager
  • Microsoft Visual SourceSafe(VSS
  • Concurrent Versions System(CVS)
51Testing软件测试网c${5F(P5J5I!{

CVS 雖然免費,也有視窗介面,但是入門門檻還是偏高,不易入手,以 unix/linux 社群用得較多;StarTeam 和 ClearCase 功能較強大,價格當然也較貴;PVCS 個人也沒使用過,無法提供意見;而 Visual SourceSafe(VSS)功能雖然比較陽春,但是筆者試用之後,覺得如果只需要管理多人開發時的文件和原始碼版本,其實還挺好用的,也很容易上手。VSS 在 Visual Studio .NET 光碟中就有附了,價格算是相當實惠。以下是使用 VSS 管理原始碼的好處(有些不是 VSS 特有的):

*g4ov1i8a7nF.p b0
  • 建構人員可以實施每週的里程碑版本建立,統一編譯所有程式碼,確保交給客戶的版本一定是最新的,不會因為某個開發人員忘了把自家 local 的檔案複製到server的共享目錄而遺漏掉。 
  • leader 不用一天到晚打電話或發 mail 去追誰還沒有把新的檔案放上 file server。 
  • 共用單元的更新更簡便、確實。 
  • 提供獨立且細微的 user 權限控管,沒有Windows檔案分享時的帳戶權限檢查困擾。 
  • 同一個檔案多人同時修改可自動 merge 最後的修改成果。 
  • 可將歷史版本叫出來比對,顯示差異處,以進行合併或修正。
  • 提供 Web 應用程式的檔案佈署功能。
  • 可以和多種開發工具整合,例如:Visual Basic、Visual Studio .NET、FrontPage 200x。
51Testing软件测试网8\P'N2n\

註:撰寫此文件時,使用的是 VSS 版本是 Visual Studio .NET 1.0 附的 Visual SourceSafe 6.0c。

'rLw;`M0

1.1 基本概念

51Testing软件测试网1A0M dwD4]bV*t

想像一下沒有工具協助的情況下,當多人同時修改一份文件時,要如何確保文件的版本一致?

-n*^P9| N051Testing软件测试网"U7r!DA;}1qC

也許你可以指派一位專人負責管理文件的進出,這個人姑且就叫他 Manager 好了,Manager 待在一間小小的辦公室裡,負責文件庫的維護和文件的進出。當小組成員 Eric 要修改文件時,就拿磁片到這個窗口請 Manager 複製一份給他,Manager 在複製的同時會記下來:這份文件正由 Eric 修改;而 Eric 則會把磁片拿到他自己的機器上,把檔案複製到他的工作目錄(working folder),然後進行修改。等到 Eric 修改完畢,再從工作目錄中把檔案複製到磁片上交給 Manager,最後文件就被更新到文件庫中(這動作叫做 check in),至此整個文件的修改與更新的程序就完成了。如果在 Eric 修改期間,Vivid 也拿著磁片向 Manager 要求修改同一份文件,這時 Manager 會告訴 Vivid:這份文件目前已經由 Eric 領出(check out),且還在修改當中,你得等他改完才行喔。

.|x2Oe$p$z K*\4M0

Rmwt5u;]r0以目前的作業環境來看,使用磁片來傳遞檔案似乎是原始人的行徑,我們當然可以透過網路來傳遞檔案,但是透過網路傳遞檔案卻無法提供上面的例子所要表達的重點:檔案的鎖定。而鎖定機制就是 VSS(或其他版本管理工具)提供的基本功能之一,它確保了多人修改文件時,版本的一致性。上面這個例子當中的文件庫,就相當於 VSS 的資料庫,而 VSS 的用戶端工具(稱為 VSS Explorer)則扮演了 Manager 的角色。51Testing软件测试网}FQ![{Q;C y.S

qb,Z.?:z9D0當然 VSS 提供的功能更多,它也允許多人同時取出(check out)同一個檔案進行修改,並且在將檔案送回(check in)資料庫時,自動進行合併(merge),這屬於比較進階的功能,稍後亦會提到。

I4Z[AmF0

l3?9{ zoX0現在你應該已經大概知道什麼是 VSS 資料庫、什麼是 check in、check out,以及文件修改的流程了,接下來就把一些常見的 VSS 術語列出來,在閱讀本文時,如果碰到不了解的術語,也可以隨時回頭查看。51Testing软件测试网-_]+D z%D)Vxh0c

/X-e\#fV Kw/T+S.j/t0以下是使用 VSS 時常見的術語:

#gxE ZUI+N0
術語說明
VSS 資料庫VSS 會使用一個資料庫來儲存各專案的程式碼版本(包括歷史版本和最新版本的檔案)。
ProjectVSS 專案,是一個專案檔案的邏輯結構,跟作業系統的目錄類似(注意不是指特殊開發工具的專案,例如:VB 專案)。
Working Folder用戶端的專案工作目錄。每次從 VSS 資料庫取出檔案時,就會將檔案複製用戶端機器的這個目錄下。
Master Copy儲存在 VSS 資料庫中的最新版的檔案。
Local Copy儲存在本機的 Working Folder 的版本。
Check Out把要修改的檔案從 Master Copy 複製一份到本機的 Working Folder 下,以便修改。
Check In本機的檔案修改完後,把檔案送回 VSS 資料庫。
Get只從 VSS 資料庫取得 Master Copy 的檔案,但是不做修改。當你要取得檔案的最新版,並且只對它讀取時,可使用此功能。
Multiple Checkouts一個檔案同時被多人取出修改。
Merge合併 Multiple Checkouts 的修改結果。
Shadow Folder影子目錄,它是一個硬碟上的實體目錄,每當開發人員 check in 檔案時,VSS 就會同時將檔案複製一份到這個影子目錄裡面。

2. 安裝與使用範例

,x$~|'mz9zAJvf0本節分別介紹 server 端與 client 的安裝及使用。

8tDL!ZHH-W ek0

2.1 伺服器端

| zKEx{U0伺服器端包含了管理工具和用戶端工具的安裝,相關的管理及設定工作有下列幾項:

Wd(i5U B|Z7Q0
  1. 安裝 VSS。
  2. 建立資料庫(使用 Admin 管理工具)。
  3. 建立 user 帳戶(使用 Admin 管理工具)。
  4. 設定其他選項。
  5. 設定網路的共用目錄。

["K:\EVW},l#X0以下是各項工作的施行細節,我們會在 D:\VSS_DB 目錄下建立一個新的 VSS 資料庫,如果你不想要建立資料庫,也可以使用預設的資料庫。51Testing软件测试网%p(?]%] f!s*XU

2.1.1 安裝 VSS

51Testing软件测试网6Duw'EL6kK-ls

直接執行安裝程式,安裝過程中會有一個安裝選項畫面,其中有三個選項,分別為 SHARED DATABASE SERVER、CUSTOM、與 STAND-ALONE。請選擇 SHARED DATABASE SERVER。

[,m:Z-D$M2}+g0

;|#VL6kfF0安裝完成後,在〔開始\程式集〕裡面會有一個 Microsoft Visual SourceSafe 資料夾,裡面有四個程式捷徑:51Testing软件测试网.ZCh+sb {6j

  • Analyse & Fix VSS DB
  • Analyse VSS DB
  • Microsoft Visual SourceSafe 6.0 
  • Visual SourceSafe 6.0 Admin

2.1.2 建立資料庫

51Testing软件测试网6Xyd@ V f tx'M

開啟 Visual SourceSafe 6.0 Admin,如果是第一次執行,程式會提示你要設定 Admin 帳號的密碼,若此時不設定,以後也可以在〔Users\Change Password〕裡面變更 Admin 帳號的密碼。

M#W8o9q;A3\/G,w6P0

X U![,v_ o0進入 VSS Admin 之後,先點選〔Tools\Create Database〕建立一個自己的資料庫,建立資料庫時會同時建立一個預設的管理員帳戶 'Admin',此帳戶無法刪除。51Testing软件测试网Q9WA;vt

yg!M1V9M6JF0一個資料庫裡面可以包含多個專案,當然你可以視需要建立多個資料庫,只是一次只能使用一個資料庫。

p'Ea _&Y'A`|6n`0

s1q+x'oQ6U0假設你將資料庫建立在 D:\VSS_DB 目錄。51Testing软件测试网M(k~aLYoy

2.1.3 建立使用者帳戶

資料庫建立好之後,必須先開啟資料庫,然後就可以為這個資料庫建立 user 帳號,以便日後為各個 user 賦予適當的檔案存取權限。這些 user 就是開發小組的成員。51Testing软件测试网FO}} Sd[$J]9l

欲開啟資料庫,請點選〔 Users\Open SourceSafe Database〕或者按 Ctrl+O,然後選擇上一個步驟建立的資料庫,如下圖:

q` z/|&K7V)A0

Sg#ueU3_0D&~051Testing软件测试网XyK2A1j+N\3DS"R

51Testing软件测试网6u*N%URiV

如果之前建立的資料庫沒有顯示在清單裡面,請按右邊的 Browse 鈕找到該目錄(此動作只需一次),然後按 Open 鈕,即可開啟資料庫。

KA`2u2e;jT \%p@0

-I'v+pj9TxIv/T0資料庫開啟後,點選〔Users\Add User〕或按 Ctrl+A 即可新增一名使用者。51Testing软件测试网~m Z'["uo

2.1.4 設定其他選項

在 VSS Admin 中點選〔Tools\Options〕即可開啟選項設定視窗,其中有些設定在用戶端(VSS Explorer)裡面也有,而這裡的設定是全域的,也就是如果用戶端沒有修改自己的設定,就會取用這裡的設定。

*{zTy"t0~]\0建議的設定值(True/False 表示勾選/不勾選):51Testing软件测试网 q5N!qID;{HF

頁夾項目名稱設定值
GeneralUse network name for automatic user log inTrue
Project RightsEnable Rights and Assignments commandsTrue

2.1.5 設定共享目錄

k}/eDz oVZ ?)\0你至少要把 server 端的兩個目錄分享出來給其他網路使用者存取:51Testing软件测试网#x1Ph3Q ~B

  1. 分享 VSS 的應用程式目錄,以便用戶端可以在網路上直接執行其中的 NetSetup.exe 進行安裝。
  2. 分享資料庫所在的目錄,如前面範例中的 D:\VSS_DB。
51Testing软件测试网:ga } qX1U

注意:51Testing软件测试网I}WL;bpC D ia

;WFe"Gi.g0g!Ud0如果你在分享 VSS 的應用程式目錄時,把目錄權限設為「唯讀」的話,用戶端安裝完後將無法自動執行 VSS(但仍可手動執行);若目錄權限為「完全控制」則不會有這個現象。51Testing软件测试网*NbIhCJ0mET

2.2 用戶端

2.2.1 安裝用戶端

51Testing软件测试网 g~a7a5Uxm1i

安裝用戶端程式的方法有兩種:

#s1_:` y1@#c,v2K N }0
  1. 向管理員詢問伺服器端的 VSS 應用程式分享目錄,然後直接執行該目錄下的 NetSetup.exe`.
  2. 利用光碟安裝,安裝型態選擇 "Custom",然後選擇 "Client Programs"。

2.2.2 開啟資料庫

{z `ttC|*D0安裝完成後,執行 VSS Explorer(在「程式集」中的名稱是 "Microsoft Visual SourceSafe 6.0"),第一次執行時會出現登入視窗,輸入要登入的資料庫名稱(瀏覽網路上的芳鄰,找到 2.1.5 節所分享出來的資料庫目錄),然後輸入使用者名稱和密碼,即可登入資料庫。參考下圖:

#bD"i0gD2Puv"S0
51Testing软件测试网i(L$Au,S i

51Testing软件测试网5m@ aCLv YC

51Testing软件测试网V7Q;h8_6t-xo0N K |

VSS Admin 提供一個選項,可以在登入時自動以目前登入 Widnows 的使用者名稱來登入資料庫,前提是 VSS 的使用者名稱要和 Windows 的使者名稱相同。方法是將 VSS Admin 的〔Tools\Options〕的 "General" 頁夾中的 "Use network name for automatic user login" 項目打勾。以後再次執行 VSS Explorer 時,就會自動以該使用者名稱登入,而不會出現登入畫面。

sulZ(Zd0

2.2.3 建立專案

(i~ r;[4L'b4N0ii:S2`0登入資料庫之後,由於是第一次執行,所以沒有建立任何專案,看到的畫面會像下面這張圖:51Testing软件测试网#Cs*X,V5a

51Testing软件测试网%R/] y}O c/]\1Q'W

51Testing软件测试网2}:`.ot(t;\\&Z&b&R

51Testing软件测试网k%m.A"L;vV u8yr y

左邊是以樹狀顯示的專案面板,"$/" 是 VSS 的 root project,所有的專案都是建立在此節點之下;右邊會顯示目前的專案的檔案清單;下方狀態列中則顯示提示訊息、目前登入的使用者名稱、檔案的排序方式、以及檔案數量。51Testing软件测试网+E r0@!} BGx}

:V5I n] H4n4j0以下步驟示範如何建立一個專案,該專案的檔案目錄已經事先建立好,位置是 "D:\Projects\Demo1\",而且該目錄下已經存在所有文件和程式碼檔案。

GyH?a1g$@[1SF0R c0
  1. 在專案面板中的 $/ 節點上面點一下右鍵,然後點選〔Create Project...〕。在接下來開啟的視窗中輸入專案名稱 "Demo1",再按 Ok 鈕即可建立專案。
  2. 接著將檔案加入此專案節點。做法是在專案面板中的 "Demo1" 節點點一下,然後點選〔File\Add Files...〕或按 Ctrl+A。
  3. 接著將專案 Demo1 目錄下,要加入版本管理的子目錄加進來,例如:若要加入 Src 目錄,則照下圖方式操作:51Testing软件测试网~/Vj"U9m4h51Testing软件测试网 L-H`"zqO d
    l4M{7U-YuxD`(N17672951Testing软件测试网hql,S_%m
    Adt5Uks176729_;u6I*`}n(l*O#?17672951Testing软件测试网*Dc&aG` rx
    &GD-x#[%^K|0"bCDQ$T0PTy r176729
    3rhNOK0yK&W$Dlzs1767297P2~rSV/O.vU176729注意必須雙擊欲加入的資料夾,使其圖示變成開啟的樣子,才是加入該資料夾。確定之後按 "Add" 鈕即可加入,加入資料夾的視窗左下角的 "Recursive" 項目通常會打勾,也就是該資料夾底下的子目錄也要一併加入。51Testing软件测试网R(U `H2N6t0t$l
    X:J4R1X0c O09~Cc(wYc5\,n6f17672951Testing软件测试网G5H3p4@iTr!rh51Testing软件测试网:O Z?9`j'D3}2H
    ,bZ/}G)?3|6n7Yv0Tip: 你也可以用滑鼠拖曳的方式加入檔案或資料夾。51Testing软件测试网.dQ6\]_
    7}#zU(i4R:z_+C"[0\y%HO| `?h176729Tip: 當你在加入檔案時,如果臨時要取消,可以按畫面方狀態列最左邊的〔Cancel〕鈕。事實上,只要是比較花時間的工作,都會出現〔Cancel〕鈕讓你有機會取消工作。51Testing软件测试网&vY['Fd$~ OQh51Testing软件测试网z:@%a+Sk
    A:utH*T0q f)Y;N176729
  4. 資料夾加入之後,程式會詢問你是否要將此資料夾設定為工作目錄(working folder),回答 "Yes" 即可。參考下列畫面:51Testing软件测试网_%Ne npx51Testing软件测试网rH/X)KL2Z!I/Ia
    A{5Hc%U+M!\17672951Testing软件测试网Ji K&h9RWt
    5\UvA#frr0v:^2M;t~5XaIp5}U,h17672951Testing软件测试网&q qpFX3u4X[q!R7V51Testing软件测试网b~ C~5a BW$i
    .U R`?qv+AINV176729
    TT+s3M)@0KGa0G P-T`Sq176729G|m'O O6x176729此對話盒關閉後即會回加入資料夾的視窗,若不需要加入其他目錄,就按 "Close" 鈕關閉此視窗。
  5. 此時畫面應會顯示如下圖:51Testing软件测试网i6UhxJ-Z5U51Testing软件测试网\O:[1`gK
    e(XLpu176729
    )MH1{*Z c&f'LmnQ0B2Of:En.Tb T176729vH4N pk5N0k17672951Testing软件测试网 rW @6Ii&v0g2w#m
    i\#Vi0L0!qF#E4` l(ZP17672951Testing软件测试网(Rt&H)Y/k]k*f
    IMc7I[ Xz*X}#l176729X'D,{V+|8U%s:C^t176729注意專案面板中的節點必須設定成工作目錄(working folder)才能夠對該目錄執行 check in/check out 動作,例如此範例中的 Demo1 節點,它是我們自行建立的邏輯專案,並未設定其工作目錄(也就是沒有對應到實體的目錄),因此當你點選 Demo1 節點時,右邊面板上方的狀態會顯示 "No Working Folder"。51Testing软件测试网"dpU/cD0Bz n
    .E;U(uuGD+U\']W8d0_ V~LKM176729
    )R3j%I-io8hQ F'z0mDL~~l0G1767297B5tr.VN*a176729如果你需要將 Demo1 目錄底下的所有目錄都納入 VSS 管理,也可以省略步驟 1,而在步驟 2 加入檔案時,直接開啟 "D:\Projects\Demo1" 資料夾,這樣就會連同 Demo1 這個目錄一併加入,且同時為它設定工作目錄。
    B t d0J5E#E y1c Kx0I;B M1kLX1767296^@khT0W176729

2.2.4 設定工作目錄

51Testing软件测试网"?tp2Ax

建立專案之後,接著就是要設定工作目錄。首先,在 VSS Explorer 的專案面板裡面找到你的專案,在該項目上點一下滑鼠右鍵,再點選〔Set Working Folder...〕,把目錄指向你的本機硬碟的專案目錄即可。只要父層的節點有設定工作目錄,其下的子節點就不用再指定工作目錄了。51Testing软件测试网B*E0WeQV;c4V#w

%?(uV8r(dOY$^)s0設定好工作目錄之後,就可以利用 VSS 執行 Check Out 或 Get 動作。如果你希望把整個專案的目錄和檔案都先從從伺服器取回來,並且複製到你的工作目錄下,你可以使用 Get;方法是在專案名稱上點一下滑鼠右鍵,再點選〔Get Latest Version...〕,此時會開啟一個對話視窗,如下圖所示:

w3n)y {uU,? S0
51Testing软件测试网5M.k.t|,?~'v[

e1m8aI'cYZ0

[#R9P(CT2^]Q-\0注意左下角的 "Recursive" 項目,通常我們會希望連子目錄一併取回,所以要將此項目打勾。確定之後按〔OK〕鈕即可,遇到不存在的目錄,VSS 會問你要不要建立,選 "Yes All" 即可,完成之後,你可以開啟檔案總管,看一下工作目錄中的檔目錄結構,如果執行的步驟正確,你需要的專案檔案和目錄 VSS 應該都已經幫你從伺服器複製過來了。此動作並非必要,你可以等到你要讀取或修改某個檔案時,再去 Get 或 Check Out 該檔案,到時候 VSS 一樣會幫你建立必要的目錄。

3M_aqam9jF051Testing软件测试网tI6V!^/S#I2W

如果你希望每次取得(get)或 check out 檔案時,"Recursive" 項目都要自動勾選,你可以在〔Tools\Options〕的 "General" 頁夾更改這個預設設定,參考下圖:

:X DQLxe0y.Y*Q&A6O0

B N2dP1H%Zmy0

8M5Ig*@,s[8Q%S \0

$a~vL|e0li9b2Z4~0專案完成時,或者需要對現有版本進行建置與發行時,可以在伺服器的電腦上開啟 VSS Explorer,利用〔Get Lastest Version〕取得最新版本,你便可以在伺服器端進行建置或者備份專案的工作;或者,你也可以透過影子目錄(shadow folder)的功能,來達到相同的目的(參考 3.4 節)。

#Fr0c+Y O'S2KJ La0

3. 其他功能

51Testing软件测试网8\;m Xl.MT0fUx2F

本節將介紹 VSS 的其他功能,包括:51Testing软件测试网Qs;{KtPF3x;c

  • 多重 checkouts
  • 檔案的共享(Share)與分枝(Branch)
  • 影子目錄(Shadow Folder)

3.1 多重 checkouts

_E;\.ZW4X q0VSS 預設不允許多重 checkouts,也就是當一個檔案或目錄被一個使用者 check out 之後,其他使用者就不能再 check out  該檔案目錄。當你的小組可能為多人同時修改一個檔案,或多人同時修改一個目錄裡面的各個檔案時,可以將多重 checkouts 的功能開啟。設定方法是在 VSS Admin 管理工具裡面,將 〔Tools\Options〕的 "General" 頁夾裡的 "Allow multiple checkouts" 項目打勾。51Testing软件测试网%M*o%^)T"P

51Testing软件测试网V^bD)B-{vx*n+PY6[

使用多重 checkouts 時,有些值得特別注意的地方,例如:一個檔案由多人同修改時,VSS 將如何處理?以下將說明相關的注意事項。

'G2G^ `hSy0

文字檔 v.s. 進位檔

0ZqI+_W T z0當你開啟多重 checkouts 選項時,表示有可能一個檔案同時由多人修改,而 VSS 能夠將這些人對同一個檔案的修改結果合併(merge)起來,每當一個使用者 check in 檔案時,VSS 就會自動進行 merge。也由於 VSS 提供了這項功能,因此限定只有文字檔(text files)才能夠多重 checkouts,二進位檔案(binary files)仍然是禁止的。VSS 會自動判斷檔案是屬於文字檔還是二進位檔(藉由搜尋二進位的 \0x0 字元),你也可以預先指定好哪些檔案類型是二進位檔,省得  VSS 還要花時間判斷;方法是:開啟 VSS Admin 的〔Tools\Options〕,切到 "File Types" 頁夾,把二進位檔案的附檔名加入 "Binary files" 欄位裡。參考下圖:51Testing软件测试网C|)K5Q` hrp

51Testing软件测试网K,|;p Ag hT

51Testing软件测试网r4F+M%k%Y,|l

[3F UZ{~F0註:所謂的文字檔,通常是指可以用記事本開啟的純文字檔案,因此 WORD 文件(.DOC)檔案應該歸類為二進位檔案。51Testing软件测试网7p(?2oyk*g

51Testing软件测试网S7~&`+@ ?enU^

圖中的 File groups 清單裡面,筆者自行加入了 Delphi 專案會用到的檔案類型,這項設定是用在當你加入檔案時,顯示在檔案類型下拉盒中,方便你挑選檔案而已,如下圖:51Testing软件测试网ec`2c(W

51Testing软件测试网S1xY,fa^ia

51Testing软件测试网7s'Y8Vg h+{#Q

^*e8vf0nF5OJ0其實大部分的情況下,用預設的 "*.*" 就行了。

YviR0d5B r-M%Mq0

合併機制

51Testing软件测试网}{/aS+[_s`

當一個檔案被多人 check out 時,每當有人將該檔案 check in,VSS 就會自動比對檔案的差異,並且合併有差異的部分。考慮下面的場景:51Testing软件测试网HC6S1A0A.n,C)X

  1. 張三與李四都 check out 了 foo.txt 這個檔案。
  2. 張三修改了 foo.txt 的第 100 行,並且 check in。
  3. 李四修改了 foo.txt 的第 200 行,並且在 210 行的地方加入了 5 行程式碼。
  4. 李四改完了,並且 check in。

t hO0z w3QM6n0上面的例子對 VSS 來說毫無困難,它會安靜地自動合併張三和李四所做的修改。但不是所有情況都這麼完美,萬一兩個人都修改了同一行程式碼,此時 VSS 就無法替你做決定,必須由你自己決定怎樣合併檔案。考慮下面的場景:

5M+d+E-YC2qEL0
  1. Carol 與 Michael 都把test.txt 取出來修改。
  2. Carol 修改了第 1 行,然後 check in。
  3. Michael 也修改了第 1 行,然後 check in。

M hWt5@(w*S0這時候 VSS 無法判定到底要怎麼合併,於是開啟視窗顯示兩個版本的差異,讓後面 check in 的人(Michael)決定怎麼合併,參考下圖:

BK Y4F}*N5@? Rf0
51Testing软件测试网#zFy\yil2o

'{~-a,yp T0
51Testing软件测试网\$R3X3K8UQ1b

圖中分為三個面板,左上角的面板是目前伺服器上的版本(上一個人 check out 的版本),右上角是本地端的版本,下方面板則是合併後的版本;此時 Michael 就可以從兩個版本中觀察差異的部分,決定好怎麼修改後,在左邊或右邊面板中點滑鼠右鍵,選擇〔Apply Change〕來把要改變的內容套用到下方面板。你也可以修改下方面板的文字內容,改好後按工具列的儲存鈕(磁片的圖示)即可。51Testing软件测试网+G'K8i"HU

NYg-y ?$FC!E0附帶一提,你可以從 VSS Explorer 顯示的畫面看出一個檔案是否被多人取出修改。如下圖的 test.txt,在檔案名稱的左邊有兩個勾勾的圖示,而 User 欄則顯示最後一次 check out 的使用者名稱,後面加上 "..."。51Testing软件测试网"F*W\V2vwq4t

EfmeL:D-e([0

~,A`1n#['t0

值得採用嗎?

'uN q9Z w h.?E0萬一 VSS 無法自動合併,手動合併似乎有點麻煩,這樣做值得嗎?還是乾脆不允許多重 checkouts?

5a x)E.vy!u*i/f+\0

5k^$O0C%IK)C0筆者的建議是,只有當你真正碰到的時候,才把這個功能打開。舉例來說,在一個專案裡面,可能會有一些共用的程式碼,這些共用的程式碼平時可能由一個人維護,例如:AppUtils.cpp;但是也有可能別的程式設計師寫了一些共用的函式,為了避免共用的程式碼散亂在太多檔案裡面,於是他希望把自己寫的共用函式也放到 AppUtils.cpp 裡面,於是便形成了多人要維護同一個檔案的情形,此時就很適合使用多重 checkouts 了,因為雖然改的是同一個檔案,各人要改的部分會彼此衝突的情況不多,此時 VSS 將可以自動處理 90% 以上的合併。51Testing软件测试网BV"~ l!p rA eg&q

3.2 檔案的共享(Share)與分枝(Branch)

51Testing软件测试网 b$s#l7d,~3F-P

你可以指定一個檔案讓多個專案共享,方法是在 VSS Explorer 的專案面板中,挑選要共享的目錄,注意不是分享出去的目錄,而是指你現在想要使用別人的共享檔案的那個專案目錄,在該目錄上點右鍵,再點選〔Share〕,這時候出現的視窗才是要挑選來源的共享檔案,在視窗中選好要共享的檔案,然後按〔Share〕即可。參考下圖:

h9@.Zk.U]+F0

o)VJ [~ N N0

y#wd%e?l0
51Testing软件测试网G0j,Fw9V9a%wy

檔案設定成共享之後,當你對共享檔案 check out,不管是提供共享檔案的來源專案,還是使用這些共享檔案的專案,其目錄下都會有一份共享檔案的拷貝,但是 VSS 保證這些檔案內容都會一致,VSS 透過 Share 的設定來維護各專案間共享檔案的連結,讓共享檔案維持一個版本。

2y$c/VA~lZ.A0

)o8|%Th.Xt4N0你也可以透過分枝(Branch)的功能來切斷共享檔案的連結,這意味著你不要再跟別人共享這個檔案了,而希望保有獨立發展的版本。做法是在 VSS Explorer 的右邊面板中,點選要切斷共享關係的檔案,然後點選〔SourceSafe\Branch...〕,接著會出現視窗請你確認,按〔OK〕鈕即可。切斷共享關係之後,其他專案的共享關係依然存在,只有自己跟別人脫離關係而已。51Testing软件测试网-y b^5y }$D'|k

3.3 影子目錄(Shadow Folder)

51Testing软件测试网!JR AL8]Bnq;f

由於所有的修改記錄和最新版本的檔案都存在 VSS 資料庫中,如果其他人(例如:專案經理、系統分析師、建構師)經常需要讀取最新版的檔案,但是又不想要安裝 VSS,就可以使用 Shadow Folder 功能,讓這些人可以透過檔案總管的方式讀取檔案(只能讀取,不能修改)。設定 Shadow Folder 的方法是在 VSS Admin 工具中點選〔Tools\Options〕,然後切到 "Shadow Folders" 頁夾,先輸入要設定 shadow folder 的專案,你也可以點旁邊的〔Browse〕鈕,用滑鼠來選擇專案;接著輸入影子目錄的實體路徑名稱,設定完之後按〔確定〕鈕即可。如果你要一次設定多個專案的影子目錄,可以在每一個專案設定完後按〔Set Another〕鈕。參考下圖:51Testing软件测试网/h K4k G RS

d$] `%X,D0

(pB"i6ar? wt8W/c?G0
51Testing软件测试网*T)y_9w;G4L@b/p

如果要取消影子目錄,只要先輸入專案名稱,然後把 "Set shadow folder to" 這個欄位清除就行了。

f6`,A;D+o"~"Z^051Testing软件测试网$k!JJP&}0aN-dZ`$Y

注意:

$q%D%Dm%}~lqI0
  • 影子目錄通常是伺服器上的目錄,建議使用 UNC 路徑名稱,若使用像 "C:\Projects" 之類的本機磁碟機名稱,則每個使用者的機器上都會維護一份 Shadow Folder 檔案。
  • 你必須確定每個開發人員都有權限存取影子目錄,否則當他們 check in 檔案時,就會出現錯誤。

4. 結語

51Testing软件测试网7\`7g7np!G4H

最後,筆者整理出幾個使用 VSS 時的重點步驟及快速鍵(假設資料庫和使用者帳戶都已經建立好了):51Testing软件测试网3C4T2cI"pjq4R

  1. 登入 VSS 資料庫,開啟 VSS Explorer 時就會要求登入,也可以點選〔Files\Open SourceSafe Database...〕或按 Ctrl+P 來登入別的資料庫。
  2. 建立專案,〔File\Create Project...〕。
  3. 設定工作目錄,〔File\Set Working Folder...〕或按 Ctrl+D。
  4. 加入檔案,〔File\Add Files...〕或按 Ctrl+A。
  5. 取出檔案並修改,〔SourceSafe\Check Out〕或按 Ctrl+K。
  6. 修改完後送回伺服器,〔SourceSafe\Check In〕或按 Ctrl+U。
51Testing软件测试网0Q4Xp(pMUD,eZ\

其中只有最後兩個步驟是開發人員經常執行的動作。51Testing软件测试网.X$\4{?lg

:`'P5B,HP0VSS 主要是依靠將檔案屬性設定成唯讀來提供檔案鎖定的機制,而其檔案傳遞的途徑則是透過傳統的 NetBIOS 和檔案共享機制,這使得 VSS 的應用範圍只能限制在區域網路內,如果能透過 TCP/IP 的方式傳輸檔案,適用的範圍會更廣,也會更方便 [註1]。

I4S\~bxCd0

7n3_5h6I:R0透過本文的介紹,筆者希望能讓你對 VSS 有一個初步的了解,並且能很快地學習如何使用它,當你真正開始使用它,就會逐漸發現一些新的或者一些比較細節的東西,此時再到網路上尋找解答,這樣可能會比讀完很多份文件以後才開始安裝使用要來得快一些。

Bi9?'V6wZ6R0

備註

/CC4s5s krC0註1. 你可以加裝 sourcegear 的 sourceoffsite 來達到跨 Internet 的檔案存取,該公司的網址是http://www.sourceoffsite.com/51Testing软件测试网2E6O`Clc7F~


TAG: Visual SourceSafe 入学指南 VSS 软件开发工具

 

评分:0

我来说两句

日历

« 2024-02-24  
    123
45678910
11121314151617
18192021222324
2526272829  

数据统计

  • 访问量: 51850
  • 日志数: 60
  • 建立时间: 2008-08-22
  • 更新时间: 2008-12-12

RSS订阅

Open Toolbar