//#include "EditPropertiesDlg.h"\r
#include "FileDiffDlg.h"\r
#include "CommitDlg.h"\r
+#include "RebaseDlg.h"\r
\r
IMPLEMENT_DYNAMIC(CGitLogList, CHintListCtrl)\r
\r
Refresh();\r
}\r
break;\r
+\r
+ case ID_CHERRY_PICK:\r
+ if(!g_Git.CheckCleanWorkTree())\r
+ {\r
+ CMessageBox::Show(NULL,_T("Cherry Pick Require Clean Working Tree"),_T("TortoiseGit"),MB_OK);\r
+ \r
+ }else\r
+ {\r
+ CRebaseDlg dlg;\r
+ dlg.m_IsCherryPick = TRUE;\r
+ dlg.m_Upstream = this->m_CurrentBranch;\r
+ POSITION pos = GetFirstSelectedItemPosition();\r
+ while(pos)\r
+ {\r
+ int indexNext = GetNextSelectedItem(pos);\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
+\r
+ if(dlg.DoModal() == IDOK)\r
+ {\r
+ Refresh();\r
+ }\r
+ }\r
+ break;\r
+ case ID_REBASE_TO_VERSION:\r
+ if(!g_Git.CheckCleanWorkTree())\r
+ {\r
+ CMessageBox::Show(NULL,_T("Rebase Require Clean Working Tree"),_T("TortoiseGit"),MB_OK);\r
+ \r
+ }else\r
+ {\r
+ CRebaseDlg dlg;\r
+ dlg.m_Upstream = pSelLogEntry->m_CommitHash;\r
+\r
+ if(dlg.DoModal() == IDOK)\r
+ {\r
+ Refresh();\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
default:\r
//CMessageBox::Show(NULL,_T("Have not implemented"),_T("TortoiseGit"),MB_OK);\r
break;\r
m_RebaseStage=CHOOSE_BRANCH;\r
m_CurrentRebaseIndex=-1;\r
m_bThreadRunning =FALSE;\r
+ this->m_IsCherryPick = FALSE;\r
}\r
\r
CRebaseDlg::~CRebaseDlg()\r
// m_CommitList.m_IsOldFirst = TRUE;\r
m_CommitList.m_IsRebaseReplaceGraph = TRUE;\r
\r
- m_CommitList.DeleteAllItems();\r
m_CommitList.InsertGitColumn();\r
\r
- FetchLogList();\r
- SetContinueButtonText();\r
this->SetControlEnable();\r
\r
+ if(m_IsCherryPick)\r
+ {\r
+ this->m_BranchCtrl.SetCurSel(-1);\r
+ this->m_BranchCtrl.EnableWindow(FALSE);\r
+ this->m_UpstreamCtrl.EnableWindow(FALSE);\r
+ this->SetWindowText(_T("Cherry Pick"));\r
+ this->m_CommitList.StartFilter();\r
+\r
+ }else\r
+ {\r
+ SetContinueButtonText();\r
+ m_CommitList.DeleteAllItems();\r
+ FetchLogList();\r
+ }\r
+\r
m_CommitList.m_ContextMenuMask &= ~(m_CommitList.GetContextMenuBit(CGitLogListBase::ID_CHERRY_PICK)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_SWITCHTOREV)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_RESET)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTREV)|\r
+ m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_TO_VERSION)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REVERTTOREV));\r
\r
return TRUE;\r
AddBranchToolTips(&m_BranchCtrl);\r
AddBranchToolTips(&m_UpstreamCtrl);\r
\r
+ if(!m_Upstream.IsEmpty())\r
+ {\r
+ m_UpstreamCtrl.AddString(m_Upstream);\r
+ m_UpstreamCtrl.SetCurSel(m_UpstreamCtrl.GetCount()-1);\r
+ }\r
}\r
\r
void CRebaseDlg::OnCbnSelchangeBranch()\r
this->GetDlgItem(IDC_PICK_ALL)->EnableWindow(TRUE);\r
this->GetDlgItem(IDC_EDIT_ALL)->EnableWindow(TRUE);\r
this->GetDlgItem(IDC_SQUASH_ALL)->EnableWindow(TRUE);\r
- this->GetDlgItem(IDC_REBASE_COMBOXEX_BRANCH)->EnableWindow(TRUE);\r
- this->GetDlgItem(IDC_REBASE_COMBOXEX_UPSTREAM)->EnableWindow(TRUE);\r
+ if(!m_IsCherryPick)\r
+ {\r
+ this->GetDlgItem(IDC_REBASE_COMBOXEX_BRANCH)->EnableWindow(TRUE);\r
+ this->GetDlgItem(IDC_REBASE_COMBOXEX_UPSTREAM)->EnableWindow(TRUE);\r
+ }\r
//this->m_CommitList.m_IsEnableRebaseMenu=TRUE;\r
this->m_CommitList.m_ContextMenuMask |= m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_PICK)|\r
m_CommitList.GetContextMenuBit(CGitLogListBase::ID_REBASE_SQUASH)|\r
CString cmd,out;\r
if(m_OrigUpstreamHash.IsEmpty())\r
{\r
- this->OnCancel();\r
+ __super::OnCancel();\r
}\r
+ \r
+ if(m_RebaseStage == CHOOSE_BRANCH || m_RebaseStage== CHOOSE_COMMIT_PICK_MODE)\r
+ {\r
+ return;\r
+ }\r
+\r
if(CMessageBox::Show(NULL,_T("Are you sure abort rebase"),_T("TortoiseGit"),MB_YESNO) != IDYES)\r
return;\r
\r