OSDN Git Service

Pull/Fetch Dlg: Used git config to determine default remote and remote branch. Also...
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / PullCommand.cpp
index 593df64..5419e0d 100644 (file)
@@ -25,6 +25,8 @@
 #include "MessageBox.h"\r
 #include "PullFetchDlg.h"\r
 #include "ProgressDlg.h"\r
+#include "FileDiffDlg.h"\r
+#include "AppUtils.h"\r
 \r
 bool PullCommand::Execute()\r
 {\r
@@ -34,12 +36,38 @@ bool PullCommand::Execute()
        {\r
                CString url;\r
                url=dlg.m_RemoteURL;\r
+\r
+               if(dlg.m_bAutoLoad)\r
+               {\r
+                       CAppUtils::LaunchPAgent(NULL,&dlg.m_RemoteURL);\r
+               }\r
+               \r
                CString cmd;\r
-               cmd.Format(_T("git.exe pull \"%s\""),url);\r
+               CString hashOld = g_Git.GetHash(L"HEAD");\r
+               CString cmdRebase;\r
+               if(dlg.m_bRebase)\r
+                       cmdRebase = "--rebase ";\r
+               cmd.Format(_T("git.exe pull %s\"%s\" %s"),cmdRebase, url, dlg.m_RemoteBranchName);\r
                CProgressDlg progress;\r
-               progress.m_GitCmd=cmd;\r
+               progress.m_GitCmd = cmd;\r
+               progress.m_bAutoCloseOnSuccess = true;\r
                if(progress.DoModal()==IDOK)\r
+               {\r
+                       CString hashNew = g_Git.GetHash(L"HEAD");\r
+\r
+                       if(hashOld == hashNew)\r
+                       {\r
+                               if(progress.m_GitStatus == 0)\r
+                                       CMessageBox::Show(NULL, L"Already up to date.", L"Pull", MB_OK | MB_ICONINFORMATION);\r
+                               return TRUE;\r
+                       }\r
+\r
+                       CFileDiffDlg dlg;\r
+                       dlg.SetDiff(NULL, hashNew, hashOld);\r
+                       dlg.DoModal();\r
+\r
                        return TRUE;\r
+               }\r
        }\r
 #if 0\r
        CCloneDlg dlg;\r