From 43de42a38ffaf685b29e9af7433f59ab7fba7265 Mon Sep 17 00:00:00 2001
From: Stefan Bodewig
Date: Thu, 5 Aug 2010 04:55:55 +0000
Subject: [PATCH] =?UTF-8?q?add=20Git,=20Mercurial=20and=20Bazaar=20files/d?=
=?UTF-8?q?irs=20to=20defaultexcludes.=20=20Submitted=20by=20Ville=20Skytt?=
=?UTF-8?q?=C3=A4.=20=20PR=2049624?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@982469 13f79535-47bb-0310-9956-ffa450edef68
---
WHATSNEW | 4 ++
docs/manual/dirtasks.html | 19 ++++++++-
.../apache/tools/ant/DirectoryScanner.java | 20 +++++++++
.../ant/taskdefs/DefaultExcludesTest.java | 42 +++++++++++++++++++
4 files changed, 84 insertions(+), 1 deletion(-)
diff --git a/WHATSNEW b/WHATSNEW
index 8f1b8f184..754e1f502 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -42,6 +42,10 @@ Changes that could break older environments:
of Ant 1.8.1.
Bugzilla Report 49373.
+ * The files and directories used by Git, Mercurial and Bazaar to
+ store their information are now excluded by the defaultexcludes.
+ Bugzilla Report 49624.
+
Fixed bugs:
-----------
diff --git a/docs/manual/dirtasks.html b/docs/manual/dirtasks.html
index 28a4daf03..9d4e145e2 100644
--- a/docs/manual/dirtasks.html
+++ b/docs/manual/dirtasks.html
@@ -265,7 +265,7 @@ as an implicit fileset.
There are a set of definitions that are excluded by default from all
-directory-based tasks. They are:
+directory-based tasks. As of Ant 1.8.1 they are:
**/*~
**/#*#
@@ -282,6 +282,23 @@ directory-based tasks. They are:
**/.svn/**
**/.DS_Store
+Ant 1.8.2 adds the folllowing default excludes:
+
+ **/.git
+ **/.git/**
+ **/.gitattributes
+ **/.gitignore
+ **/.gitmodules
+ **/.hg
+ **/.hg/**
+ **/.hgignore
+ **/.hgsub
+ **/.hgsubstate
+ **/.hgtags
+ **/.bzr
+ **/.bzr/**
+ **/.bzrignore
+
If you do not want these default excludes applied, you may disable
them with the defaultexcludes="no"
attribute.
diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java
index 7531954d4..94973bbb6 100644
--- a/src/main/org/apache/tools/ant/DirectoryScanner.java
+++ b/src/main/org/apache/tools/ant/DirectoryScanner.java
@@ -170,6 +170,26 @@ public class DirectoryScanner
SelectorUtils.DEEP_TREE_MATCH + "/.svn",
SelectorUtils.DEEP_TREE_MATCH + "/.svn/" + SelectorUtils.DEEP_TREE_MATCH,
+ // Git
+ SelectorUtils.DEEP_TREE_MATCH + "/.git",
+ SelectorUtils.DEEP_TREE_MATCH + "/.git/" + SelectorUtils.DEEP_TREE_MATCH,
+ SelectorUtils.DEEP_TREE_MATCH + "/.gitattributes",
+ SelectorUtils.DEEP_TREE_MATCH + "/.gitignore",
+ SelectorUtils.DEEP_TREE_MATCH + "/.gitmodules",
+
+ // Mercurial
+ SelectorUtils.DEEP_TREE_MATCH + "/.hg",
+ SelectorUtils.DEEP_TREE_MATCH + "/.hg/" + SelectorUtils.DEEP_TREE_MATCH,
+ SelectorUtils.DEEP_TREE_MATCH + "/.hgignore",
+ SelectorUtils.DEEP_TREE_MATCH + "/.hgsub",
+ SelectorUtils.DEEP_TREE_MATCH + "/.hgsubstate",
+ SelectorUtils.DEEP_TREE_MATCH + "/.hgtags",
+
+ // Bazaar
+ SelectorUtils.DEEP_TREE_MATCH + "/.bzr",
+ SelectorUtils.DEEP_TREE_MATCH + "/.bzr/" + SelectorUtils.DEEP_TREE_MATCH,
+ SelectorUtils.DEEP_TREE_MATCH + "/.bzrignore",
+
// Mac
SelectorUtils.DEEP_TREE_MATCH + "/.DS_Store"
};
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/DefaultExcludesTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/DefaultExcludesTest.java
index 040eaa805..86efc6855 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/DefaultExcludesTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/DefaultExcludesTest.java
@@ -53,6 +53,20 @@ public class DefaultExcludesTest extends BuildFileTest {
"**/vssver.scc",
"**/.svn",
"**/.svn/**",
+ "**/.git",
+ "**/.git/**",
+ "**/.gitattributes",
+ "**/.gitignore",
+ "**/.gitmodules",
+ "**/.hg",
+ "**/.hg/**",
+ "**/.hgignore",
+ "**/.hgsub",
+ "**/.hgsubstate",
+ "**/.hgtags",
+ "**/.bzr",
+ "**/.bzr/**",
+ "**/.bzrignore",
"**/.DS_Store"};
project.executeTarget("test1");
assertEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes());
@@ -74,6 +88,20 @@ public class DefaultExcludesTest extends BuildFileTest {
"**/vssver.scc",
"**/.svn",
"**/.svn/**",
+ "**/.git",
+ "**/.git/**",
+ "**/.gitattributes",
+ "**/.gitignore",
+ "**/.gitmodules",
+ "**/.hg",
+ "**/.hg/**",
+ "**/.hgignore",
+ "**/.hgsub",
+ "**/.hgsubstate",
+ "**/.hgtags",
+ "**/.bzr",
+ "**/.bzr/**",
+ "**/.bzrignore",
"**/.DS_Store",
"foo"};
project.executeTarget("test2");
@@ -96,6 +124,20 @@ public class DefaultExcludesTest extends BuildFileTest {
"**/vssver.scc",
"**/.svn",
"**/.svn/**",
+ "**/.git",
+ "**/.git/**",
+ "**/.gitattributes",
+ "**/.gitignore",
+ "**/.gitmodules",
+ "**/.hg",
+ "**/.hg/**",
+ "**/.hgignore",
+ "**/.hgsub",
+ "**/.hgsubstate",
+ "**/.hgtags",
+ "**/.bzr",
+ "**/.bzr/**",
+ "**/.bzrignore",
"**/.DS_Store"};
project.executeTarget("test3");
assertEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes());