手冊

刪除、移動和重新命名

Subversion 允許重新命名和移動檔案及資料夾。因此在 TortoiseSVN 子選單中有刪除和重新命名的選單項目。

圖 4.34. 版本控制檔案的檔案總管右鍵選單

Explorer context menu for versioned files


刪除檔案和資料夾

使用 TortoiseSVN刪除 從 Subversion 移除檔案或資料夾。

當您 TortoiseSVN刪除 檔案或資料夾時,它會立即從您的工作副本中移除,並在下次提交時標記為在儲存庫中刪除。該項目的父資料夾會顯示一個 已修改 圖示覆蓋層。在您提交變更之前,您可以使用父資料夾上的 TortoiseSVN還原 來取回檔案。

如果您想從儲存庫中刪除某個項目,但在本機上將其保留為未版本控制的檔案/資料夾,請使用 延伸右鍵選單刪除 (保留本機)。您必須在檔案總管清單窗格(右窗格)中,按住 Shift 鍵並在項目上按下滑鼠右鍵,才能在延伸右鍵選單中看到此選項。

如果項目是透過檔案總管刪除,而不是使用 TortoiseSVN 右鍵選單,則提交對話方塊會將這些項目顯示為遺失,並讓您在提交之前也將它們從版本控制中移除。但是,如果您更新您的工作副本,Subversion 會發現遺失的項目,並將其替換為儲存庫中的最新版本。如果您需要刪除版本控制的檔案,請務必使用 TortoiseSVN刪除,這樣 Subversion 就不必猜測您真正想做什麼。

取回已刪除的檔案或資料夾

如果您已刪除檔案或資料夾,並且已經將該刪除操作提交到儲存庫,那麼正常的 TortoiseSVN還原 就無法再將其取回。但檔案或資料夾根本沒有遺失。如果您知道檔案或資料夾被刪除的版本(如果您不知道,請使用記錄對話方塊來找出),請開啟儲存庫瀏覽器並切換到該版本。然後選擇您刪除的檔案或資料夾,按下滑鼠右鍵並選擇 右鍵選單複製到... 作為該複製操作的目標,選擇您的工作副本路徑。

移動檔案和資料夾

如果您想對檔案或資料夾進行簡單的原地重新命名,請使用 右鍵選單重新命名...。輸入項目的新名稱,就完成了。

如果您想在您的工作副本中移動檔案,例如移動到不同的子資料夾,請使用滑鼠右鍵拖放處理程序

  1. 選取您要移動的檔案或目錄

  2. 按住滑鼠右鍵拖曳 它們到工作副本內的新位置

  3. 放開滑鼠右鍵

  4. 在彈出選單中選擇 右鍵選單SVN 移動版本控制檔案到這裡

提交父資料夾

由於重新命名和移動是透過刪除後新增來完成的,您必須提交重新命名/移動檔案的父資料夾,以便重新命名/移動的刪除部分會顯示在提交對話方塊中。如果您不提交重新命名/移動的移除部分,它將會留在儲存庫中,當您的同事更新時,舊檔案將不會被移除。也就是說,他們將同時擁有舊的和新的副本。

必須在變更資料夾內的任何檔案之前提交資料夾重新命名,否則您的工作副本可能會變得非常混亂。

移動或複製檔案的另一種方法是使用 Windows 複製/剪下命令。選取您要複製的檔案,按下滑鼠右鍵並從檔案總管右鍵選單中選擇 右鍵選單複製。然後瀏覽到目標資料夾,按下滑鼠右鍵並選擇 TortoiseSVN貼上。對於移動檔案,選擇 右鍵選單剪下 而不是 右鍵選單複製

您也可以使用儲存庫瀏覽器來移動項目。請閱讀 名為「儲存庫瀏覽器」的章節 以了解更多資訊。

不要 SVN 移動外部項目

應該對使用 svn:externals 建立的資料夾使用 TortoiseSVN 移動重新命名 命令。此操作會導致外部項目從其父儲存庫中刪除,可能會讓許多其他人感到困擾。如果您需要移動外部資料夾,您應該使用普通的 shell 移動,然後調整來源和目標父資料夾的 svn:externals 屬性。

處理檔案名稱大小寫衝突

如果儲存庫已經包含兩個名稱相同但僅大小寫不同的檔案(例如 TEST.TXTtest.txt),您將無法在 Windows 用戶端上更新或檢出父目錄。雖然 Subversion 支援區分大小寫的檔案名稱,但 Windows 不支援。

當兩個人從不同的工作副本提交檔案時,有時會發生這種情況,這些檔案恰好具有相同的名稱,但大小寫不同。當檔案從具有區分大小寫檔案系統的系統(如 Linux)提交時,也可能發生這種情況。

在這種情況下,您必須決定要保留哪個檔案並從儲存庫中刪除(或重新命名)另一個檔案。

防止兩個檔案名稱相同

在以下位置有一個伺服器 hook 腳本可用: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ ,它將防止導致大小寫衝突的簽入。

修復檔案重新命名

有時您的友善 IDE 會在重構練習中為您重新命名檔案,當然它不會告訴 Subversion。如果您嘗試提交您的變更,Subversion 會將舊檔案名稱視為遺失,而將新檔案名稱視為未版本控制的檔案。您可以只勾選新檔案名稱以將其新增進來,但這樣您將遺失歷史追蹤,因為 Subversion 不知道這些檔案是相關的。

更好的方法是通知 Subversion 此變更實際上是重新命名,您可以在 提交檢查修改 對話方塊中執行此操作。只需選取舊名稱(遺失)和新名稱(未版本控制),然後使用 右鍵選單修復移動 將這兩個檔案配對為重新命名。

刪除未版本控制的檔案

通常,您會設定您的忽略清單,以便在 Subversion 中忽略所有產生的檔案。但是,如果您想清除所有這些忽略的項目以產生乾淨的建置,該怎麼辦?通常您會在您的 makefile 中設定它,但如果您正在偵錯 makefile,或變更建置系統,則有一個清除所有內容的方法會很有用。

TortoiseSVN 提供了這樣一個選項,使用 延伸右鍵選單刪除未版本控制的項目...。您必須在檔案總管清單窗格(右窗格)中,按住 Shift 並在資料夾上按下滑鼠右鍵,才能在延伸右鍵選單中看到此選項。這將產生一個對話方塊,其中列出您的工作副本中任何位置的所有未版本控制的檔案。然後您可以選取或取消選取要移除的項目。

當刪除這些項目時,會使用資源回收筒,因此如果您在這裡犯了錯誤並刪除了應該進行版本控制的檔案,您仍然可以還原它。

TortoiseSVN 首頁