##// END OF EJS Templates
permissions: allow users to update settings for repository groups they still own, or have admin perms, when they don't change their name....
permissions: allow users to update settings for repository groups they still own, or have admin perms, when they don't change their name. - this before gave no-permission errors as the parent group access was checked - since the group parent permission should be checked at creation, or name change this commit fixes such case

File last commit:

r1259:8e9f93ec default
r4421:73f70a03 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
diffs: compare overhaul....
r1259 ===================================================================
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;