Improve commit speed when many added files.
Signed-off-by: Frank Li <lznuaa@gmail.com>
cmd.Format(_T("git.exe commit %s -F \"%s\""),amend, tempfile);\r
\r
CProgressDlg progress;\r
cmd.Format(_T("git.exe commit %s -F \"%s\""),amend, tempfile);\r
\r
CProgressDlg progress;\r
+ progress.m_bBufferAll=true; // improve show speed when there are many file added. \r
progress.m_GitCmd=cmd;\r
progress.m_bShowCommand = FALSE; // don't show the commit command\r
progress.m_PreText = out; // show any output already generated in log window\r
progress.m_GitCmd=cmd;\r
progress.m_bShowCommand = FALSE; // don't show the commit command\r
progress.m_PreText = out; // show any output already generated in log window\r
{\r
m_pThread = NULL;\r
m_bAltAbortPress=false;\r
{\r
m_pThread = NULL;\r
m_bAltAbortPress=false;\r
}\r
\r
CProgressDlg::~CProgressDlg()\r
}\r
\r
CProgressDlg::~CProgressDlg()\r
}\r
if(wParam == MSG_PROGRESSDLG_END || wParam == MSG_PROGRESSDLG_FAILED)\r
{\r
}\r
if(wParam == MSG_PROGRESSDLG_END || wParam == MSG_PROGRESSDLG_FAILED)\r
{\r
+ if(m_bBufferAll)\r
+ {\r
+ m_Databuf.push_back(0);\r
+ InsertCRLF();\r
+ m_Log.SetWindowText(&m_Databuf[0]);\r
+ }\r
m_BufStart=0;\r
this->m_Databuf.clear();\r
\r
m_BufStart=0;\r
this->m_Databuf.clear();\r
\r
DialogEnableWindow(IDCANCEL, FALSE);\r
}\r
\r
DialogEnableWindow(IDCANCEL, FALSE);\r
}\r
\r
- for(int i=this->m_BufStart;i<this->m_Databuf.size();i++)\r
- ParserCmdOutput(this->m_Databuf[m_BufStart]);\r
- m_BufStart++;\r
- }\r
- }else\r
- ParserCmdOutput((TCHAR)lParam);\r
-\r
+ for(int i=this->m_BufStart;i<this->m_Databuf.size();i++)\r
+ {\r
+ ParserCmdOutput(this->m_Databuf[m_BufStart]);\r
+ m_BufStart++;\r
+ }\r
+ }else\r
+ ParserCmdOutput((TCHAR)lParam);\r
+ }\r
\r
m_bAbort = true;\r
}\r
\r
m_bAbort = true;\r
}\r
+\r
+void CProgressDlg::InsertCRLF()\r
+{\r
+ for(int i=0;i<m_Databuf.size();i++)\r
+ {\r
+ if(m_Databuf[i]==_T('\n'))\r
+ {\r
+ if(i==0 || m_Databuf[i-1]!= _T('\r'))\r
+ {\r
+ m_Databuf.insert(m_Databuf.begin()+i,_T('\r'));\r
+ i++;\r
+ }\r
+ }\r
+ }\r
+}
\ No newline at end of file
bool m_bAbort;\r
bool m_bDone;\r
bool m_bAltAbortPress;\r
bool m_bAbort;\r
bool m_bDone;\r
bool m_bAltAbortPress;\r
+ bool m_bBufferAll; // Buffer All to improve speed when there are many file add at commit \r
protected:\r
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support\r
static UINT ProgressThreadEntry(LPVOID pVoid);\r
protected:\r
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support\r
static UINT ProgressThreadEntry(LPVOID pVoid);\r
std::vector<TCHAR> m_Databuf;\r
int m_BufStart;\r
\r
std::vector<TCHAR> m_Databuf;\r
int m_BufStart;\r
\r
+ void InsertCRLF(); //Insert \r before \n\r
+\r
DECLARE_MESSAGE_MAP()\r
public:\r
\r
DECLARE_MESSAGE_MAP()\r
public:\r
\r