簡介原始檔控制

更新:2007 年 11 月

Visual Studio 可支援在其「整合式開發環境」(IDE) 中使用「Visual Studio 整合通訊協定」(VSIP) 層的原始檔控制。VSIP 可以裝載各種不同的原始檔控制套件,而這些套件通常以寫入適當通訊協定之外掛程式的方式來實作。原始檔控制外掛程式的其中一項範例就是由 Visual SourceSafe 支援的 SourceSafe LAN 外掛程式。如需這個外掛程式的詳細資料,請參閱 Visual SourceSafe 的 [說明]。

注意事項:

雖然原始檔控制套件可以實作為其他類型的軟體模組,但是 Visual Studio 會將原始檔控制套件視為外掛程式。

Visual Studio 原始檔控制只是協力廠商原始檔控制外掛程式的環境。因此,只有在安裝外掛程式之後才能啟動其功能。若要使用協力廠商原始檔控制外掛程式,則通常必須在您的用戶端及伺服器電腦上,安裝協力廠商應用程式和 (或) 原始檔控制外掛程式。依照協力廠商指示來進行安裝之後,就可以透過 Visual Studio 使用其功能。可使用的作業根據原始檔控制外掛程式而有所差異。如需套件專屬的作業詳細資料,則必須參閱協力廠商文件。

如需 Visual Studio 原始檔控制的設計詳細資料,請參閱 Visual Studio [說明] 中的<概觀 (原始檔控制)>。[說明] 的這個小節也為您提供在開發與 Visual Studio 相容的協力廠商原始控制套件時,需要的所有資訊。

Visual Studio 原始檔控制支援的基礎

Visual Studio 的基本原始檔控制支援包括設定原始檔控制外掛程式及環境選項、外掛程式切換、資料庫存取,以及操作 Visual Studio 專案、方案及檔案與相關中繼資料的版本控制。Visual Studio 原始檔控制也強制使用控制資料庫存取的通信協定,例如讓想要修改檔案的使用者必須以獨佔方式簽出檔案的「鎖定-修改-解除鎖定」工作樣式。

重要的是要記住,您應該使用 Visual Studio 機制的原始檔控制與原始檔控制外掛程式互動。請不要使用協力廠商為外掛程式所提供的其他用戶端應用程式,例如 [Visual SourceSafe 總管]。適當使用 Visual Studio 的原始檔控制機制可確保只將正確的檔案加入原始檔控制,以及利用正確的外掛程式專屬詳細資料來更新 Visual Studio 專案及方案檔。

原始檔控制外掛程式設定及切換

Visual Studio 原始檔控制可透過 [選項] 對話方塊的 [原始檔控制] 項目,來支援設定及外掛程式切換。選取 Visual Studio [工具] 功能表的 [選項],即可存取這個項目。您將使用 [選項] 對話方塊來選取要用於原始檔控制的外掛程式,並針對該外掛程式設定環境選項。

您必須先完成下列各項,您與您的小組才能利用 Visual Studio IDE 的原始檔控制功能:

  • 判斷是否有任何原始檔控制外掛程式可供使用。

  • 如果電腦並未安裝您想使用的原始檔控制外掛程式,則可安裝支援外掛程式的協力廠商產品,然後重新啟動 Visual Studio 加以登錄。

  • 根據特定外掛程式的功能來建立原始檔控制資料庫。

  • 將資料庫位置的連結傳送給所有小組成員。

資料庫存取

從 Visual Studio [檔案] 功能表中,可以使用如 [簽出] 及 [加入至原始檔控制] 等基本資料庫存取命令。不過,只有在您選擇了想使用的原始檔控制外掛程式之後,才會啟動這些命令。使用其中一個基本資料庫存取命令時,您選擇的外掛程式就會叫用 (Invoke) 對應的協力廠商功能和 (或) 環境,來完成相關作業。

某些存取作業只有在選取外掛程式後才能夠使用,而某些作業則只有當您在 Visual Studio [方案總管] 中也選取 Visual Studio 專案、方案或檔案時才能使用。例如,您只要選取外掛程式,就可以使用 [加入至原始檔控制] 命令。然而,您必須在 [方案總管] 中選取項目,才能使用 [簽入] 命令。

由原始檔控制處理的檔案

您可以將下列檔案加入 Visual Studio 原始檔控制:

  • 方案檔 (*.sln)。

  • 專案檔,例如 *.csproj 或 *.vbproj 檔案。

  • 根據 XML 用來控制 Visual Studio 專案執行階段行為的應用程式組態檔。

無法加入原始檔控制的檔案包括:

  • 方案使用者選項檔 (*.suo)。

  • 專案使用者選項檔,例如 *.csproj.user 或 *.vbproj.user 檔案。

  • 控制 Web 專案虛擬根目錄位置的 Web 資訊檔,例如 *.csproj.webinfo 或 *.vbproj.webinfo。

  • 建置輸出檔,例如 *.dll 及 *.exe 檔案。

命名空間變更傳用

Visual Studio 原始檔控制可支援原始檔控制外掛程式中的命名空間變更傳用。變更傳用適用於刪除、重新命名及移動作業。當您要求啟用變更傳用的作業時,如果您簽入項目且其他使用者擷取該項目,原始檔控制外掛程式就會變更原始檔控制項目的工作複本、資料庫中的正本,以及其他使用者的複本。

原始檔控制處理方案及專案的方式

將方案或專案加入原始檔控制時,原始檔控制外掛程式必須進行的第一個動作就是識別所加入項目的共同根目錄。這個根目錄就是組成方案或專案的所有工作資料夾及檔案的父目錄路徑。

共同根目錄通常對應到磁碟上的實體路徑。不過,如果方案包含的檔案或專案位於多個磁碟機上,共同根目錄就沒有可對應的實體資料夾。方案可以橫跨磁碟,但是原始檔控制共同根目錄無法這樣做。為了支援這種狀況,Visual Studio 原始檔控制可支援超級共同根目錄的概念。這種根目錄是一種虛擬容器,原始檔控制方案中的所有專案及檔案都位於此容器之下。

使用原始檔控制外掛程式的進階功能來加入方案時,外掛程式就會在資料庫中建立空白方案根資料夾。這個資料夾將包含原始檔控制方案中的所有項目。依照預設,這個資料夾是 <solutionname>.root。

注意事項:

將單一專案加入原始檔控制時,則不會建立 .root 資料夾。

使用方案根目錄可提供下列優點:

  • 系統提示較少。方案根目錄可將方案的潛在原始檔控制繫結數目最小化,因此可減少將方案加入原始檔控制及執行其他工作時出現的使用者提示。

  • 專案封裝。方案根目錄可確保方案中的所有專案即使有部分位於不同磁碟分割或電腦,仍能容易地識別為彼此互屬。

您可以停用建立 <solutionname>.root 資料夾,但是不建議您這麼做。如需詳細資訊,請參閱 HOW TO:停用 <solutionname>.root 資料夾的建立

Visual Studio 有語式正確 (Well-Formed) 與不正確的方案。如果方案在磁碟上的階層架構與它在 [方案總管] 中的結構相符,它就是語式正確的方案。語式正確的方案中的所有專案,都儲存在磁碟上的方案資料夾的子資料夾中。如果您將方案加入原始檔控制時,方案的語式正確,則原始檔控制外掛程式就會在 *.root 資料夾之下建立資料夾,以包含方案的方案檔 (*.sln) 及方案使用者選項檔 (*.suo) 的正本。最後,原始檔控制外掛程式會在 .sln 資料夾之下,針對原始檔控制資料庫中的每個額外專案建立資料夾。

如果方案語式不正確,原始檔控制外掛程式就會為方案及它的初始專案建立資料夾。然後會針對每個額外專案,以與方案資料夾平行的方式來建立資料夾。

方案或專案的檢視

Visual Studio 提供原始檔控制方案或專案的三種不同檢視方式:設計、原始檔控制及實體。如果這些檢視的個別項目之間都是一對一的對應,許多原始檔控制工作就會比較容易執行。不過,如果您建立方案及專案並使用 Visual Studio 的預設設定將它們加入原始檔控制,這些方案及專案的組織方式就不一定與它們在 [方案總管] 及資料庫中的組織方式相同。

您在 [方案總管] 中看到的方案或專案的設計檢視,就是方案或專案內容的邏輯敘述。設計檢視通常很整齊且有意義。不需要的檔案會隱藏起來,而來自許多不同實體位置的檔案則會放入單一專案容器。

您在獨立應用程式 (例如 Visual SourceSafe 總管) 中看到的方案或專案的原始檔控制檢視,也是方案或專案的邏輯檢視。不過,原始檔控制檢視不一定會反映邏輯檢視。

您在 Windows 檔案總管中看到的方案或專案的實體檢視,不太可能會反映邏輯或原始檔控制檢視的階層結構。

下列方針可協助您在原始檔控制方案及專案的設計、實體及原始檔控制檢視之間,達到組織性的精確度:

  • 先建立空白方案,再加入專案。這樣可協助您維持方案及它儲存的專案之間的邏輯父-子關係 (Parent-Child Relationship)。然後當您將方案加入原始檔控制時,原始檔控制檢視及設計檢視就都會對應磁碟上的方案階層架構。

  • 讓每個方案都有不同於每個內含專案名稱的唯一描述性名稱。

  • 避免將連結檔案加入原始檔控制方案或專案。

  • 盡量將方案或專案中的所有檔案儲存在同一部磁碟機。

原始檔控制連接及繫結

Visual Studio 會定義一個連接,做為 Visual Studio 與資料庫伺服器之間的實際資料連結。將方案或專案加入原始檔控制時,原始檔控制外掛程式就會將項目及其所有內容從磁碟複製到資料庫中。系統會為每個包含方案或專案檔的資料夾建立一個原始檔控制資料夾。加入項目之後,原始檔控制外掛程式就會將方案或專案的本機工作複本繫結到它在資料庫中的版本。

每個原始檔控制方案都至少有一個原始檔控制繫結。不過,一個項目可以有多個繫結,且必須與資料庫有多個連接。繫結及連接的數目取決於您最初建立方案的方式,以及方案的專案及檔案是否全部儲存於相同的磁碟分割中。

如果需要繫結及連接的範例,只要把語式正確且含有多個專案的原始檔控制方案,想成有數個房間的房屋就可以了。當您建造房屋時,可以在某個房間裡裝設可連到街道的單一高速資料線路。在防火牆後面安裝路由器以將資料流分配給其他房間,並付費給網際網路服務提供者 (ISP),您的房屋就可以連接到網際網路。

您可以把原始檔控制繫結想成針對房屋設置的單一資料線路。開啟原始檔控制方案時,就會透過該繫結建立連接。連接會在磁碟上的方案工作複本與資料庫中的方案正本之間,建立信號交換。

如果原始檔控制方案的語式不正確,就像是您房屋的每個房間都直接連接到網際網路一樣。這樣的網際網路費用會比單一連接的房屋更為昂貴,維護成本較高,而且在更換網際網路服務提供者時,也會更加困難且耗時更久。

最理想的狀況是,方案及它的專案共用單一原始檔控制繫結。單一繫結的方案比多重繫結的方案更容易管理。它們比較容易:

  • 從原始檔控制中斷連接以離線工作。

  • 在重新連接網路之後連接到資料庫。

  • 以單一步驟建立分支。

先建立空白方案再加入專案,即可利用單一繫結來建立多個專案的方案。建立一組方案-專案時,選取 [新增專案] 對話方塊的 [為方案建立目錄] 選項,也可以進行這項工作。

如果您以一個步驟建立一組方案-專案,而未選取 [新增專案] 對話方塊的 [為方案建立目錄] 選項 (預設為關閉),則當您將第二個專案加入方案時,就會建立第二個繫結。系統會為初始專案及方案建立一個繫結,並為每個額外專案建立額外的繫結。

原始檔控制術語

Visual Studio 文件使用許多詞彙來描述原始檔控制功能及概念。下表定義一些常見詞彙。

  • 基準版本
    衍生本機版本的檔案之伺服器版本。

  • 繫結
    使方案或專案在磁碟上的工作資料夾與在資料庫中的資料夾相互關聯的資訊。

  • 分支
    在原始檔控制之下,建立共用檔案或專案的新版本或分支的程序。建立分支之後,原始檔控制之下的兩個版本在特定時間點之前會有共用的記錄,而在該時間點之後則會有不同的記錄。

  • 衝突
    多位開發人員簽出並編輯了相同檔案,且對同一行程式碼進行了多個不同變更。

  • 連接
    原始檔控制用戶端 (例如 Visual Studio) 與原始檔控制資料庫伺服器之間的實際資料連結。

  • 資料庫
    所有正本、記錄、專案結構及使用者資訊的儲存位置。專案一定會包含在一個資料庫內。一個資料庫可以儲存多個專案,也可以使用多個資料庫。經常用於資料庫的其他詞彙為儲存機制及存放區。

  • 記錄
    自從檔案一開始加入原始檔控制以來,對檔案進行的變更記錄。利用版本控制,您就可以回到檔案記錄的任一個時間點,並復原該時間點的檔案。

  • 標籤
    使用者定義的名稱,附加至特定版本的原始檔控制項目。

  • 本機複本
    使用者工作資料夾中的檔案,除非發生簽入,否則變更都會儲存到這個檔案。本機複本有時也稱為工作複本。

  • 正本
    原始檔控制檔案的最近簽入版本,與檔案在工作資料夾中的本機複本相對。正本的其他詞彙為伺服器版本及資料庫版本。

  • 合併
    將檔案的二或多個已修改版本之間的差異結合成新版本檔案的程序。合併會影響相同檔案的不同版本或是對相同檔案版本進行的變更。

  • 共用檔案
    有版本的檔案位於多個原始檔控制位置。共用檔案的其他詞彙為複本及捷徑。

  • 方案根目錄
    資料庫中的空白資料夾,包含原始檔控制方案中的所有項目。依照預設,這個資料夾是 <solutionname>.root。

  • 超級共同根目錄
    一種虛擬容器,原始檔控制方案中的所有專案及檔案都位於該虛擬容器之下。例如,某個原始檔控制方案包含的專案位於 [SUR]:\C:\Solution\ProjOne 及 [SUR]:\D:\ProjTwo,則 [SUR]:\ 就是該原始檔控制方案的超級共同根目錄。

  • 共同根目錄
    原始檔控制方案或專案中,所有工作資料夾及檔案的父目錄路徑。例如,某個原始檔控制方案包含的檔案位於 C:\Solution、C:\Solution\ProjOne 及 C:\Solution\ProjTwo,則 C:\Solution 就是該原始檔控制方案的共同根目錄。

  • 工作資料夾
    原始檔控制項目之本機複本的儲存位置,通常位於您自己的電腦上。工作資料夾的另一個詞彙為工作區。

請參閱

工作

HOW TO:停用 <solutionname>.root 資料夾的建立

參考

新增專案對話方塊