OSDN Git Service

Get Log From Git
[tortoisegit/TortoiseGitJp.git] / Git / Git.cpp
index 61930cd..20ed425 100644 (file)
@@ -2,6 +2,7 @@
 #include "Git.h"\r
 #include "atlconv.h"\r
 #include "afx.h"\r
+#include "GitRev.h"\r
 \r
 #define MAX_DIRBUFFER 1000\r
 CGit g_Git;\r
@@ -50,20 +51,20 @@ int CGit::Run(CString cmd, CString* output)
                return GIT_ERROR_CREATE_PROCESS;\r
        }\r
        \r
+       CloseHandle(hWrite);\r
+\r
        DWORD readnumber;\r
        while(ReadFile(hRead,buffer,4090,&readnumber,NULL))\r
        {\r
                buffer[readnumber]=0;\r
                USES_CONVERSION;\r
                output->Append(A2W(buffer));\r
-               if(readnumber<4090)\r
-                       break;\r
        }\r
 \r
        \r
        CloseHandle(pi.hThread);\r
        CloseHandle(pi.hProcess);\r
-       CloseHandle(hWrite);\r
+\r
        CloseHandle(hRead);\r
        return GIT_SUCCESS;\r
 }\r
@@ -93,3 +94,38 @@ CString CGit::GetCurrentBranch(void)
        }\r
        return CString("");\r
 }\r
+\r
+int CGit::GetLog(CString& logOut)\r
+{\r
+\r
+       CString cmd;\r
+       CString log;\r
+       cmd=("git.cmd log -C --numstat --pretty=format:\"");\r
+       log.Format(_T("#<%c>%%n"),LOG_REV_ITEM_BEGIN);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%an%%n"),LOG_REV_AUTHOR_NAME);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%ae%%n"),LOG_REV_AUTHOR_EMAIL);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%ai%%n"),LOG_REV_AUTHOR_DATE);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%cn%%n"),LOG_REV_COMMIT_NAME);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%ce%%n"),LOG_REV_COMMIT_EMAIL);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%ci%%n"),LOG_REV_COMMIT_DATE);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%s%%n"),LOG_REV_COMMIT_SUBJECT);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%b%%n"),LOG_REV_COMMIT_BODY);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%H%%n"),LOG_REV_COMMIT_HASH);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%P%%n"),LOG_REV_COMMIT_PARENT);\r
+       cmd += log;\r
+       log.Format(_T("#<%c>%%n"),LOG_REV_COMMIT_FILE);\r
+       cmd += log;\r
+       cmd += CString(_T("\""));\r
+       Run(cmd,&logOut);\r
+       return 0;\r
+}\r