OSDN Git Service

Improvements to Diff of modified version against head
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitDiff.cpp
index cfed705..d85f2c3 100644 (file)
@@ -2,6 +2,7 @@
 #include "GitDiff.h"\r
 #include "AppUtils.h"\r
 #include "git.h"\r
+#include "resource.h"\r
 \r
 CGitDiff::CGitDiff(void)\r
 {\r
@@ -19,7 +20,7 @@ int CGitDiff::Parser(git_revnum_t &rev)
                CString cmd;\r
                cmd.Format(_T("git.exe rev-parse %s"),rev);\r
                CString output;\r
-               if(!g_Git.Run(cmd,&output))\r
+               if(!g_Git.Run(cmd,&output,CP_UTF8))\r
                {\r
                        //int start=output.Find(_T('\n'));\r
                        rev=output.Left(40);\r
@@ -62,13 +63,14 @@ int CGitDiff::DiffNull(CTGitPath *pPath, git_revnum_t &rev1)
        return 0;\r
 }\r
 \r
-int CGitDiff::Diff(CTGitPath * pPath,CTGitPath * pPath2, git_revnum_t & rev1, git_revnum_t & rev2, bool blame, bool unified)\r
+int CGitDiff::Diff(CTGitPath * pPath,CTGitPath * pPath2, git_revnum_t & rev1, git_revnum_t & rev2, bool /*blame*/, bool /*unified*/)\r
 {\r
        CString temppath;\r
        GetTempPath(temppath);\r
        Parser(rev1);\r
        Parser(rev2);\r
        CString file1;\r
+       CString title1;\r
        CString cmd;\r
        if(rev1 != GIT_REV_ZERO )\r
        {\r
@@ -77,34 +79,44 @@ int CGitDiff::Diff(CTGitPath * pPath,CTGitPath * pPath2, git_revnum_t & rev1, gi
                                pPath->GetBaseFilename(),\r
                                rev1.Left(6),\r
                                pPath->GetFileExtension());\r
+               title1 = pPath->GetFileOrDirectoryName()+_T(":")+rev1.Left(6);\r
                cmd.Format(_T("git.exe cat-file -p %s:%s"),rev1,pPath->GetGitPathString());\r
                                g_Git.RunLogFile(cmd,file1);\r
        }else\r
        {\r
                file1=g_Git.m_CurrentDir+_T("\\")+pPath->GetWinPathString();\r
+               title1.Format( IDS_DIFF_WCNAME, pPath->GetFileOrDirectoryName() );\r
        }\r
 \r
        CString file2;\r
+       CString title2;\r
        if(rev2 != GIT_REV_ZERO)\r
        {\r
                \r
-               file2.Format(_T("%s\\%s_%s%s"),\r
+               file2.Format(_T("%s%s_%s%s"),\r
                                temppath,                                               \r
                                pPath2->GetBaseFilename(),\r
                                rev2.Left(6),\r
                                pPath2->GetFileExtension());\r
+               title2 = pPath2->GetFileOrDirectoryName()+_T(":")+rev2.Left(6);\r
                cmd.Format(_T("git.exe cat-file -p %s:%s"),rev2,pPath2->GetGitPathString());\r
                g_Git.RunLogFile(cmd,file2);\r
        }else\r
        {\r
                file2=g_Git.m_CurrentDir+_T("\\")+pPath2->GetWinPathString();\r
+               title2.Format( IDS_DIFF_WCNAME, pPath2->GetFileOrDirectoryName() );\r
        }\r
        \r
        CAppUtils::DiffFlags flags;\r
        CAppUtils::StartExtDiff(file2,file1,\r
-                                                       pPath2->GetGitPathString()+_T(":")+rev2.Left(6),\r
-                                                       pPath->GetGitPathString()+_T(":")+rev1.Left(6)\r
+                                                       title2,\r
+                                                       title1\r
                                                        ,flags);\r
 \r
        return 0;\r
 }\r
+\r
+int CGitDiff::StartConflictEditor(CTGitPath* /*file*/)\r
+{\r
+       return 0;\r
+}
\ No newline at end of file