1)導入數據到版本庫
第一種情況,使用Import導入命令的時候
不能選擇包含哪些指定文件或目錄, 導入的文件夾不能變成工作副本,(如果你在“工作副本”目錄下執行導入命令是不起作用的。)必須通過簽出操作從服務器拿回工作副本。 很容易把錯誤的文件夾層次導入到版本庫。
現在進入資源管理器,選擇你的項目的頂層目錄,右擊打開上下文菜單。選擇命令TortoiseSVN → 導入 ...,它會彈出一個對話框:
在這個對話框中,需要輸入版本庫所在的 URL,你的項目將會導入到這里。非常重要的事項,你必須了解: 你要導入的本地文件夾自身不會出現在版本庫中,版本庫中只有文件夾中的內容。例如,你有這樣的文件夾結構:
C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
你將 C:\Projects\Widget 導入到 http://mydomain.com/svn/trunk,然后你會驚奇的發現:
你的子目錄徑直地進入 trunk 中,而不是在 Widget 子目錄中。你需要將子目錄作為
URL 的一部分明確的指出來,http://mydomain.com/svn/trunk/Widget-X。注意,如果版本庫中不存在指定的子目錄,導入命令將會自動創建它們。這個問題困惑了我好一陣。
默認情況下,匹配全局忽略模式的文件和文件夾不會被導入。你可以使用包含忽略文件檢驗欄來禁止此行為。請注意,你導入的文件夾沒有被版本控制!你需要檢出剛才導入的版本,以便獲得受版本控制的工作副本
第二種情況,已經有了版本庫,想增加一個新的目錄結構
可以使用版本庫瀏覽器,在版本庫里新添加一個項目文件夾,如果已經使用了標准的布局, 就在trunk目錄下建立你的子目錄,而不是在根目錄下創建,這樣組織目錄就方便很多。
將剛才瀏覽器里新建的項目目錄簽出覆蓋到你想嵌入的本地目錄,如果你得到本地目錄非空的警告,可以忽略它。這樣就得到一個版本受控的頂級目錄,下面是非版本控制的內容。
在此受版本控制的文件夾上使用TortoiseSVN → 增加...增加部分或全部內容。你可以增加或刪除文件,在文件夾上設置svn:ignore屬性,或者你需要的其它修改。
提交頂級目錄,這樣就產生了一個新的版本樹,得到一份從你已有目錄創建的本地工作副本。
2) 專用文件
有時候你需要版本控制一個包含用戶專用的數據。它意味着你有一個文件,每個開發者/用戶都需要修改,一邊滿足他/她的本地配置。但是版本控制這樣的文件是困難的,因為每個用戶可能都要提交他/她的修改。(我想Web.Config和App.Config就屬於這樣的文件)
在這種情況下,我們建議使用模版文件。創建一個包含所有開發者需要的數據的文件,增加到版本庫中,讓開發者檢出。然后,每個開發者創建一個副本,改名此文件。於是,修改這個文件不再是問題。
作為例子,你可以看看TortoiseSVN的構建腳本。它調用一個TortoiseVars.bat文件,它並不在版本庫中。 只有TortoiseVars.tmpl在版本庫中。TortoiseVars.tmpl是一個模版文件,每個開發者都需要創建一個副本,改名為TortoiseVars.bat。在這個文件中,我們增加了注釋,所以用戶知道他們需要編輯那些行,以便適應他們的本地配置,使其能工作。於是為了不干擾用戶,我們也將TortoiseVars.bat增加到它的父目錄的忽略列表,也就是,我們設置了Subversion屬性svn:ignore包含這個文件名稱。這樣,每次提交時它都不會作為沒有版本控制的文件出現。
3)Revision Graph
在版本瀏覽器點擊右鍵菜單,選擇Revision Graph,可以看到版本的歷史圖。
5)只想檢出一個大文件樹的某部分
當你想要檢出一個很大的文件樹的某些部分而且只更新某幾個文件夾的工作副本時,
假設有一個很大的文件樹,其中包含 99 個子文件夾從 Project01 到 Project99,你只想檢出Project03,Project25。按下列步驟操作:
1. 檢出父文件夾時檢出深度使用“僅此項”。現在,你獲得一個空的頂級文件夾。
2. 選中新文件夾,使用 TortoiseSVN → 版本庫瀏覽器 來顯示版本庫的內容。
3. 右鍵單擊 Project03 然后選擇右鍵菜單 → 更新項目至版本...。保持默認設置並單擊 確定。現在這個文件夾就位於你的工作副本中了。為 Project25 重復相同的操作。
改變工作副本深度
一旦以某個深度檢出了工作副本后,以后還可以修改這個深度來獲得更多或更少的內容,使用 右鍵菜單 → 更新該項至版本。在彈出的對話框中,確認選中了 粘滯深度 復選框。
6)提交修改到版本庫
將你對工作副本的修改發送給版本庫,稱為提交修改。但在你提交之前要確保你的工作副本是最新的。你可以直接使用TortoiseSVN → 更新,或者,你可以先使用TortoiseSVN → 檢查修改看看哪些文件在本地或是服務器上已經有了改動。
提交文件和提交文件夾的區別,當你提交文件時,提交對話框只顯示你所提中的文件。當你提交文件夾中,提交對話框將自動選擇有改動的文件。如果你忘記了你建立的一個新文件,提交文件夾將使你可以找到它。提交一個文件夾並不意味着每個文件都被標識為修改過的。
在提交對話框中雙擊任何修改過的文件,將運行外部 diff 工具顯示你做的改動。上下文菜單將給你更多的選項,請看屏幕截圖。你可以從這里將文件拖動到另一個應用程序中,如文本編輯器或 IDE。
缺省情況下,當你成功提交修改后,你在這些文件上持有的鎖會被自動釋放。如果你需要保留鎖,請確認選中檢查框保留鎖。此檢查框的缺省狀態從 Subversion 配置文件的 no_unlock 選項獲取。
拖放。你可以將文件從別的地方拖動到提交對話框,只要工作副本是由同一版本庫中檢出就可以了。比如,你有一個很大的工作副本,要開好幾個資源管理器窗口來查看層次中不同的文件夾。如果你要避免從頂級文件夾提交(冗長而緩慢的文件夾改動檢查),你可以打開一個文件夾的提交對話框,然后將別的窗口中的項拖進去,可樣就可以一次提交它們了。
你可以將未版本控制的文件拖到工作副本提交對話框中,它們就會被自動增加。
從提交對話框底部的列表中將文件拖拽到日志消息編輯框中,就能以文本格式將文件的路徑插入編輯框中。當你想將本次提交相關的文件路徑插入日志消息中時該功能非常有用。
有時候文件不是用 Subversion 改名,於是它們在文件列表中作為丟失和未版本控制的文件出現。為了避免丟失歷史,你需要通知Subversion。簡單的選擇老名稱(丟失)和新名稱(未版本控制),然后使用右鍵菜單 → 修復移動來指明這兩個文件是改名關系。
7)用來自別人的修改更新你的工作副本
你需要定期地確保將別人所做的修改整合到你本地的工作副本中。從服務器獲取更改到本地副本的過程就叫做 更新。更新的對象可以是一個文件,選中的多個文件或者對整個目錄結構進行遞歸。要進行更新,選中要更新的文件或目錄,右鍵單擊然后選中右鍵菜單中的 TortoiseSVN → 更新。將會彈出一個
窗口,隨着更新的進行顯示進度。其他人所做的更改將會合並到你的文件中,並保留同一個文件中你所做的更改。版本庫 不會 受更新影響。
進度對話框使用顏色代碼來高亮不同的更新行為
紫色
新項已經增加到你的工作副本中。
深紅
你的工作副本中刪除了多余項,或是你的工作副本中丟失的項被替換。
綠色
版本庫中的修改與你的本地修改成功合並。
亮紅
來自版本庫的修改在與本地修改合並時出現了沖突,需要你解決。
黑色
你的工作副本中的沒有改動的項被來自版本庫中新版本所更新。
這是默認的配色方案,但你可以通過設置對話框來定制這些顏色。
如果在更新過程中發生了 沖突 (有可能是因為你和他人修改了同一個文件的同一行並且這些更改不匹配)那么對話框會用紅色顯示沖突。可以通過 雙擊 那些行來啟動外部合並工具解決沖突。等更新結束后,對話框會在文件列表的底部顯示一段總結,包括已更新、已添加、已刪除、沖突等情況的條目數量。可以使用 Ctrl+C 將這段信息復制到剪貼板。
沖突解決請看第二部分 使用TortoiseSVN碰到的幾個問題(2)-沖突解決