2011-06-27 99 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