OSDN Git Service

Fix Show Log boundary show more than 1 log item when using --boundary & -n1
authorFrank Li <lznuaa@gmail.com>
Sun, 18 Jan 2009 04:30:14 +0000 (12:30 +0800)
committerFrank Li <lznuaa@gmail.com>
Sun, 18 Jan 2009 04:30:14 +0000 (12:30 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/Git.h
src/Git/GitRev.cpp
src/TortoiseProc/CommitDlg.cpp

index a78504a..89e4fd2 100644 (file)
@@ -221,7 +221,12 @@ int CGit::GetLog(CString& logOut, CString &hash,  CTGitPath *path ,int count,int
        if(mask& LOG_INFO_FULLHISTORY)\r
                param += _T(" --full-history ");\r
 \r
        if(mask& LOG_INFO_FULLHISTORY)\r
                param += _T(" --full-history ");\r
 \r
-       cmd.Format(_T("git.exe log %s -C --left-right --boundary --topo-order --parents %s --pretty=format:\""),\r
+       if(mask& LOG_INFO_BOUNDARY)\r
+               param += _T("--left-right --boundary ");\r
+\r
+       param+=hash;\r
+\r
+       cmd.Format(_T("git.exe log %s -C --topo-order --parents %s --pretty=format:\""),\r
                                num,param);\r
 \r
        BuildOutputFormat(log);\r
                                num,param);\r
 \r
        BuildOutputFormat(log);\r
index a94d462..db3832a 100644 (file)
@@ -50,6 +50,7 @@ public:
                LOG_INFO_FILESTATE=0x2,\r
                LOG_INFO_PATCH=0x4,\r
                LOG_INFO_FULLHISTORY=0x8,\r
                LOG_INFO_FILESTATE=0x2,\r
                LOG_INFO_PATCH=0x4,\r
                LOG_INFO_FULLHISTORY=0x8,\r
+               LOG_INFO_BOUNDARY=0x10\r
        }LOG_INFO_MASK;\r
 \r
        int GetRemoteList(STRING_VECTOR &list);\r
        }LOG_INFO_MASK;\r
 \r
        int GetRemoteList(STRING_VECTOR &list);\r
@@ -58,7 +59,7 @@ public:
        int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
        \r
        //hash is empty means all. -1 means all\r
        int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
        \r
        //hash is empty means all. -1 means all\r
-       int GetLog(CString& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE);\r
+       int GetLog(CString& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY);\r
 \r
        git_revnum_t GetHash(CString &friendname);\r
 \r
 \r
        git_revnum_t GetHash(CString &friendname);\r
 \r
index d974c04..083f517 100644 (file)
@@ -160,7 +160,7 @@ int GitRev::SafeFetchFullInfo(CGit *git)
                CString onelog;\r
                TCHAR oldmark=this->m_Mark;\r
        \r
                CString onelog;\r
                TCHAR oldmark=this->m_Mark;\r
        \r
-               git->GetLog(onelog,m_CommitHash,NULL,1);\r
+               git->GetLog(onelog,m_CommitHash,NULL,1,CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE);\r
                CString oldhash=m_CommitHash;\r
                ParserFromLog(onelog);\r
                \r
                CString oldhash=m_CommitHash;\r
                ParserFromLog(onelog);\r
                \r
index a7c231f..56ef4a8 100644 (file)
@@ -31,6 +31,7 @@
 #include "HistoryDlg.h"\r
 #include "Hooks.h"\r
 #include "CommonResource.h"\r
 #include "HistoryDlg.h"\r
 #include "Hooks.h"\r
 #include "CommonResource.h"\r
+#include "UnicodeUtils.h"\r
 \r
 #ifdef _DEBUG\r
 #define new DEBUG_NEW\r
 \r
 #ifdef _DEBUG\r
 #define new DEBUG_NEW\r
@@ -425,8 +426,10 @@ void CCommitDlg::OnOK()
                g_Git.Run(cmd,&out);\r
 \r
                CString tempfile=::GetTempFile();\r
                g_Git.Run(cmd,&out);\r
 \r
                CString tempfile=::GetTempFile();\r
-               CStdioFile file(tempfile,CFile::modeReadWrite|CFile::modeCreate );\r
-               file.WriteString(m_sLogMessage);\r
+               CFile file(tempfile,CFile::modeReadWrite|CFile::modeCreate );\r
+               CStringA log=CUnicodeUtils::GetUTF8( m_sLogMessage);\r
+               file.Write(log,log.GetLength());\r
+               //file.WriteString(m_sLogMessage);\r
                file.Close();\r
        \r
                out =_T("");\r
                file.Close();\r
        \r
                out =_T("");\r