OSDN Git Service

Fixed issue #116: SVN Rebase doesn't work
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RebaseDlg.cpp
index 465ab4b..7772a95 100644 (file)
@@ -8,6 +8,7 @@
 #include "MessageBox.h"\r
 #include "UnicodeUtils.h"\r
 #include "BrowseRefsDlg.h"\r
+#include "ProgressDlg.h"\r
 // CRebaseDlg dialog\r
 \r
 IMPLEMENT_DYNAMIC(CRebaseDlg, CResizableStandAloneDialog)\r
@@ -74,6 +75,7 @@ void CRebaseDlg::AddRebaseAnchor()
        AddAnchor(IDC_REBASE_COMBOXEX_BRANCH,TOP_LEFT);\r
        AddAnchor(IDC_REBASE_STATIC_UPSTREAM,TOP_LEFT);\r
        AddAnchor(IDC_REBASE_STATIC_BRANCH,TOP_LEFT);\r
+       AddAnchor(IDHELP, BOTTOM_RIGHT);\r
        this->AddOthersToAnchor();\r
 }\r
 \r
@@ -174,6 +176,14 @@ BOOL CRebaseDlg::OnInitDialog()
 \r
        this->SetControlEnable();\r
 \r
+       if(!this->m_PreCmd.IsEmpty())\r
+       {\r
+               CProgressDlg progress;\r
+               progress.m_GitCmd=m_PreCmd;\r
+               progress.m_bAutoCloseOnSuccess=true;\r
+               progress.DoModal();\r
+       }\r
+\r
        if(m_IsCherryPick)\r
        {\r
                this->m_BranchCtrl.SetCurSel(-1);\r
@@ -366,6 +376,24 @@ void CRebaseDlg::LoadBranchInfo()
                m_UpstreamCtrl.AddString(m_Upstream);\r
                m_UpstreamCtrl.SetCurSel(m_UpstreamCtrl.GetCount()-1);\r
        }\r
+       else\r
+       {\r
+               //Select pull-remote from current branch\r
+               CString currentBranch = g_Git.GetSymbolicRef();\r
+               CString configName;\r
+               configName.Format(L"branch.%s.remote", currentBranch);\r
+               CString pullRemote = g_Git.GetConfigValue(configName);\r
+\r
+               //Select pull-branch from current branch\r
+               configName.Format(L"branch.%s.merge", currentBranch);\r
+               CString pullBranch = CGit::StripRefName(g_Git.GetConfigValue(configName));\r
+\r
+               CString defaultUpstream;\r
+               defaultUpstream.Format(L"remotes/%s/%s", pullRemote, pullBranch);\r
+               int found = m_UpstreamCtrl.FindStringExact(0, defaultUpstream);\r
+               if(found >= 0)\r
+                       m_UpstreamCtrl.SetCurSel(found);\r
+       }\r
 }\r
 \r
 void CRebaseDlg::OnCbnSelchangeBranch()\r
@@ -383,7 +411,7 @@ void CRebaseDlg::FetchLogList()
        m_CommitList.Clear();\r
        this->m_CommitList.FillGitLog(NULL,0,&m_UpstreamCtrl.GetString(),&m_BranchCtrl.GetString());\r
        if( m_CommitList.GetItemCount() == 0 )\r
-               m_CommitList.ShowText(_T("Nothing Rebase"));\r
+               m_CommitList.ShowText(_T("Nothing to Rebase"));\r
 \r
        CString hash=g_Git.GetHash(m_UpstreamCtrl.GetString());\r
        \r
@@ -1173,7 +1201,7 @@ void CRebaseDlg::OnBnClickedAbort()
                return;\r
        }\r
 \r
-       if(CMessageBox::Show(NULL,_T("Are you sure abort rebase"),_T("TortoiseGit"),MB_YESNO) != IDYES)\r
+       if(CMessageBox::Show(NULL,_T("Are you sure you want to abort the rebase process?"),_T("TortoiseGit"),MB_YESNO) != IDYES)\r
                return;\r
 \r
        cmd.Format(_T("git.exe checkout -f %s"),this->m_UpstreamCtrl.GetString());\r
@@ -1211,15 +1239,6 @@ void CRebaseDlg::OnBnClickedAbort()
 \r
 void CRebaseDlg::OnBnClickedButtonBrowse()\r
 {\r
-       CString origRef;\r
-       m_UpstreamCtrl.GetLBText(m_UpstreamCtrl.GetCurSel(), origRef);\r
-       CString resultRef = CBrowseRefsDlg::PickRef(false,origRef,gPickRef_NoTag);\r
-       if(resultRef.IsEmpty())\r
-               return;\r
-       if(wcsncmp(resultRef,L"refs/",5)==0)\r
-               resultRef = resultRef.Mid(5);\r
-       if(wcsncmp(resultRef,L"heads/",6)==0)\r
-               resultRef = resultRef.Mid(6);\r
-       m_UpstreamCtrl.SetCurSel(m_UpstreamCtrl.FindStringExact(0,resultRef));\r
-\r
+       if(CBrowseRefsDlg::PickRefForCombo(&m_UpstreamCtrl, gPickRef_NoTag))\r
+               OnCbnSelchangeUpstream();\r
 }\r