##// END OF EJS Templates
processes: better handling of PID that are not part of RhodeCode processes....
processes: better handling of PID that are not part of RhodeCode processes. - in some cases for multiple gunicorn instances the PID sent is not from rhodecode which would lead to AccessDenied errors. We prevent from crashing the server on this type of errors.

File last commit:

r1259:8e9f93ec default
r2661:042cb4c7 default
Show More
svn_diff_multiple_changes.diff
651 lines | 24.6 KiB | text/x-diff | DiffLexer
/ rhodecode / tests / fixtures / svn_diff_multiple_changes.diff
===================================================================
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;