使用NAnt删除svn checkout

3

我试图删除一个包含我项目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个回答

3

@jitter,你非常接近了

首先,没有dirset这个指令,当我尝试使用它时出现了错误。以下是实际有效的指令:

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

如果你选择正确,fileset 将包括目录。我认为关键是使用 defaultexcludes="false" 并使用。

**/.svn/**/*

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

谢谢!



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,正是你尝试包含的内容)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接