From b12acedc4be5942d6cc42375ab0c5265f0384038 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Fri, 22 May 2009 23:34:28 +0800 Subject: [PATCH] Add support i18n.logOutputEncoding at log list Signed-off-by: Frank Li --- src/Git/Git.cpp | 1 + src/Git/Git.h | 2 +- src/Git/GitRev.cpp | 2 +- src/TortoiseProc/AppUtils.cpp | 20 ++++++++++++++++++++ src/TortoiseProc/AppUtils.h | 4 +++- src/TortoiseProc/TortoiseProc.cpp | 2 ++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/Git/Git.cpp b/src/Git/Git.cpp index 03a1cff..7d3787c 100644 --- a/src/Git/Git.cpp +++ b/src/Git/Git.cpp @@ -7,6 +7,7 @@ #include #include "UnicodeUtils.h" +int CGit::m_LogEncode=CP_UTF8; static LPTSTR nextpath(LPCTSTR src, LPTSTR dst, UINT maxlen) { diff --git a/src/Git/Git.h b/src/Git/Git.h index 530dff6..e0dde8d 100644 --- a/src/Git/Git.h +++ b/src/Git/Git.h @@ -33,7 +33,7 @@ private: public: static BOOL CheckMsysGitDir(); static CString ms_LastMsysGitDir; // the last msysgitdir added to the path, blank if none - + static int m_LogEncode; // static CString m_MsysGitPath; CGit(void); ~CGit(void); diff --git a/src/Git/GitRev.cpp b/src/Git/GitRev.cpp index f9ddc4f..59a9d79 100644 --- a/src/Git/GitRev.cpp +++ b/src/Git/GitRev.cpp @@ -93,7 +93,7 @@ int GitRev::ParserFromLog(BYTE_VECTOR &log,int start) { //text = one.Right(one.GetLength()-4); text.Empty(); - g_Git.StringAppend(&text,&log[pos+4],CP_UTF8); + g_Git.StringAppend(&text,&log[pos+4],CGit::m_LogEncode); mode = log[pos+2]; switch(mode) diff --git a/src/TortoiseProc/AppUtils.cpp b/src/TortoiseProc/AppUtils.cpp index 74acedb..c1c0f54 100644 --- a/src/TortoiseProc/AppUtils.cpp +++ b/src/TortoiseProc/AppUtils.cpp @@ -1989,7 +1989,27 @@ bool CAppUtils::SendPatchMail(CTGitPathList &list,bool autoclose) } return false; } +int CAppUtils::GetLogOutputEncode() +{ + CString cmd,output; + int start=0; + cmd=_T("git.exe config i18n.logOutputEncoding"); + if(g_Git.Run(cmd,&output,CP_ACP)) + { + cmd=_T("git.exe config i18n.commitencoding"); + if(g_Git.Run(cmd,&output,CP_ACP)) + return CP_UTF8; + + int start=0; + output=output.Tokenize(_T("\n"),start); + return CUnicodeUtils::GetCPCode(output); + }else + { + output=output.Tokenize(_T("\n"),start); + return CUnicodeUtils::GetCPCode(output); + } +} int CAppUtils::SaveCommitUnicodeFile(CString &filename, CString &message) { CFile file(filename,CFile::modeReadWrite|CFile::modeCreate ); diff --git a/src/TortoiseProc/AppUtils.h b/src/TortoiseProc/AppUtils.h index a9032fb..597201d 100644 --- a/src/TortoiseProc/AppUtils.h +++ b/src/TortoiseProc/AppUtils.h @@ -197,7 +197,9 @@ public: static bool SendPatchMail(CTGitPathList &pathlist,bool autoclose=false); static int SaveCommitUnicodeFile(CString &filename, CString &mesage); - + + static int GetLogOutputEncode(); + private: static CString PickDiffTool(const CTGitPath& file1, const CTGitPath& file2); static bool GetMimeType(const CTGitPath& file, CString& mimetype); diff --git a/src/TortoiseProc/TortoiseProc.cpp b/src/TortoiseProc/TortoiseProc.cpp index 9069748..f1e4158 100644 --- a/src/TortoiseProc/TortoiseProc.cpp +++ b/src/TortoiseProc/TortoiseProc.cpp @@ -423,6 +423,8 @@ Click Yes to open setting dialog to setup MSysGit Path"), cmd->SetParser(parser); cmd->SetPaths(pathList, cmdLinePath); + + CGit::m_LogEncode = CAppUtils::GetLogOutputEncode(); retSuccess = cmd->Execute(); delete cmd; -- 2.11.0