Signed-off-by: Frank Li <lznuaa@gmail.com>
dlg.m_CommitList.m_logEntries.push_back(*(GitRev*)m_arShownList[indexNext]);\r
dlg.m_CommitList.m_logEntries.at(dlg.m_CommitList.m_logEntries.size()-1).m_Action |= CTGitPath::LOGACTIONS_REBASE_PICK;\r
}\r
dlg.m_CommitList.m_logEntries.push_back(*(GitRev*)m_arShownList[indexNext]);\r
dlg.m_CommitList.m_logEntries.at(dlg.m_CommitList.m_logEntries.size()-1).m_Action |= CTGitPath::LOGACTIONS_REBASE_PICK;\r
}\r
if(dlg.DoModal() == IDOK)\r
{\r
Refresh();\r
if(dlg.DoModal() == IDOK)\r
{\r
Refresh();\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTTOREV)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_COMBINE_COMMIT));\r
\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTTOREV)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_COMBINE_COMMIT));\r
\r
+ if(m_CommitList.m_IsOldFirst)\r
+ this->m_CurrentRebaseIndex = -1;\r
+ else\r
+ this->m_CurrentRebaseIndex = m_CommitList.m_logEntries.size();\r
+\r
+\r
return TRUE;\r
}\r
// CRebaseDlg message handlers\r
return TRUE;\r
}\r
// CRebaseDlg message handlers\r
int CRebaseDlg::StartRebase()\r
{\r
CString cmd,out;\r
int CRebaseDlg::StartRebase()\r
{\r
CString cmd,out;\r
- //Todo call comment_for_reflog\r
- cmd.Format(_T("git.exe checkout %s"),this->m_BranchCtrl.GetString());\r
- this->AddLogString(cmd);\r
- if(g_Git.Run(cmd,&out,CP_UTF8))\r
- return -1;\r
+ if(!this->m_IsCherryPick)\r
+ {\r
+ //Todo call comment_for_reflog\r
+ cmd.Format(_T("git.exe checkout %s"),this->m_BranchCtrl.GetString());\r
+ this->AddLogString(cmd);\r
- this->AddLogString(out);\r
+ if(g_Git.Run(cmd,&out,CP_UTF8))\r
+ return -1;\r
+\r
+ this->AddLogString(out);\r
+ }\r
\r
cmd=_T("git.exe rev-parse --verify HEAD");\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
\r
cmd=_T("git.exe rev-parse --verify HEAD");\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
- cmd.Format(_T("git.exe update-ref ORIG_HEAD HEAD"));\r
-\r
- cmd.Format(_T("git.exe checkout %s"),this->m_UpstreamCtrl.GetString());\r
- this->AddLogString(cmd);\r
-\r
- out.Empty();\r
- if(g_Git.Run(cmd,&out,CP_UTF8))\r
+ if( !this->m_IsCherryPick )\r
+ cmd.Format(_T("git.exe checkout %s"),this->m_UpstreamCtrl.GetString());\r
+ this->AddLogString(cmd);\r
+ out.Empty();\r
+ if(g_Git.Run(cmd,&out,CP_UTF8))\r
+ {\r
+ return -1;\r
+ }\r
+ }\r
+ \r
m_OrigUpstreamHash.Empty();\r
m_OrigUpstreamHash= g_Git.GetHash(this->m_UpstreamCtrl.GetString());\r
if(m_OrigUpstreamHash.IsEmpty())\r
m_OrigUpstreamHash.Empty();\r
m_OrigUpstreamHash= g_Git.GetHash(this->m_UpstreamCtrl.GetString());\r
if(m_OrigUpstreamHash.IsEmpty())\r
- cmd.Format(_T("git.exe rev-parse %s"),this->m_BranchCtrl.GetString());\r
- if(g_Git.Run(cmd,&this->m_OrigBranchHash,CP_UTF8))\r
+ if( !this->m_IsCherryPick )\r
- this->AddLogString(m_OrigBranchHash);\r
- return -1;\r
- }\r
+ cmd.Format(_T("git.exe rev-parse %s"),this->m_BranchCtrl.GetString());\r
+ if(g_Git.Run(cmd,&this->m_OrigBranchHash,CP_UTF8))\r
+ {\r
+ this->AddLogString(m_OrigBranchHash);\r
+ return -1;\r
+ }\r
+ this->AddLogString(_T("Start Rebase\r\n"));\r
- this->AddLogString(_T("Start Rebase\r\n"));\r
+ }else\r
+ this->AddLogString(_T("Start Cherry-pick\r\n"));\r
+ \r
return 0;\r
}\r
int CRebaseDlg::VerifyNoConflict()\r
return 0;\r
}\r
int CRebaseDlg::VerifyNoConflict()\r
}\r
int CRebaseDlg::FinishRebase()\r
{\r
}\r
int CRebaseDlg::FinishRebase()\r
{\r
+ if(this->m_IsCherryPick) //cherry pick mode no "branch", working at upstream branch\r
+ return 0;\r
+\r
CString cmd,out;\r
cmd.Format(_T("git.exe branch -f %s"),this->m_BranchCtrl.GetString());\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
CString cmd,out;\r
cmd.Format(_T("git.exe branch -f %s"),this->m_BranchCtrl.GetString());\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
if(CMessageBox::Show(NULL,_T("Are you sure abort rebase"),_T("TortoiseGit"),MB_YESNO) != IDYES)\r
return;\r
\r
if(CMessageBox::Show(NULL,_T("Are you sure abort rebase"),_T("TortoiseGit"),MB_YESNO) != IDYES)\r
return;\r
\r
- cmd.Format(_T("git checkout -f %s"),this->m_UpstreamCtrl.GetString());\r
+ cmd.Format(_T("git.exe checkout -f %s"),this->m_UpstreamCtrl.GetString());\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
{\r
AddLogString(out);\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
{\r
AddLogString(out);\r
+ if(this->m_IsCherryPick) //there are not "branch" at cherry pick mode\r
+ return;\r
+\r
cmd.Format(_T("git checkout -f %s"),this->m_BranchCtrl.GetString());\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
{\r
cmd.Format(_T("git checkout -f %s"),this->m_BranchCtrl.GetString());\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
{\r