OSDN Git Service

Rebase: Select default upstream based on current tracked remote
authorJohan 't Hart <johanthart@gmail.com>
Fri, 26 Jun 2009 20:16:31 +0000 (22:16 +0200)
committerJohan 't Hart <johanthart@gmail.com>
Fri, 26 Jun 2009 20:16:31 +0000 (22:16 +0200)
src/TortoiseProc/RebaseDlg.cpp

index 83c3067..74aaf91 100644 (file)
@@ -367,6 +367,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