Usually when I do a commit I don't want to include some file like
*.csproj or *.config because they contains changes made from VS o from
the programmers that don't need to be released.
I have modified Dialog2 in setting to let the user add a list like
'*.csproj *.config *.log4net' to the Tortoise configuration.
The Commit Dialog leave files with the specified extension unchecked if
they have entry->status == svn_wc_status_modified, otherwise they are
checked as usual.
The patch in the attachment is based on revision 9381 from trunk.
Index: Resources/TortoiseProcENG.rc
===================================================================
--- Resources/TortoiseProcENG.rc (revision 9381)
+++ Resources/TortoiseProcENG.rc (working copy)
@@ -917,7 +917,7 @@
PUSHBUTTON "Restore Default",IDC_RESTORE,200,196,93,14
END
-IDD_SETTINGSMISC DIALOGEX 0, 0, 300, 217
+IDD_SETTINGSMISC DIALOGEX 0, 0, 300, 238
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Look and Feel::Dialogs 2"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
@@ -925,7 +925,7 @@
GROUPBOX "Status",IDC_STATIC,7,7,286,32
CONTROL "Recurse into unversioned folders",IDC_UNVERSIONEDRECURSE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,21,269,10
- GROUPBOX "Commit",IDC_COMMITGROUP,7,44,286,94
+ GROUPBOX "Commit",IDC_COMMITGROUP,7,44,286,112
CONTROL "&Use autocompletion of filepaths and keywords",IDC_AUTOCOMPLETION,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,57,271,10
LTEXT "&Timeout in seconds to stop the autocompletion parsing",IDC_AUTOCOMPLETIONTIMEOUTLABEL,14,74,231,8,SS_NOTIFY
@@ -934,14 +934,16 @@
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,90,271,10
LTEXT "Max. items to keep in the log message history",IDC_MAXHISTORYLABEL,14,107,226,8,SS_NOTIFY
EDITTEXT IDC_MAXHISTORY,252,103,31,14,ES_AUTOHSCROLL
- GROUPBOX "Check for modifications",IDC_STATIC,7,142,286,32
+ GROUPBOX "Check for modifications",IDC_STATIC,7,159,286,32
CONTROL "&Contact the repository on startup",IDC_REPOCHECK,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,156,271,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,173,271,10
CONTROL "&Reopen commit dialog after a commit failed",IDC_REOPENCOMMIT,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,237,10
- GROUPBOX "Lock",IDC_STATIC,7,178,286,32
+ GROUPBOX "Lock",IDC_STATIC,7,194,286,32
CONTROL "Show Lock dialog before locking files",IDC_SHOWLOCKDLG,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,190,270,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,207,270,10
+ LTEXT "Excluded extensions:",IDC_STATIC,14,137,68,11
+ EDITTEXT IDC_EXCLUDED_EXT,88,136,196,12,ES_AUTOHSCROLL
END
IDD_SETTINGSSAVEDDATA DIALOGEX 0, 0, 300, 217
@@ -1588,7 +1590,7 @@
VERTGUIDE, 252
VERTGUIDE, 284
TOPMARGIN, 7
- BOTTOMMARGIN, 210
+ BOTTOMMARGIN, 231
END
IDD_SETTINGSSAVEDDATA, DIALOG
Index: SVN/SVNStatusListCtrl.cpp
===================================================================
--- SVN/SVNStatusListCtrl.cpp (revision 9381)
+++ SVN/SVNStatusListCtrl.cpp (working copy)
@@ -956,10 +956,33 @@
return 0;
}
+bool CSVNStatusListCtrl::CheckExcluded(std::vector<CString>& arExts, FileEntry* entry)
+{
+ for(std::vector<CString>::const_iterator it=arExts.begin(); it!=arExts.end(); it++ )
+ {
+ BOOL b = CStringUtils::WildCardMatch( *it, entry->GetDisplayName());
+ if ( b && entry->status == svn_wc_status_modified )
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
void CSVNStatusListCtrl::Show(DWORD dwShow, DWORD dwCheck /*=0*/, bool bShowFolders /* = true */)
{
Locker lock(m_critSec);
WORD langID = (WORD)CRegStdWORD(_T("Software\\TortoiseSVN\\LanguageID"), GetUserDefaultLangID());
+ CString ext = CRegString(_T("Software\\TortoiseSVN\\ExcludedExtensions"), _T(""));
+ std::vector<CString> arExts;
+ int iStart=0;
+ while(true)
+ {
+ CString s = ext.Tokenize( _T(" "), iStart );
+ if ( s.IsEmpty() ) break;
+ arExts.push_back(s);
+ }
+
CWinApp * pApp = AfxGetApp();
if (pApp)
@@ -1019,7 +1042,7 @@
m_arListArray.push_back(i);
if ((dwCheck & showFlags)||((dwCheck & SVNSLC_SHOWDIRECTS)&&(entry->direct)))
{
- entry->checked = true;
+ entry->checked = CheckExcluded(arExts,entry);
}
AddEntry(entry, langID, listIndex++);
}
Index: SVN/SVNStatusListCtrl.h
===================================================================
--- SVN/SVNStatusListCtrl.h (revision 9381)
+++ SVN/SVNStatusListCtrl.h (working copy)
@@ -574,6 +574,8 @@
void HideColumn(int col);
void ShowColumn(int col);
+ bool CheckExcluded(std::vector<CString>& arExts, FileEntry* entry);
+
virtual void PreSubclassWindow();
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
Index: TortoiseProc/resource.h
===================================================================
--- TortoiseProc/resource.h (revision 9381)
+++ TortoiseProc/resource.h (working copy)
@@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
-// Used by d:\Development\SVN\TortoiseSVN\src\Resources\TortoiseProcENG.rc
+// Used by f:\vs2005\SVN\TortoiseSVN\src\Resources\TortoiseProcENG.rc
//
#define IDR_MAINFRAME 1
#define IDD_SETTINGSPROXY 102
@@ -613,6 +613,7 @@
#define IDC_GROUPTOP 1374
#define IDC_GROUPBOTTOM 1375
#define IDC_URLOFREPO 1376
+#define IDC_EXCLUDED_EXT 1377
#define IDS_WARN_FOLDERNOTEXIST 1400
#define IDS_WARN_SHAREFILEACCESS 1401
#define IDS_WARN_RELOCATEREALLY 1402
@@ -1093,7 +1094,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 252
#define _APS_NEXT_COMMAND_VALUE 32814
-#define _APS_NEXT_CONTROL_VALUE 1377
+#define _APS_NEXT_CONTROL_VALUE 1379
#define _APS_NEXT_SYMED_VALUE 195
#endif
#endif
Index: TortoiseProc/SetMisc.cpp
===================================================================
--- TortoiseProc/SetMisc.cpp (revision 9381)
+++ TortoiseProc/SetMisc.cpp (working copy)
@@ -33,6 +33,7 @@
, m_dwMaxHistory(25)
, m_bCommitReopen(FALSE)
, m_bShowLockDlg(FALSE)
+ , m_sExcludedExtension(_T(""))
{
m_regUnversionedRecurse = CRegDWORD(_T("Software\\TortoiseSVN\\UnversionedRecurse"), TRUE);
m_bUnversionedRecurse = (DWORD)m_regUnversionedRecurse;
@@ -50,6 +51,8 @@
m_bCommitReopen = (BOOL)(DWORD)m_regCommitReopen;
m_regShowLockDlg = CRegDWORD(_T("Software\\TortoiseSVN\\ShowLockDlg"), TRUE);
m_bShowLockDlg = (BOOL)(DWORD)m_regShowLockDlg;
+ m_regExcludedExtension = CRegString(_T("Software\\TortoiseSVN\\ExcludedExtensions"), _T(""));
+ m_sExcludedExtension = m_regExcludedExtension;
}
CSetMisc::~CSetMisc()
@@ -82,6 +85,10 @@
m_regShowLockDlg = m_bShowLockDlg;
if (m_regShowLockDlg.LastError != ERROR_SUCCESS)
CMessageBox::Show(m_hWnd, m_regShowLockDlg.getErrorString(), _T("TortoiseSVN"), MB_ICONERROR);
+ m_regExcludedExtension = m_sExcludedExtension;
+ if (m_regExcludedExtension.LastError != ERROR_SUCCESS)
+ CMessageBox::Show(m_hWnd, m_regCommitReopen.getErrorString(), _T("TortoiseSVN"), MB_ICONERROR);
+
return 0;
}
@@ -98,6 +105,7 @@
DDV_MinMaxUInt(pDX, m_dwMaxHistory, 1, 100);
DDX_Check(pDX, IDC_REOPENCOMMIT, m_bCommitReopen);
DDX_Check(pDX, IDC_SHOWLOCKDLG, m_bShowLockDlg);
+ DDX_Text(pDX, IDC_EXCLUDED_EXT, m_sExcludedExtension);
}
Index: TortoiseProc/SetMisc.h
===================================================================
--- TortoiseProc/SetMisc.h (revision 9381)
+++ TortoiseProc/SetMisc.h (working copy)
@@ -72,4 +72,6 @@
BOOL m_bCommitReopen;
CRegDWORD m_regShowLockDlg;
BOOL m_bShowLockDlg;
+ CRegString m_regExcludedExtension;
+ CString m_sExcludedExtension;
};
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Sat May 12 18:34:19 2007