OSDN Git Service

Add support i18n.logOutputEncoding at log list
authorFrank Li <lznuaa@gmail.com>
Fri, 22 May 2009 15:34:28 +0000 (23:34 +0800)
committerFrank Li <lznuaa@gmail.com>
Fri, 22 May 2009 15:34:28 +0000 (23:34 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/Git.h
src/Git/GitRev.cpp
src/TortoiseProc/AppUtils.cpp
src/TortoiseProc/AppUtils.h
src/TortoiseProc/TortoiseProc.cpp

index 03a1cff..7d3787c 100644 (file)
@@ -7,6 +7,7 @@
 #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
index 530dff6..e0dde8d 100644 (file)
@@ -33,7 +33,7 @@ private:
 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
index f9ddc4f..59a9d79 100644 (file)
@@ -93,7 +93,7 @@ int GitRev::ParserFromLog(BYTE_VECTOR &log,int start)
                {\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
index 74acedb..c1c0f54 100644 (file)
@@ -1989,7 +1989,27 @@ bool CAppUtils::SendPatchMail(CTGitPathList &list,bool autoclose)
        }\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
index a9032fb..597201d 100644 (file)
@@ -197,7 +197,9 @@ public:
        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
index 9069748..f1e4158 100644 (file)
@@ -423,6 +423,8 @@ Click Yes to open setting dialog to setup MSysGit Path"),
 \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