//Becuase A2W use stack as internal convert buffer. \r
void CGit::StringAppend(CString *str,BYTE *p,int code)\r
{\r
- USES_CONVERSION;\r
- str->Append(A2W_CP((LPCSTR)p,code));\r
-\r
+ //USES_CONVERSION;\r
+ //str->Append(A2W_CP((LPCSTR)p,code));\r
+ WCHAR * buf;\r
+ int len = strlen((const char*)p);\r
+ //if (len==0)\r
+ // return ;\r
+ //buf = new WCHAR[len*4 + 1];\r
+ buf = str->GetBuffer(len*4+1+str->GetLength())+str->GetLength();\r
+ SecureZeroMemory(buf, (len*4 + 1)*sizeof(WCHAR));\r
+ MultiByteToWideChar(code, 0, (LPCSTR)p, -1, buf, len*4);\r
+ str->ReleaseBuffer();\r
+ //str->Append(buf);\r
+ //delete buf;\r
} \r
BOOL CGit::IsInitRepos()\r
{\r
return ret;\r
\r
vector.push_back(0);\r
+ \r
StringAppend(output,&(vector[0]),code);\r
return 0;\r
}\r
{\r
m_LogList.ReloadHashMap();\r
CTGitPath path;\r
- path.SetFromWin(filename);\r
+ path.SetFromGit(filename);\r
\r
m_LogList.Clear();\r
m_LogList.FillGitLog(&path,0/*CGit::LOG_INFO_FULLHISTORY*/);\r
{\r
m_IsGitFile=TRUE;\r
g_Git.m_CurrentDir=topdir;\r
- GetMainFrame()->m_wndOutput.LoadHistory(lpszPathName);\r
+\r
+ CString PathName=lpszPathName;\r
+ PathName=PathName.Right(PathName.GetLength()-g_Git.m_CurrentDir.GetLength()-1);\r
+ CTGitPath path;\r
+ path.SetFromWin(PathName);\r
+\r
+ if(!g_Git.m_CurrentDir.IsEmpty())\r
+ SetCurrentDirectory(g_Git.m_CurrentDir);\r
\r
+ GetMainFrame()->m_wndOutput.LoadHistory(path.GetGitPathString());\r
+ \r
CString cmd;\r
- CTGitPath path;\r
- path.SetFromWin(lpszPathName);\r
+ \r
cmd.Format(_T("git.exe blame -s -l %s -- \"%s\""),Rev,path.GetGitPathString());\r
m_BlameData.Empty();\r
if(g_Git.Run(cmd,&m_BlameData,CP_UTF8))\r
CImportPatchDlg dlg;\r
// dlg.m_bIsTag=TRUE;\r
CString cmd;\r
+ CString output;\r
if(dlg.DoModal()==IDOK)\r
{\r
for(int i=0;i<dlg.m_PathList.GetCount();i++)\r
{ \r
cmd.Format(_T("git.exe am \"%s\""),dlg.m_PathList[i].GetGitPathString());\r
- CString output;\r
+ \r
if(g_Git.Run(cmd,&output,CP_OEMCP))\r
{\r
CMessageBox::Show(NULL,output,_T("TortoiseGit"),MB_OK);\r
}\r
return TRUE;\r
}\r
+ CMessageBox::Show(NULL,CString(_T("Patch applied"))+output,_T("TortoiseGit"),MB_OK);\r
return FALSE;\r
}\r
int start=4;
int length;
- int next =1;
- while( next>0 )
+ int next =0;
+ while( next>=0 )
{
next=rev.ParserFromLog(log,next);
this->push_back(rev);
break;\r
}\r
\r
- if(g_Git.m_CurrentDir)\r
+ if(!g_Git.m_CurrentDir.IsEmpty())\r
SetCurrentDirectory(g_Git.m_CurrentDir);\r
\r
cmd->SetParser(parser);\r