【问题标题】:Deleting svn checkout with NAnt使用 NAnt 删除 svn checkout
【发布时间】:2009-06-19 14:11:03
【问题描述】:

我正在尝试删除一个文件夹,该文件夹是我的项目的 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>

任何想法将不胜感激!

【问题讨论】:

    标签: svn nant


    【解决方案1】:

    @jitter,你很亲密

    首先没有目录集,尝试使用它时出现错误。这是实际工作的方法

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

    如果您有正确的选择,文件集将包括目录。我认为关键是使用 defaultexcludes="false" 并使用

    **/.svn/**/*
    

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

    谢谢!

    【讨论】:

    【解决方案2】:

    如果要删除整个主干目录

    <delete dir="myproject/trunk" />
    

    我现在无法验证 &lt;include ... /&gt; 是否能够选择目录而不是文件。

    如果你只是想删除 .svn 目录

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

    我使用dirset,因为我不确定fileset 是否甚至选择目录。也许它被解释为“给我所有名为 .svn 的文件” 注意defaultexcludes="false" 的使用并在此处查看&lt;fileset documentation&gt; 默认排除是什么(例如**/.svn 正是您试图包含的内容)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      相关资源
      最近更新 更多