2011-03-22 109 views
3

比方說,我們在資源庫中的以下兩個目錄:在顛覆與另一個目錄拷貝更換目錄

currentproduction 
development 

而且我想:

  1. 重命名currentproduction到例如archivedproduction
  2. 複製修訂development爲(新)currentproduction 1234。

當我做

svn ren currentproduction archivedproduction 
svn copy -r 1234 development currentproduction 

顛覆嘗試複製development下(進)currentproduction(這是已經預定要刪除):

A currentproduction\development\file1.txt 
A currentproduction\development\file2.txt 
Updated to revision 1234. 
svn: Can't add 'currentproduction\development' to a parent directory scheduled for deletion 

我想這是因爲目錄仍然在工作副本中,直到提交。我可以做中間承諾:

svn ren currentproduction archivedproduction 
svn commit 
svn copy -r 1234 development currentproduction 

但是這不是很好......是不是有沒有辦法告訴Subversion我想替換用另一個目錄?

回答

1

而不是複製的,你可以從你想要的修訂合併developmentcurrentproduction。那樣的話,你只有在你的提交中被改變的東西。

如果你的development的副本創建currentproduction,你就必須merge不存在於currentproduction分支的修訂。

我勸你,讓你合併到您的currentproduction每枝修訂(除非該服務器版本> 1.5)的記錄。您不應該將兩次修訂合併兩次,因爲它可能會被視爲衝突。

// Know to which version a branche was created (XX) 
svn log --stop-on-copy 
svn merge -r XX:1234 development currentproduction 

我也建議你使用這個setup爲你的存儲庫。

祝你好運。

+0

是的,這是一種可能性;然而,它增加了複雜性和可能的​​合併衝突,對我而言無益(在我的情況下)。而且,我確實使用了提到的設置,這是一個簡化的例子。 ;-)儘管這不是我所需要的,但我現在可以接受的答案是我現在所希望的最好的答案。 :-)(我幾乎成功地通過手工編輯.svn文件來做我想要的東西,我將在業餘時間嘗試更多一些。) – Mormegil 2011-03-29 10:06:10

0

在你的情況,我會簡單地重命名currentproduction到archivedproduction,只是結帳所要的修訂到一個名爲currentproduction新目錄。

+0

這就是同樣的問題:關鍵是你沒有中間提交就無法做到這一點。直到提交,工作拷貝還保留有'currentproduction'目錄和Subversion拒絕結賬用'SVN:「currentproduction」已經是一個不同的URL'的工作副本。 – Mormegil 2011-03-22 10:36:04

+0

用另一個名字簽出並在完成時重新命名(使用windows而不是svn重命名目錄名稱) – CloudyMarble 2011-03-22 10:47:14

+0

「完成時」的含義是什麼? _什麼時候會做什麼?我想在一次提交中完成整個事情。 – Mormegil 2011-03-22 10:49:47

0

我剛剛去了.svn隱藏文件夾包含在刪除的文件夾中,刪除它,然後重新啓動我的工作空間(我在M $ VisualStudio中使用AhnkSVN),並提交一個文件在以前刪除的文件夾沒有問題。

總之,使.svn文件夾的備份刪除它之前。