OSDN Git Service

Fixed issue #158: Rebase can act on the wrong branch
authorFrank Li <lznuaa@gmail.com>
Tue, 8 Sep 2009 14:52:34 +0000 (22:52 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 8 Sep 2009 14:52:34 +0000 (22:52 +0800)
Can't checkout current branch when fast forward case.

Signed-off-by: Frank Li <lznuaa@gmail.com>
ext/apr
src/TortoiseProc/RebaseDlg.cpp

diff --git a/ext/apr b/ext/apr
index 4853979..c08bb4d 160000 (submodule)
--- a/ext/apr
+++ b/ext/apr
@@ -1 +1 @@
-Subproject commit 48539798dcea5a2669e59bc8036910cb3a294c13
+Subproject commit c08bb4df7085ef655aea0fb7f79b41e055fc99b9
index 51b15de..034221d 100644 (file)
@@ -694,10 +694,26 @@ void CRebaseDlg::OnBnClickedContinue()
        if( m_RebaseStage == REBASE_DONE)\r
        {\r
                OnOK();\r
+               return;\r
        }\r
 \r
        if( this->m_IsFastForward )\r
        {\r
+               CString cmd,out;\r
+               CString oldbranch = g_Git.GetCurrentBranch();\r
+               if( oldbranch != m_BranchCtrl.GetString() )\r
+               {\r
+                       cmd.Format(_T("git.exe checkout %s"),m_BranchCtrl.GetString());\r
+                       AddLogString(cmd);\r
+                       if( g_Git.Run(cmd,&out,CP_ACP) )\r
+                       {\r
+                               this->m_ctrlTabCtrl.SetActiveTab(REBASE_TAB_LOG);\r
+                               AddLogString(out);\r
+                               return;\r
+                       }\r
+               }\r
+               AddLogString(out);\r
+               out.Empty();\r
                m_OrigBranchHash = g_Git.GetHash(m_BranchCtrl.GetString());\r
                m_OrigUpstreamHash = g_Git.GetHash(this->m_UpstreamCtrl.GetString());\r
                        \r
@@ -707,7 +723,7 @@ void CRebaseDlg::OnBnClickedContinue()
                        AddLogString(_T("No fast forward\r\nMaybe repository changed"));\r
                        return;\r
                }\r
-               CString cmd,out;\r
+               \r
                cmd.Format(_T("git.exe reset --hard %s"),this->m_UpstreamCtrl.GetString());\r
                this->AddLogString(CString(_T("Fast forward to "))+m_UpstreamCtrl.GetString());\r
 \r