2011-06-27 69 views
3

我現在有一個工作副本有兩個分支在它:SVN:如何自動刪除工作副本但保留被忽略的項目?

/Source 
/Source/v1.2 
/Source/v1.3 

我想刪除這一點,而不是隻檢查出我需要的分支(即去下一層的目錄樹,只檢查了/來源/v1.3)。然而,v1.3的工作副本包含一些我實際上想要保留的被忽略的文件。所以我不想刪除整個工作副本並重新開始。當然,我不想手動嘗試找到所有被忽略的文件並保留它們。有沒有什麼指令可以做到這一點?

我在Windows上使用TortoiseSVN以及Slik SVN進行自動化構建。

+0

好的,所以我希望這不是回答我自己的(第一個)問題的形式,但我希望它可以幫助別人。以下是我所做的: 1.將v1.3文件夾複製到Source文件夾外。 2.刪除源文件夾。 3.創建一個新的源文件夾。 4.在Source下移動v1.3副本。 因此,Source文件夾不再是工作副本的一部分,也沒有任何路徑被更改。回顧過去是完美的感覺(我喜歡你可以將工作副本移到任何你想要的地方!)。 – Josh

+0

@Josh - 回答你自己的問題並不壞。只需將其作爲答案並接受它,而不是將其作爲評論。 –

+0

@Josh - 您可以添加您的解決方案作爲答案並接受它。另外,您可以導出文件/文件夾的屬性(所有'svn:ignore'屬性)。然後您可以將它們導入另一個文件/文件夾。 –

回答

2

Subversion中的每個子目錄樹都是自己的工作目錄。它包含您需要的所有內容,以便將其用作工作目錄。這包括被忽略的目錄和文件,修訂歷史記錄等。

沒有理由不能簡單地使用您想要的子目錄作爲新的工作目錄並刪除其餘的目錄。事實上,你可以重新命名頂層的子目錄樹。在本例中,您將v1.3目錄移動到C:\驅動器並將其重命名爲\ Source-v1.3。然後,刪除其餘部分:

C:\> cd \Source 
C:\Source> move v1.3 \Source-v1.3 
C:\Source> cd .. 
C:\> rd Source /s/q 
C:\> cd Source-v1.3 
C:\Source-v1.3> svn update 

這將保留您忽略的所有文件和目錄,忽略。

+0

謝謝!事實上它更簡單;刪除v1.2文件夾並刪除Source下的.svn文件夾。通過這種方式,v1.3文件夾的路徑不會改變(這是我想要的;我有非相對路徑,我想避免編輯)。對不起,我沒有足夠的代表來+1你的答案,但我很欣賞它。 – Josh

+0

FWIW,它會出現在Subversion 1.7工作副本的變化打破這種能力:(工作副本不再包含每個子文件夾中的.svn文件夾; .svn文件夾現在只存在於工作副本的根目錄。Bummer: ( – Josh