閱讀468 返回首頁    go 阿裏雲 go 技術社區[雲棲]


分支/標記

版本控製係統的一個特性是能夠把各種修改分離出來放在開發品的一個分割線上。這條線被稱為分支。分支經常被用來試驗新的特性,而不會對開發有編譯錯誤的幹擾。當新的特性足夠穩定之後,開發品的分支就可以混合回主分支裏(主幹線).

版本控製係統的另一個特性是能夠標記特殊的版本(例如某個發布版本),所以你可以在任何時候重新建立一個特定的構件和環境。這個過程被稱作標記

Subversion does not have special commands for branching or tagging, but uses so-called “cheap copies” instead. Cheap copies are similar to hard links in Unix, which means that instead of making a complete copy in the repository, an internal link is created, pointing to a specific tree/revision. As a result branches and tags are very quick to create, and take up almost no extra space in the repository.

創建一個分支或標記

如果你用推薦的目錄結構導入了一個工程,那麼創建分支或標記就非常簡單:

圖 5.33. 分支/標記對話框

分支/標記對話框


在你當前的工作副本中給你你想要複製的分支或標記選擇一個目錄,然後選擇命令TortoiseSVN分支/標記...

默認的目標URL將會是你當前工作副本所處的源URL。你必須給你的分支/標記編輯一個新路徑。來取代

    https://svn.collab.net/repos/ProjectName/trunk

你可以使用這樣的設置

    https://svn.collab.net/repos/ProjectName/tags/Release_1.10

如果你忘記了你上一次使用的命名約定,可以用鼠標右鍵打開版本庫瀏覽器來察看已經存在的版本庫結構。

現在你必須選擇要複製的源位置。在這裏你有三個設置選項:

版本庫中的最新版本

新分支直接從倉庫中的最新版本裏複製出來。不需要從你的工作副本中傳輸任何數據,這個分支的建立是非常快的。

在版本庫中指定具體的版本

在倉庫中直接複製建立一個新分支同時你也可以選擇一個舊版本。假如在你上周發布了項目時忘記了做標記,這將非常有用。如果你記不起來版本號,通過點擊鼠標右鍵來顯示版本日誌,同時從這裏選取版本號。和上次一樣不需要從你的工作副本中傳輸任何數據,這個分支建立起來是非常快的。

工作副本

新的分支是一個完全等同於你的本地工作副本的一個副本。如果你更新了一些文件到你的工作副本的某個舊版本裏,或者你在本地做出了修改,這些改變將準確無誤的進入副本中。自然而然地這種綜合的標記會包含正在從工作副本傳輸到版本庫的數據,如果這些數據還不存在的話。

如果你想把你的工作副本自動切換到最新創建的分支,使用轉換工作副本至新分支/標記 選擇框.但是如果你打算這麼做,首先要確認你的工作副本沒有被修改。如果有修改的話,當你轉換後這些修改將會混合進你的工作副本分支裏。

按下確認提交新副本到版本庫中。別忘了提供一條日誌信息。需要注意的是這個副本是在版本庫內部創建的。

Note that unless you opted to switch your working copy to the newly created branch, creating a Branch or Tag does not affect your working copy. Even if you create the branch from your WC, those changes are committed to the new branch, not to the trunk, so your WC may still be marked as modified with respect to the trunk.

檢出或者切換

...that is (not really) the question. While a checkout downloads everything from the desired branch in the repository to your working directory, TortoiseSVNSwitch... only transfers the changed data to your working copy. Good for the network load, good for your patience. :-)

To be able to work with your freshly generated branch or tag you have several ways to handle it. You can:

  • TortoiseSVN檢出一個最新的項目在一個空目錄下。你可以在你的本地磁盤上的任意位置進行檢出操作,同時你可以從版本庫中按照你的意願建立出任意數量的副本。

  • 在版本庫中從你當前的工作副本切換到最新建立的副本。再一次選擇你的項目所處的頂級文件夾然後在菜單中使用TortoiseSVN切換...

    在接下來的對話框中蠕蠕你剛才建立的分支的URL。選擇最新版本單選按鈕然後確認。你的工作副本就切換到了最新的分支/標記。

    切換操作起來就象更新,因為它沒有丟棄你在本地做的修改。在工作副本裏當你進行切換的時候任何沒有提交過的修改都會被混合。如果你不想看到這樣的結果,那麼你可以有兩種選擇,要麼在切換前提交修改,要麼把工作副本恢複到一個已經提交過的版本(比如最新版本)。

  • If you want to work on trunk and branch, but don't want the expense of a fresh checkout, you can use Windows Explorer to make a copy of your trunk checkout in another folder, then TortoiseSVNSwitch... that copy to your new branch.

圖 5.34. 切換對話框

切換對話框


盡管Subversion本身不區分標記和分支,它們的使用方法還是有些不同。

  • 在某個特殊的階段標記被用來建立一個項目的靜態映像。同樣地標記和分支應該被獨特地應用於開發品。這就是我們首選推薦 /trunk /branches /tags這樣的版本庫結構的原因。使用標記的版本並不是一個好想法,因為你的本地文件沒有寫保護,你這樣做容易犯錯誤。不管怎樣如果你試著提交(修改)到一個包含/標記/的版本庫路徑下,TortoiseSVN 會給你警告。

  • 如果你想要在一個已經標記的發布版上做更多的修改。正確的操作方法是先從標記處建立一個新分支然後提交這個分支。在這個分支的基礎上進行修改後再從這個新分支上建立一個新標記,例如 Version_1.0.1

  • 如果你修改了一個從分支建立的工作副本然後又提交了這個副本,那麼所有的修改會轉到一個新分支裏而不是 主幹。僅僅是存儲了修改的數據。其餘的數據還是便宜複製。

最後更新:2017-07-18 09:32:30

  上一篇:go  DBA生存警示:保護現場不要讓事情更糟
  下一篇:go  阿裏雲幸運券領取及使用說明