#include <map>\r
#include "UnicodeUtils.h"\r
\r
+int CGit::m_LogEncode=CP_UTF8;\r
\r
static LPTSTR nextpath(LPCTSTR src, LPTSTR dst, UINT maxlen)\r
{\r
public:\r
static BOOL CheckMsysGitDir();\r
static CString ms_LastMsysGitDir; // the last msysgitdir added to the path, blank if none\r
-\r
+ static int m_LogEncode;\r
// static CString m_MsysGitPath;\r
CGit(void);\r
~CGit(void);\r
{\r
//text = one.Right(one.GetLength()-4);\r
text.Empty();\r
- g_Git.StringAppend(&text,&log[pos+4],CP_UTF8);\r
+ g_Git.StringAppend(&text,&log[pos+4],CGit::m_LogEncode);\r
mode = log[pos+2];\r
\r
switch(mode)\r
}\r
return false;\r
}\r
+int CAppUtils::GetLogOutputEncode()\r
+{\r
+ CString cmd,output;\r
+ int start=0;\r
+ cmd=_T("git.exe config i18n.logOutputEncoding");\r
+ if(g_Git.Run(cmd,&output,CP_ACP))\r
+ {\r
+ cmd=_T("git.exe config i18n.commitencoding");\r
+ if(g_Git.Run(cmd,&output,CP_ACP))\r
+ return CP_UTF8;\r
+ \r
+ int start=0;\r
+ output=output.Tokenize(_T("\n"),start);\r
+ return CUnicodeUtils::GetCPCode(output); \r
\r
+ }else\r
+ {\r
+ output=output.Tokenize(_T("\n"),start);\r
+ return CUnicodeUtils::GetCPCode(output);\r
+ }\r
+}\r
int CAppUtils::SaveCommitUnicodeFile(CString &filename, CString &message)\r
{\r
CFile file(filename,CFile::modeReadWrite|CFile::modeCreate );\r
static bool SendPatchMail(CTGitPathList &pathlist,bool autoclose=false);\r
\r
static int SaveCommitUnicodeFile(CString &filename, CString &mesage);\r
- \r
+\r
+ static int GetLogOutputEncode();\r
+\r
private:\r
static CString PickDiffTool(const CTGitPath& file1, const CTGitPath& file2);\r
static bool GetMimeType(const CTGitPath& file, CString& mimetype);\r
\r
cmd->SetParser(parser);\r
cmd->SetPaths(pathList, cmdLinePath);\r
+ \r
+ CGit::m_LogEncode = CAppUtils::GetLogOutputEncode();\r
\r
retSuccess = cmd->Execute();\r
delete cmd;\r