【问题标题】:Excluding .git in an Ant <tar> task在 Ant <tar> 任务中排除 .git
【发布时间】:2011-01-22 02:43:33
【问题描述】:

我正在使用 Ant 1.7.1 来压缩包含 .git 子目录的目录的内容。我目前的任务是

<tar
    destfile="sali-src-${version}.tgz"
    basedir="${basedir}"
    compression="gzip"
    excludes=".git, .gitignore, *.ipr, *.iws, *.iml">
</tar>

但生成的 tarball 包含 .git 子目录。有人能指出我如何防止它被收录吗?

【问题讨论】:

    标签: ant build tar


    【解决方案1】:

    这行得通:

    <?xml version="1.0"?>
    <project name="test" default="tar">
            <target name="tar">
                <tar
                    destfile="sali-src-${version}.tgz"
                    basedir="${basedir}"
                    compression="gzip"
                    excludes=".git/**, .gitignore/**, **/*.ipr, **/*.iws, **/*.iml">
                </tar>
            </target>
    </project>
    

    您的模式有误,有关模式的更多信息请阅读此处:http://ant.apache.org/manual/dirtasks.html#patterns

    【讨论】:

      【解决方案2】:

      Ant 有pre-configured default excludes 可以防止基于目录的任务处理 CVS、Subversion 和 VSS 的控制文件。不幸的是,这些默认值不包括任何其他版本控制系统。但是,您可以使用 <defaultexcludes> task 修改默认值:

      <defaultexcludes add="**/.git/**,**/.gitignore"/>
      

      这会将您的 Git 文件排除在任何后续处理之外(因此以后每次使用 或类似文件都会忽略控制文件)。

      【讨论】:

      • 注意,Ant 1.8.2 添加了 Git 和 Mercurial 的默认排除项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2010-12-03
      • 1970-01-01
      相关资源
      最近更新 更多