===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: trunk/doc/images/SettingsOverlay.png
===================================================================
diff --git a/trunk/doc/images/SettingsOverlay.png b/trunk/doc/images/SettingsOverlay.png
GIT binary patch
--- a/trunk/doc/images/SettingsOverlay.png	(revision 1487)
+++ b/trunk/doc/images/SettingsOverlay.png	(revision 1488)
Index: trunk/doc/source/de/tsvn_ch04.xml
===================================================================
diff --git a/trunk/doc/source/de/tsvn_ch04.xml b/trunk/doc/source/de/tsvn_ch04.xml
--- a/trunk/doc/source/de/tsvn_ch04.xml	(revision 1487)
+++ b/trunk/doc/source/de/tsvn_ch04.xml	(revision 1488)
@@ -1561,39 +1561,49 @@
 				</figure>
 			Abgesehen von der bevorzugten Sprache erlaubt dieser Dialog es Ihnen,
 			(fast) alle Einstellungen von TortoiseSVN zu ändern.
-### Translate ###
 			<variablelist>
 				<varlistentry>
-					<term>Language</term>
-					<listitem>
-					<para>Selects your user interface language. What did you expect?</para>
+					<term>Sprache</term>
+					<listitem>
+					<para>Wählt die Sprache für die Dialoge/Meldungen aus. Was
+					haben Sie anderes erwartet?</para>
 					</listitem>
 				</varlistentry>

 				<varlistentry>
-					<term>Exclude pattern</term>
+					<term>Ausschliessen</term>
 					<listitem>
 					<para>
 					<indexterm>
-						<primary>exclude pattern</primary>
+						<primary>ausschliessen</primary>
 					</indexterm>
-					Exclude files or directories by typing in the names or extensions. Patterns are separated by spaces
-					e.g.  <literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>. The first two entries refer to directories, the
-					other four to files.
-					</para>
-					<para>
-					This exclude pattern will affect all your projects. It is not versioned, so it
-					will not affect other users. In contrast you can also use the versioned svn:ignore
-					property to exclude files or directories from version control. You can set the svn:ignore
-					property using the
+					Ausgeschlossene, unversionierte Dateien werden nicht angezeigt
+					in z.B. dem Übertragen Dialog. Ausserdem werden solche Dateien
+					beim Importieren in ein Projektarchiv ignoriert.
+					Schliessen Sie Dateien oder Ordner aus durch Angabe von
+					Dateinamen oder Erweiterungen. Die einzelnen Muster werden
+					durch Leerzeichen voneinander getrennt. Zum Beispiel
+					<literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>.
+					Die ersten beiden Muster beziehen sich auf Ordner, die
+					restlichen vier auf Dateien.
+					</para>
+					<para>
+					Diese Auschluss-Muster beziehen sich auf alle Ihre Projekte.
+					Sie werden nicht versioniert, d.h. andere Benutzer werden davon
+					nichts mitbekommen. Im Gegensatz dazu können Sie jedoch auch
+					die versionierte Eigenschaft svn:ignore verwenden, um Dateien
+					und/oder Ordner von der Versionskontrolle auszuschliessen.
+					Sie können die svn:ignore Eigenschaft setzen durch den
 					<menuchoice>
-						<guimenuitem>Add to Ignore List</guimenuitem>
+						<guimenuitem>Ignorieren</guimenuitem>
 					</menuchoice>
-					command. After commiting every other user will have the same
-					svn:ignore property set for this project / directory as you.
+					Befehl. Nach dem Übertragen wird jeder Benutzer dieselbe
+					svn:ignore Eigenschaft für das Projekt oder den Ordner
+					haben wie Sie.
 					</para>
 					</listitem>
 				</varlistentry>
+### Translate ###

 				<varlistentry>
 					<term>Default number of log messages</term>
@@ -1608,16 +1618,36 @@
 				</varlistentry>

 				<varlistentry>
-					<term>Short date / time format in log messages</term>
-					<listitem>
-					<para>If the standard long messages use up too much space on your sceen use the short format.</para>
+					<term>Edit...</term>
+					<listitem>
+					<para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para>
 					</listitem>
 				</varlistentry>

 				<varlistentry>
-					<term>Edit...</term>
-					<listitem>
-					<para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para>
+					<term>Short date / time format in log messages</term>
+					<listitem>
+					<para>If the standard long messages use up too much space on your sceen use the short format.</para>
+					</listitem>
+				</varlistentry>
+
+				<varlistentry>
+					<term>Set filedates to "last commit time"</term>
+					<listitem>
+					<para>
+					This option tells TortoiseSVN to set the filedates to the last commit time
+					when doing a checkout or an update. Otherwise TortoiseSVN will use
+					the current date.
+					</para>
+					</listitem>
+				</varlistentry>
+
+				<varlistentry>
+					<term>Close windows automatically</term>
+					<listitem>
+					<para>
+					TortoiseSVN will automatically close all progress dialogs when the action is finished.
+					</para>
 					</listitem>
 				</varlistentry>

@@ -1629,15 +1659,15 @@
 				</varlistentry>

 				<varlistentry>
-					<term>Set filedates to "last commit time"</term>
-					<listitem>
-					<para>
-					This option tells TortoiseSVN to set the filedates to the last commit time
-					when doing a checkout or an update. Otherwise TortoiseSVN will use
-					the current date.
+					<term>Minimum logsize in chars</term>
+					<listitem>
+					<para>
+					The minimum length of a log message for a commit. If you enter
+					a shorter message than specified here, the commit is disabled.
 					</para>
 					</listitem>
 				</varlistentry>
+
 				<varlistentry>
 					<term>Don't remove log messages when cancelling a commit</term>
 					<listitem>
@@ -1648,11 +1678,14 @@
 					</para>
 					</listitem>
 				</varlistentry>
+
 				<varlistentry>
-					<term>Close windows automatically</term>
-					<listitem>
-					<para>
-					TortoiseSVN will automatically close all progress dialogs when the action is finished.
+					<term>Show BugID/Issue-Nr. Box</term>
+					<listitem>
+					<para>
+					Shows a textbox in the commit dialog where you can enter
+					a BugID or Issue-Nr. from a bugtracker to associate the
+					commit with that ID/number.
 					</para>
 					</listitem>
 				</varlistentry>
@@ -1673,10 +1706,32 @@
 				Sie können auch alle überlagerten Icons deaktivieren, aber wo liegt der Spaß darin?
 			</para>
 			<para>
+				Die <term>Ausschluss Pfade</term> sagen TortoiseSVN für welche
+				Pfade die überlagerten Icons <emphasis>nicht</emphasis> gezeichnet
+				werden sollen. Dies ist nützlich wenn Sie zum Beispiel sehr grosse
+				Arbeitskopien haben, welche grosse externe Bibliotheken, welche Sie
+				selbst nie ändern werden enthalten. Sie können dann diese Pfade
+				ausschliessen. Zum Beispiel:
+			</para>
+			<para>
+				<filename>f:\development\SVN\Subversion</filename> deaktiviert
+				die überlagerten Icons <emphasis>nur</emphasis> für diesen speziellen
+				Ordner. Sie können die Icons noch immer für alle Dateien und Ordner
+				innerhalb sehen.
+			</para>
+			<para>
+				<filename>f:\development\SVN\Subversion*</filename> deaktiviert die
+				überlagerten Icons für <emphasis>alle</emphasis> Dateien und Ordner
+				welcher Pfad mit <filename>f:\development\SVN\Subversion</filename>
+				beginnt. Das bedeutet dass auch für alle Dateien und Ordner innerhalb
+				keine überlagerten Icons angezeigt werden.
+			</para>
+			<para>
 				Ausserdem können Sie angeben, welche Befehle im
 				Hauptkontextmenu des Explorer angezeigt werden sollen und welche
 				Sie lieber im Untermenu haben wollen.
 			</para>
+		</sect2>
 		<sect2 id="tsvn-DUG-settings-network">
 		<?dbhh topicname="HIDD_SETTINGSPROXY"?>
 			<title>Der Einstellungsdialog, Netzwerkseite</title>
Index: trunk/doc/source/en/tsvn_ch04.xml
===================================================================
diff --git a/trunk/doc/source/en/tsvn_ch04.xml b/trunk/doc/source/en/tsvn_ch04.xml
--- a/trunk/doc/source/en/tsvn_ch04.xml	(revision 1487)
+++ b/trunk/doc/source/en/tsvn_ch04.xml	(revision 1488)
@@ -1457,7 +1457,7 @@
 				<varlistentry>
 					<term>Language</term>
 					<listitem>
-					<para>Selects your user interface language. What did you expect?</para>
+					<para>Selects your user interface language. What else did you expect?</para>
 					</listitem>
 				</varlistentry>

@@ -1468,6 +1468,9 @@
 					<indexterm>
 						<primary>exclude pattern</primary>
 					</indexterm>
+					Exclude patterns are used to prevent unversioned files from
+					showing up e.g. in the commit dialog. Files matching the
+					patterns are also ignored by an import.
 					Exclude files or directories by typing in the names or extensions. Patterns are separated by spaces
 					e.g.  <literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>. The first two entries refer to directories, the
 					other four to files.
@@ -1499,23 +1502,16 @@
 				</varlistentry>

 				<varlistentry>
+					<term>Edit...</term>
+					<listitem>
+					<para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para>
+					</listitem>
+				</varlistentry>
+
+				<varlistentry>
 					<term>Short date / time format in log messages</term>
 					<listitem>
 					<para>If the standard long messages use up too much space on your sceen use the short format.</para>
-					</listitem>
-				</varlistentry>
-
-				<varlistentry>
-					<term>Edit...</term>
-					<listitem>
-					<para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para>
-					</listitem>
-				</varlistentry>
-
-				<varlistentry>
-					<term>Check for newer versions</term>
-					<listitem>
-					<para>If checked, TortoiseSVN will check once a week if an update is available</para>
 					</listitem>
 				</varlistentry>

@@ -1529,6 +1525,33 @@
 					</para>
 					</listitem>
 				</varlistentry>
+
+				<varlistentry>
+					<term>Close windows automatically</term>
+					<listitem>
+					<para>
+					TortoiseSVN will automatically close all progress dialogs when the action is finished.
+					</para>
+					</listitem>
+				</varlistentry>
+
+				<varlistentry>
+					<term>Check for newer versions</term>
+					<listitem>
+					<para>If checked, TortoiseSVN will check once a week if an update is available</para>
+					</listitem>
+				</varlistentry>
+
+				<varlistentry>
+					<term>Minimum logsize in chars</term>
+					<listitem>
+					<para>
+					The minimum length of a log message for a commit. If you enter
+					a shorter message than specified here, the commit is disabled.
+					</para>
+					</listitem>
+				</varlistentry>
+
 				<varlistentry>
 					<term>Don't remove log messages when cancelling a commit</term>
 					<listitem>
@@ -1539,11 +1562,14 @@
 					</para>
 					</listitem>
 				</varlistentry>
+
 				<varlistentry>
-					<term>Close windows automatically</term>
-					<listitem>
-					<para>
-					TortoiseSVN will automatically close all progress dialogs when the action is finished.
+					<term>Show BugID/Issue-Nr. Box</term>
+					<listitem>
+					<para>
+					Shows a textbox in the commit dialog where you can enter
+					a BugID or Issue-Nr. from a bugtracker to associate the
+					commit with that ID/number.
 					</para>
 					</listitem>
 				</varlistentry>
@@ -1552,7 +1578,7 @@
 		</sect2>
 		<sect2 id="tsvn-DUG-settings-overlay">
 			<?dbhh topicname="HIDD_SETTINGSOVERLAY"?>
-			<title>The Settings Dialog, Overlay Tab</title>
+			<title>The Settings Dialog, Look and Feel Tab</title>
 			<para>
 				<figure id="tsvn-DUG-settings-dia-2">
 					<title>The Settings Dialog, Overlay Tab</title>
@@ -1560,8 +1586,27 @@
 				</figure>
 				This tab allows you to choose, for which items TortoiseSVN shall
 				display icon overlays. If you feel that your icon overlays are very
-				slow (explore is not responsive), uncheck the "show changed directories" box.
+				slow (explorer is not responsive), uncheck the "show changed directories" box.
 				You can even disable all icon overlays, but where's the fun in that?
+			</para>
+			<para>
+				The <term>Exclude Paths</term> are used to tell TortoiseSVN for which
+				paths <emphasis>not</emphasis> to show icon overlays and status columns.
+				This is useful if you have some very big working copies containing
+				only libraries which you won't change at all and therefore don't
+				need the overlays. For example:
+			</para>
+			<para>
+				<filename>f:\development\SVN\Subversion</filename> will disable
+				the overlays on <emphasis>only</emphasis> that specific folder. You
+				still can see the overlays on all files and folder inside that folder.
+			</para>
+			<para>
+				<filename>f:\development\SVN\Subversion*</filename> will disable the
+				overlays on <emphasis>all</emphasis> files and folders which path
+				starts with <filename>f:\development\SVN\Subversion</filename>. That
+				means you won't see overlays for all files and folder below that
+				path.
 			</para>
 			<para>
 				You can also specifiy here which of the TortoiseSVN contex menu
Index: trunk/src/Changelog.txt
===================================================================
diff --git a/trunk/src/Changelog.txt b/trunk/src/Changelog.txt
--- a/trunk/src/Changelog.txt	(revision 1487)
+++ b/trunk/src/Changelog.txt	(revision 1488)
@@ -1,3 +1,5 @@
+- ADD: Option to exclude specific paths from showing
+       icon overlays. (Stefan)
 - ADD: On Win2k and later, the authentication data is now
        encrypted before saved. The encryption is not available
        for the other OS's. (Stefan)
Index: trunk/src/Resources/TortoiseProcENG.rc
===================================================================
diff --git a/trunk/src/Resources/TortoiseProcENG.rc b/trunk/src/Resources/TortoiseProcENG.rc
--- a/trunk/src/Resources/TortoiseProcENG.rc	(revision 1487)
+++ b/trunk/src/Resources/TortoiseProcENG.rc	(revision 1488)
@@ -398,27 +398,31 @@
 BEGIN
     CONTROL         "&Indicate folders with changed contents",
                     IDC_CHANGEDDIRS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,
-                    20,145,10
+                    20,206,10
     CONTROL         "&Removable drives",IDC_REMOVABLE,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,18,66,130,10
+                    BS_AUTOCHECKBOX | WS_TABSTOP,18,58,130,10
     CONTROL         "&Network drives",IDC_NETWORK,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,18,76,130,10
+                    WS_TABSTOP,18,68,130,10
     CONTROL         "&Fixed drives",IDC_FIXED,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,18,87,127,10
+                    WS_TABSTOP,18,79,127,10
     CONTROL         "&CD-ROM",IDC_CDROM,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,159,66,118,10
-    GROUPBOX        "Drive Types",IDC_DRIVEGROUP,12,52,274,50
+                    WS_TABSTOP,166,58,118,10
+    GROUPBOX        "Drive Types",IDC_DRIVEGROUP,12,44,274,50
     CONTROL         "RAM drives",IDC_RAM,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,159,76,119,10
+                    WS_TABSTOP,166,68,119,10
     CONTROL         "Unknown drives",IDC_UNKNOWN,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,159,86,118,10
+                    WS_TABSTOP,166,78,118,10
     CONTROL         "Show overlays only in explorer",IDC_ONLYEXPLORER,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,12,33,122,10
-    GROUPBOX        "Icon Overlays / Status Columns",IDC_STATIC,7,7,286,103
-    GROUPBOX        "Context Menu",IDC_STATIC,7,113,286,97
+                    BS_AUTOCHECKBOX | WS_TABSTOP,12,33,190,10
+    GROUPBOX        "Icon Overlays / Status Columns",IDC_STATIC,7,7,286,118
+    GROUPBOX        "Context Menu",IDC_STATIC,7,130,286,80
     CONTROL         "",IDC_MENULIST,"SysListView32",LVS_REPORT |
                     LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER |
-                    WS_BORDER | WS_TABSTOP,12,125,274,78
+                    WS_BORDER | WS_TABSTOP,12,140,274,63
+    LTEXT           "Exclude paths:",IDC_STATIC,12,106,85,8
+    EDITTEXT        IDC_EXCLUDEPATHS,102,96,184,25,ES_MULTILINE |
+                    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN |
+                    WS_VSCROLL
 END

 IDD_SETTINGSPROXY DIALOGEX 0, 0, 300, 217
@@ -860,7 +864,7 @@
         RIGHTMARGIN, 293
         VERTGUIDE, 12
         VERTGUIDE, 18
-        VERTGUIDE, 159
+        VERTGUIDE, 166
         VERTGUIDE, 286
         TOPMARGIN, 7
         BOTTOMMARGIN, 210
@@ -1377,6 +1381,8 @@
                             "If activated, prevents the overlays from showing in ""save as.."" or ""open"" dialogs"
     IDS_SETTINGS_MENULAYOUT_TT
                             "Check those menu entries you want to appear in the top context menu instead of the submenu"
+    IDS_SETTINGS_EXCLUDELIST_TT
+                            "A newline separated list of paths for which no icon overlays are shown.\nIf you add an ""*"" char at the end of a path, then all files and subdirs inside that path are excluded too.\nAn empty list will allow overlays on all paths."
 END

 STRINGTABLE
Index: trunk/src/TortoiseProc/SetOverlayPage.cpp
===================================================================
diff --git a/trunk/src/TortoiseProc/SetOverlayPage.cpp b/trunk/src/TortoiseProc/SetOverlayPage.cpp
--- a/trunk/src/TortoiseProc/SetOverlayPage.cpp	(revision 1487)
+++ b/trunk/src/TortoiseProc/SetOverlayPage.cpp	(revision 1488)
@@ -20,6 +20,7 @@
 #include "TortoiseProc.h"
 #include "SetOverlayPage.h"
 #include "Globals.h"
+#include ".\setoverlaypage.h"


 // CSetOverlayPage dialog
@@ -35,6 +36,7 @@
 	, m_bRAM(FALSE)
 	, m_bUnknown(FALSE)
 	, m_bOnlyExplorer(FALSE)
+	, m_sExcludePaths(_T(""))
 {
 	m_regShowChangedDirs = CRegDWORD(_T("Software\\TortoiseSVN\\RecursiveOverlay"));
 	m_regOnlyExplorer = CRegDWORD(_T("Software\\TortoiseSVN\\OverlaysOnlyInExplorer"), FALSE);
@@ -45,6 +47,7 @@
 	m_regDriveMaskRAM = CRegDWORD(_T("Software\\TortoiseSVN\\DriveMaskRAM"));
 	m_regDriveMaskUnknown = CRegDWORD(_T("Software\\TortoiseSVN\\DriveMaskUnknown"));
 	m_regTopmenu = CRegDWORD(_T("Software\\TortoiseSVN\\ContextMenuEntries"), MENUCHECKOUT | MENUUPDATE | MENUCOMMIT);
+	m_regExcludePaths = CRegString(_T("Software\\TortoiseSVN\\OverlayExcludeList"));

 	m_bShowChangedDirs = m_regShowChangedDirs;
 	m_bOnlyExplorer = m_regOnlyExplorer;
@@ -55,6 +58,8 @@
 	m_bRAM = m_regDriveMaskRAM;
 	m_bUnknown = m_regDriveMaskUnknown;
 	m_topmenu = m_regTopmenu;
+	m_sExcludePaths = m_regExcludePaths;
+	m_sExcludePaths.Replace(_T("\n"), _T("\r\n"));
 }

 CSetOverlayPage::~CSetOverlayPage()
@@ -74,6 +79,7 @@
 	DDX_Control(pDX, IDC_DRIVEGROUP, m_cDriveGroup);
 	DDX_Check(pDX, IDC_ONLYEXPLORER, m_bOnlyExplorer);
 	DDX_Control(pDX, IDC_MENULIST, m_cMenuList);
+	DDX_Text(pDX, IDC_EXCLUDEPATHS, m_sExcludePaths);
 }


@@ -87,6 +93,7 @@
 	ON_BN_CLICKED(IDC_RAM, OnBnClickedRam)
 	ON_BN_CLICKED(IDC_ONLYEXPLORER, OnBnClickedOnlyexplorer)
 	ON_NOTIFY(LVN_ITEMCHANGED, IDC_MENULIST, OnLvnItemchangedMenulist)
+	ON_EN_CHANGE(IDC_EXCLUDEPATHS, OnEnChangeExcludepaths)
 END_MESSAGE_MAP()


@@ -103,6 +110,9 @@
 		m_regDriveMaskRAM = m_bRAM;
 		m_regDriveMaskUnknown = m_bUnknown;
 		m_regTopmenu = m_topmenu;
+		m_sExcludePaths.Replace(_T("\r"), _T(""));
+		m_regExcludePaths = m_sExcludePaths;
+		m_sExcludePaths.Replace(_T("\n"), _T("\r\n"));
 	}
 }

@@ -116,7 +126,7 @@
 	m_tooltips.AddTool(IDC_CHANGEDDIRS, IDS_SETTINGS_CHANGEDDIRS_TT);
 	m_tooltips.AddTool(IDC_ONLYEXPLORER, IDS_SETTINGS_ONLYEXPLORER_TT);
 	m_tooltips.AddTool(IDC_MENULIST, IDS_SETTINGS_MENULAYOUT_TT);
-
+	m_tooltips.AddTool(IDC_EXCLUDEPATHS, IDS_SETTINGS_EXCLUDELIST_TT);

 	m_cMenuList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER);

@@ -280,3 +290,8 @@
 	} // if (m_cMenuList.GetItemCount() > 0)
 	*pResult = 0;
 }
+
+void CSetOverlayPage::OnEnChangeExcludepaths()
+{
+	SetModified();
+}
Index: trunk/src/TortoiseProc/SetOverlayPage.h
===================================================================
diff --git a/trunk/src/TortoiseProc/SetOverlayPage.h b/trunk/src/TortoiseProc/SetOverlayPage.h
--- a/trunk/src/TortoiseProc/SetOverlayPage.h	(revision 1487)
+++ b/trunk/src/TortoiseProc/SetOverlayPage.h	(revision 1488)
@@ -92,6 +92,8 @@
 	CIconStatic		m_cDriveGroup;
 	BOOL			m_bInitialized;
 	CRegDWORD		m_regTopmenu;
+	CRegString		m_regExcludePaths;
+	CString			m_sExcludePaths;

 	CImageList		m_imgList;
 	CListCtrl		m_cMenuList;
@@ -110,4 +112,5 @@
 	virtual BOOL OnApply();
 	afx_msg void OnBnClickedOnlyexplorer();
 	afx_msg void OnLvnItemchangedMenulist(NMHDR *pNMHDR, LRESULT *pResult);
+	afx_msg void OnEnChangeExcludepaths();
 };
Index: trunk/src/TortoiseProc/resource.h
===================================================================
diff --git a/trunk/src/TortoiseProc/resource.h b/trunk/src/TortoiseProc/resource.h
--- a/trunk/src/TortoiseProc/resource.h	(revision 1487)
+++ b/trunk/src/TortoiseProc/resource.h	(revision 1488)
@@ -179,6 +179,7 @@
 #define IDC_MINLOGSIZE                  1077
 #define IDC_BUGID                       1077
 #define IDC_WCURL                       1077
+#define IDC_EXCLUDEPATHS                1077
 #define IDC_DRIVEGROUP                  1079
 #define IDC_PROXYGROUP                  1080
 #define IDC_SSHGROUP                    1081
@@ -427,6 +428,7 @@
 #define IDS_SETTINGS_CHECKNEWER_TT      3100
 #define IDS_SETTINGS_ONLYEXPLORER_TT    3101
 #define IDS_SETTINGS_MENULAYOUT_TT      3102
+#define IDS_SETTINGS_EXCLUDELIST_TT     3103
 #define IDS_CHECKNEWER_YOURVERSION      3200
 #define IDS_CHECKNEWER_CURRENTVERSION   3201
 #define IDS_CHECKNEWER_YOURUPTODATE     3202
Index: trunk/src/TortoiseShell/ShellCache.h
===================================================================
diff --git a/trunk/src/TortoiseShell/ShellCache.h b/trunk/src/TortoiseShell/ShellCache.h
--- a/trunk/src/TortoiseShell/ShellCache.h	(revision 1487)
+++ b/trunk/src/TortoiseShell/ShellCache.h	(revision 1488)
@@ -21,9 +21,11 @@
 #include "globals.h"
 #include <tchar.h>
 #include <string>
+#include <vector>
 #include "registry.h"

 #define REGISTRYTIMEOUT 2000
+#define EXCLUDELISTTIMEOUT 5000
 #define DRIVETYPETIMEOUT 300000		// 5 min
 #define NUMBERFMTTIMEOUT 300000
 class ShellCache
@@ -39,12 +41,14 @@
 		driveremove = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskRemovable"));
 		driveram = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskRAM"));
 		driveunknown = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskUnknown"));
+		excludelist = CRegStdString(_T("Software\\TortoiseSVN\\OverlayExcludeList"));
 		recursiveticker = GetTickCount();
 		folderoverlayticker = GetTickCount();
 		driveticker = recursiveticker;
 		drivetypeticker = recursiveticker;
 		langticker = recursiveticker;
-		columnrevformatticker = langticker;
+		columnrevformatticker = recursiveticker;
+		excludelistticker = recursiveticker;
 		menulayout = CRegStdWORD(_T("Software\\TortoiseSVN\\ContextMenuEntries"), MENUCHECKOUT | MENUUPDATE | MENUCOMMIT);
 		langid = CRegStdWORD(_T("Software\\TortoiseSVN\\LanguageID"), 1033);
 		blockstatus = CRegStdWORD(_T("Software\\TortoiseSVN\\BlockStatus"), 0);
@@ -177,6 +181,21 @@
 			return FALSE;
 		if ((drivetype == DRIVE_UNKNOWN)&&(IsUnknown()))
 			return FALSE;
+
+		ExcludeListValid();
+		for (std::vector<stdstring>::iterator I = exvector.begin(); I != exvector.end(); ++I)
+		{
+			if (I->empty())
+				continue;
+			if (I->at(I->size()-1)=='*')
+			{
+				stdstring str = I->substr(0, I->size()-1);
+				if (_tcsnicmp(str.c_str(), path, str.size())==0)
+					return FALSE;
+			}
+			else if (_tcsicmp(I->c_str(), path)==0)
+				return FALSE;
+		}
 		return TRUE;
 	}
 	DWORD GetLangID()
@@ -218,6 +237,32 @@
 			driveremove.read();
 		}
 	}
+	void ExcludeListValid()
+	{
+		if ((GetTickCount() - EXCLUDELISTTIMEOUT)>excludelistticker)
+		{
+			excludelistticker = GetTickCount();
+			excludelist.read();
+			if (excludeliststr.compare((stdstring)excludelist)==0)
+				return;
+			excludeliststr = (stdstring)excludelist;
+			exvector.clear();
+			int pos = 0, pos_ant = 0;
+			pos = excludeliststr.find(_T("\n"), pos_ant);
+			while (pos != stdstring::npos)
+			{
+				stdstring token = excludeliststr.substr(pos_ant, pos-pos_ant);
+				exvector.push_back(token);
+				pos_ant = pos+1;
+				pos = excludeliststr.find(_T("\n"), pos_ant);
+			}
+			if (!excludeliststr.empty())
+			{
+				exvector.push_back(excludeliststr.substr(pos_ant, excludeliststr.size()-1));
+			}
+			excludeliststr = (stdstring)excludelist;
+		}
+	}
 	CRegStdWORD blockstatus;
 	CRegStdWORD langid;
 	CRegStdWORD showrecursive;
@@ -229,6 +274,9 @@
 	CRegStdWORD driveram;
 	CRegStdWORD driveunknown;
 	CRegStdWORD menulayout;
+	CRegStdString excludelist;
+	stdstring excludeliststr;
+	std::vector<stdstring> exvector;
 	DWORD recursiveticker;
 	DWORD folderoverlayticker;
 	DWORD driveticker;
@@ -237,6 +285,7 @@
 	DWORD langticker;
 	DWORD blockstatusticker;
 	DWORD columnrevformatticker;
+	DWORD excludelistticker;
 	UINT  drivetypecache[27];
 	TCHAR drivetypepathcache[MAX_PATH];
 	NUMBERFMT columnrevformat;