使用NAnt删除svn checkout

时间:2009-06-19 14:11:04

标签: svn nant

我正在尝试删除一个svn签出项目的文件夹,以便我可以进行新的结帐。问题是每当我尝试使用nant删除任务删除此文件夹时,我一直收到以下错误:

[delete] Deleting directory 'C:\projects\my_project\Trunk'.

BUILD FAILED

c:\Projects\my_project\default.build(63,4):
Cannot delete directory 'C:\projects\my_project\Trunk\SomeFolder\AnotherFolder'.
    The directory is not empty.

是否有一个删除nant工作副本的技巧?我尝试仅针对.svn目录进行删除,但由于某种原因,nant不会删除所有目录。这是我正在使用的任务,但它不起作用:

    <delete>
        <fileset basedir="myproject\trunk">
            <include name="\**\.svn" />
        </fileset>
    </delete>

任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:3)

@jitter,你非常接近

首先没有dirset,我在尝试使用它时遇到错误。这是实际工作的

<delete>
  <fileset basedir="myproject\trunk" defaultexcludes="false">
    <include name="**/.svn" />
    <include name="**/.svn/**/*" />
  </fileset>
</delete>
如果您有正确的选择,

fileset将包含目录。我认为关键是使用d efaultexcludes="false"并使用

**/.svn/**/*

正确选择.svn文件夹的子文件夹。

谢谢!

答案 1 :(得分:2)

如果要删除整个主目录

<delete dir="myproject/trunk" />

如果<include ... />甚至无法选择目录而不是文件,我现在无法验证。

否则,如果您只想删除.svn目录

<delete>
    <dirset basedir="myproject\trunk" defaultexcludes="false">
        <include name="**/.svn" />
    </dirset>
</delete>

我使用dirset因为我不确定fileset是否选择了目录。也许它被解释为“给我所有名为 .svn 的文件” 请注意使用defaultexcludes="false"并在此处<fileset documentation>查看违规行为(例如,**/.svn确切包含的内容)

相关问题