+ CString base,hash;\r
+ CString cmd;\r
+ m_IsFastForward=FALSE;\r
+ cmd.Format(_T("git.exe merge-base %s %s"), m_UpstreamCtrl.GetString(),m_BranchCtrl.GetString());\r
+ if(g_Git.Run(cmd,&base,CP_ACP))\r
+ {\r
+ CMessageBox::Show(NULL,base,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return;\r
+ }\r
+ base=base.Left(40);\r
+\r
+ hash=g_Git.GetHash(m_BranchCtrl.GetString());\r
+\r
+ if(hash == g_Git.GetHash(this->m_UpstreamCtrl.GetString()))\r
+ {\r
+ m_CommitList.Clear();\r
+ CString text,fmt;\r
+ fmt.LoadString(IDS_REBASE_EQUAL_FMT);\r
+ text.Format(fmt,m_BranchCtrl.GetString(),this->m_UpstreamCtrl.GetString());\r
+\r
+ m_CommitList.ShowText(text);\r
+ this->GetDlgItem(IDC_REBASE_CONTINUE)->EnableWindow(false);\r
+ return;\r
+ }\r
+\r
+ hash=hash.Left(40);\r
+ \r
+ if(hash == base )\r
+ {\r
+ //fast forword\r
+ this->m_IsFastForward=TRUE;\r
+\r
+ m_CommitList.Clear();\r
+ CString text,fmt;\r
+ fmt.LoadString(IDS_REBASE_FASTFORWARD_FMT);\r
+ text.Format(fmt,m_BranchCtrl.GetString(),this->m_UpstreamCtrl.GetString(),\r
+ m_BranchCtrl.GetString(),this->m_UpstreamCtrl.GetString());\r
+\r
+ m_CommitList.ShowText(text);\r
+ this->GetDlgItem(IDC_REBASE_CONTINUE)->EnableWindow(true);\r
+ SetContinueButtonText();\r
+ \r
+ return ;\r
+ }\r
+\r
+ hash.Empty();\r
+\r
+ if(!this->m_bForce)\r
+ {\r
+ cmd.Format(_T("git.exe rev-parse %s"), m_UpstreamCtrl.GetString());\r
+ if( g_Git.Run(cmd,&hash,CP_ACP))\r
+ {\r
+ CMessageBox::Show(NULL,base,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return;\r
+ }\r
+ hash=hash.Left(40);\r
+ \r
+ if( base == hash )\r
+ {\r
+ m_CommitList.Clear();\r
+ CString text,fmt;\r
+ fmt.LoadString(IDS_REBASE_UPTODATE_FMT);\r
+ text.Format(fmt,m_BranchCtrl.GetString());\r
+ m_CommitList.ShowText(text);\r
+ this->GetDlgItem(IDC_REBASE_CONTINUE)->EnableWindow(m_CommitList.GetItemCount());\r
+ SetContinueButtonText();\r
+ return;\r
+ }\r
+ }\r
+\r