天天看點

svn常用操作–windows

另附一個全面介紹svn的ppt(與下面内容不同) : SVN使用指南——Windows環境版

不像 CVS,Subversion 允許重命名和移動檔案和目錄。是以在 TortoiseSVN 的子菜單中有删除和更名的菜單項。

svn常用操作–windows

删除檔案/檔案夾

使用 TortoiseSVN → 删除 從 subversion 中删除檔案或檔案夾。

當你 TortoiseSVN → 删除 一個檔案後,該檔案立刻就從工作副本中移除,并且被标記,在下次送出時從版本庫删除。該檔案的父檔案夾會覆寫上一個“已删除”重載圖示。在你送出修改之前,你可以在父檔案夾通過 TortoiseSVN →SVN 還原 指令找回檔案。

當你TortoiseSVN → 删除一個檔案夾,它仍舊在你的工作副本中,但是重載圖示指出了它标記為删除。在你送出修改之前,你可以通過 TortoiseSVN → SVN 還原 指令找回檔案夾。檔案和檔案夾處理方式的差別是 Subversion 的特性,與 TortoiseSVN 無關。

如果你想從版本庫删除項目,但是在本地作為非版本控制的檔案/檔案夾保留,可以使用 擴充右鍵菜單 → 删除(保留本地副本)。為了看到擴充右鍵菜單,當你在檔案管理器清單窗格(右窗格)中的項目上點選右鍵時,必須同時按下Shift 鍵。

如果一個 檔案 是通過浏覽器而不是使用TortoiseSVN 快捷菜單被删除,送出對話框也會顯示這些檔案并讓你在送出前把他們從版本控制中移除。可是,如果你更新你的工作副本, Subversion 将會混淆這個丢失檔案并替換他為版本庫中的最新版本。是以,如果你需要删除一個版本控制下的檔案,請始終使用TortoiseSVN → Delete保證 Subversion不去猜測你到底想幹什麼。

如果一個 目錄 是通過浏覽器而不是使用TortoiseSVN 快捷菜單被删除,你的工作副本将回被損壞,并且你将不能送出。如果你更新你的工作副本,如果你更新你的工作副本, Subversion 将用版本庫中的最新版本替換已丢失目錄。接下來你就可以使用TortoiseSVN → Delete這種正确的方法來删除它了。

找回已删除的檔案或目錄

如果你删除了洋檔案或目錄并已經送出該删除操作到版本庫,那麼 一個正常的TortoiseSVN →Revert已不能再将其找回。但是該檔案或目錄并沒有完全丢失。如果你知道該被删除檔案或目錄的版本(如果不能,使用日志對話框來查找出來),打開資料倉庫的浏覽器,并選擇那個版本。然後選擇你删除的檔案或目錄,右鍵并選擇Context Menu → Copy to…作為目标執行複制操作,然後選擇你的工作副本的路徑。

移動檔案和檔案夾

如果你僅想重命名檔案或檔案夾,使用 右鍵菜單 → 改名… 為此條目輸入新的名稱就可以了。

如果你想在工作副本中移動檔案,可能是移動到一個不同的子檔案夾下,那麼使用滑鼠右鍵拖拽:

  1. 選擇你要移動的檔案或目錄
  2. 用滑鼠右鍵拖拽它們到工作副本的新位置
  3. 松開滑鼠右鍵
  4. 在彈出菜單選擇右鍵菜單 → SVN 移動版本控制的條目到目前位置。

送出父目錄

既然重命名和移動都是像添加之後跟随着删除一樣被執行,你必需送出該重命名/移動檔案的父檔案夾,是以重命名/移動的删除部分将出現在送出對話框中。如果你不送出重命名/移動的已删除部分,他将保留在倉庫中并且你的同組人更新工作副本時,該檔案也不會被删除。例如,他們将有兩個一老一新的副本。

你必須在重命名檔案夾後立刻進行送出,在送出前不要更改檔案夾下的任何檔案,不然你的工作副本就會真的混淆。

你也可以使用版本庫浏覽器在版本庫中移動條目。閱讀 “版本庫浏覽器”一節 以獲得更多資訊。

不要使用 SVN 移動外部連接配接

你不應該用 TortoiseSVN 的移動或改名指令作用在用 

svn:externals

 建立的目錄上。因為這個動作可能會導緻外部元素(item)從它的父版本庫中删除,這可能會使其它人煩惱。如果你需要移動外部目錄,你應該使用普通的外殼移動,然後調整源和目的之父目錄的 

svn:externals

 屬性。

改變檔案名稱大小寫

在 Windows 中,使用 Subversion 修改檔案名稱的大小寫需要小技巧,因為在改名期間,兩個檔案名稱需要同時存在。因為 Windows 的檔案系統是大小寫不敏感的,是以使用平常的改名指令是不能工作的。

這裡(至少)有兩種可能的解決方案來重命名檔案而不丢失它的日志記錄。在 subversion 裡重命名是很重要的。僅在 Windows 資料總管中重命名将會損壞你的工作副本!

解決方案 A)(推薦)

  1. 送出你工作副本中的改變到版本庫
  2. 使用版本庫的浏覽器立即重命名該檔案的大寫(小寫)為小寫(大寫)
  3. 更新你的工作副本

解決方案 B)

  1. 使用TortoiseSVN子菜單中的重命名指令将UPPERcase重命名為UPPERcase_ 格式
  2. 送出該更改
  3. 将UPPERcase_重命名為upperCASE格式
  4. 送出該更改

處理檔案名稱大小寫沖突

萬一在你的版本庫中有兩個名字相同但大小拼寫不同(例如: 

TEST.TXT

 和 

test.txt

)的檔案,你是不能在 Windows 用戶端更新或者檢出該包含該檔案的目錄的。當 Subversion 支援大小寫敏感的檔案名時,Windows 不支援。

它偶爾在兩個人在獨立的工作副本送出時發生,檔案名稱相同,隻有大小寫不同。它也會在具有大小寫敏感的檔案系統的系統中送出檔案時發生,例如 Linux。

如果是那樣的話,你得決定在這個版本庫裡的哪一個檔案是你想保留的,哪一個是要删除(或重命名)的

防止兩個檔案名字相同

這有一個有用的伺服器端腳本在http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/将會防止檢入拼寫(大小寫)沖突檔案。

修複檔案改名

有時候你的IDE會因為執行反射操作,改名檔案,當然它不能告訴Subversion。如果你嘗試送出修改,Subversion會發現丢失了老檔案,新增了未版本控制的新檔案。你可以簡單的增加新檔案,但是你将丢失曆史記錄,因為Subversion不知道這些檔案的關系。

更好的方法是通知Subversion這實際上是改名,你可以在送出和檢查修改對話框中做此操作。簡單選擇老檔案(丢失的)和新檔案(未版本控制的),使用右鍵菜單 → 修複移動設定這兩個檔案是改名關系。

删除未版本控制的檔案

通常你可以在Subversion中設定自己的忽略清單,例如忽略所有産生的檔案。但是你如何清理這些忽略的項目,進而産生一個幹淨的建構呢?通常你在makefile中清理,但是如果你在調試makefile,或者修改建構系統,那麼有一個清理方法是極為有用的。

TortoiseSVN 提供了使用擴充上下文菜單 → 删除未版本控制的項目…來清理工作副本。你可以在目錄上右鍵操作時,保持 Shift按下,就可以看到這個上下文菜單。它會出現一個對話框,列出工作副本中的所有未版本控制的檔案。你可以選擇或取消删除的項目。

當删除這些項目時,使用了垃圾箱。是以如果你犯了錯誤,删除了應該版本控制的檔案,你仍舊可以恢複。

上一篇: git復原操作

繼續閱讀