=================================================================== 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 @@ Abgesehen von der bevorzugten Sprache erlaubt dieser Dialog es Ihnen, (fast) alle Einstellungen von TortoiseSVN zu ändern. -### Translate ### - Language - - Selects your user interface language. What did you expect? + Sprache + + Wählt die Sprache für die Dialoge/Meldungen aus. Was + haben Sie anderes erwartet? - Exclude pattern + Ausschliessen - exclude pattern + ausschliessen - Exclude files or directories by typing in the names or extensions. Patterns are separated by spaces - e.g. bin obj *.bak *.~?? *.jar *.[Tt]mp. The first two entries refer to directories, the - other four to files. - - - 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 + bin obj *.bak *.~?? *.jar *.[Tt]mp. + Die ersten beiden Muster beziehen sich auf Ordner, die + restlichen vier auf Dateien. + + + 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 - Add to Ignore List + Ignorieren - 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. +### Translate ### Default number of log messages @@ -1608,16 +1618,36 @@ - Short date / time format in log messages - - If the standard long messages use up too much space on your sceen use the short format. + Edit... + + ... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN. - Edit... - - ... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN. + Short date / time format in log messages + + If the standard long messages use up too much space on your sceen use the short format. + + + + + Set filedates to "last commit time" + + + 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. + + + + + + Close windows automatically + + + TortoiseSVN will automatically close all progress dialogs when the action is finished. + @@ -1629,15 +1659,15 @@ - Set filedates to "last commit time" - - - 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. + Minimum logsize in chars + + + The minimum length of a log message for a commit. If you enter + a shorter message than specified here, the commit is disabled. + Don't remove log messages when cancelling a commit @@ -1648,11 +1678,14 @@ + - Close windows automatically - - - TortoiseSVN will automatically close all progress dialogs when the action is finished. + Show BugID/Issue-Nr. Box + + + 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. @@ -1673,10 +1706,32 @@ Sie können auch alle überlagerten Icons deaktivieren, aber wo liegt der Spaß darin? + Die Ausschluss Pfade sagen TortoiseSVN für welche + Pfade die überlagerten Icons nicht 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: + + + f:\development\SVN\Subversion deaktiviert + die überlagerten Icons nur für diesen speziellen + Ordner. Sie können die Icons noch immer für alle Dateien und Ordner + innerhalb sehen. + + + f:\development\SVN\Subversion* deaktiviert die + überlagerten Icons für alle Dateien und Ordner + welcher Pfad mit f:\development\SVN\Subversion + beginnt. Das bedeutet dass auch für alle Dateien und Ordner innerhalb + keine überlagerten Icons angezeigt werden. + + Ausserdem können Sie angeben, welche Befehle im Hauptkontextmenu des Explorer angezeigt werden sollen und welche Sie lieber im Untermenu haben wollen. + Der Einstellungsdialog, Netzwerkseite 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 @@ Language - Selects your user interface language. What did you expect? + Selects your user interface language. What else did you expect? @@ -1468,6 +1468,9 @@ exclude pattern + 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. bin obj *.bak *.~?? *.jar *.[Tt]mp. The first two entries refer to directories, the other four to files. @@ -1499,23 +1502,16 @@ + Edit... + + ... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN. + + + + Short date / time format in log messages If the standard long messages use up too much space on your sceen use the short format. - - - - - Edit... - - ... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN. - - - - - Check for newer versions - - If checked, TortoiseSVN will check once a week if an update is available @@ -1529,6 +1525,33 @@ + + + Close windows automatically + + + TortoiseSVN will automatically close all progress dialogs when the action is finished. + + + + + + Check for newer versions + + If checked, TortoiseSVN will check once a week if an update is available + + + + + Minimum logsize in chars + + + The minimum length of a log message for a commit. If you enter + a shorter message than specified here, the commit is disabled. + + + + Don't remove log messages when cancelling a commit @@ -1539,11 +1562,14 @@ + - Close windows automatically - - - TortoiseSVN will automatically close all progress dialogs when the action is finished. + Show BugID/Issue-Nr. Box + + + 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. @@ -1552,7 +1578,7 @@ - The Settings Dialog, Overlay Tab + The Settings Dialog, Look and Feel Tab
The Settings Dialog, Overlay Tab @@ -1560,8 +1586,27 @@
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? +
+ + The Exclude Paths are used to tell TortoiseSVN for which + paths not 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: + + + f:\development\SVN\Subversion will disable + the overlays on only that specific folder. You + still can see the overlays on all files and folder inside that folder. + + + f:\development\SVN\Subversion* will disable the + overlays on all files and folders which path + starts with f:\development\SVN\Subversion. That + means you won't see overlays for all files and folder below that + path. 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 #include +#include #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::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 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;