OSDN Git Service

Update version number to 1.2.1.0
[tortoisegit/TortoiseGitJp.git] / src / TortoiseGitBlame / TortoiseGitBlameDoc.cpp
index 32a9a63..2df2566 100644 (file)
@@ -12,6 +12,7 @@
 #include "MainFrm.h"\r
 #include "TGitPath.h"\r
 #include "TortoiseGitBlameView.h"\r
+#include "CmdLineParser.h"\r
 \r
 #ifdef _DEBUG\r
 #define new DEBUG_NEW\r
@@ -50,7 +51,16 @@ BOOL CTortoiseGitBlameDoc::OnNewDocument()
 }\r
 BOOL CTortoiseGitBlameDoc::OnOpenDocument(LPCTSTR lpszPathName)\r
 {\r
-       return OnOpenDocument(lpszPathName,_T(""));\r
+       CCmdLineParser parser(AfxGetApp()->m_lpCmdLine);\r
+       if(parser.HasVal(_T("rev")))\r
+       {\r
+               m_Rev=parser.GetVal(_T("rev"));\r
+       }else\r
+       {\r
+               m_Rev.Empty();\r
+       }\r
+\r
+       return OnOpenDocument(lpszPathName,m_Rev);\r
 }\r
 \r
 BOOL CTortoiseGitBlameDoc::OnOpenDocument(LPCTSTR lpszPathName,CString Rev)\r
@@ -59,7 +69,6 @@ BOOL CTortoiseGitBlameDoc::OnOpenDocument(LPCTSTR lpszPathName,CString Rev)
                return FALSE;\r
 \r
        m_CurrentFileName=lpszPathName;\r
-\r
        m_Rev=Rev;\r
 \r
        // TODO: add reinitialization code here\r
@@ -79,14 +88,28 @@ BOOL CTortoiseGitBlameDoc::OnOpenDocument(LPCTSTR lpszPathName,CString Rev)
        {\r
                m_IsGitFile=TRUE;\r
                g_Git.m_CurrentDir=topdir;\r
-               GetMainFrame()->m_wndOutput.LoadHistory(lpszPathName);\r
+\r
+               CString PathName=lpszPathName;\r
+               if(topdir[topdir.GetLength()-1] == _T('\\') || \r
+                       topdir[topdir.GetLength()-1] == _T('/'))\r
+                       PathName=PathName.Right(PathName.GetLength()-g_Git.m_CurrentDir.GetLength());\r
+               else\r
+                       PathName=PathName.Right(PathName.GetLength()-g_Git.m_CurrentDir.GetLength()-1);\r
+\r
+               CTGitPath path;\r
+               path.SetFromWin(PathName);\r
+\r
+               if(!g_Git.m_CurrentDir.IsEmpty())\r
+                       SetCurrentDirectory(g_Git.m_CurrentDir);\r
                \r
+               m_GitPath = path;\r
+               GetMainFrame()->m_wndOutput.LoadHistory(path.GetGitPathString());\r
+       \r
                CString cmd;\r
-               CTGitPath path;\r
-               path.SetFromWin(lpszPathName);\r
+               \r
                cmd.Format(_T("git.exe blame -s -l %s -- \"%s\""),Rev,path.GetGitPathString());\r
                m_BlameData.Empty();\r
-               if(g_Git.Run(cmd,&m_BlameData))\r
+               if(g_Git.Run(cmd,&m_BlameData,CP_UTF8))\r
                {\r
                        CMessageBox::Show(NULL,CString(_T("Blame Error"))+m_BlameData,_T("TortoiseGitBlame"),MB_OK);\r
 \r