return -1;\r
}\r
//Todo \r
- //git symbolic-ref HEAD > "$DOTEST"/head-name 2> /dev/null ||
+ //git symbolic-ref HEAD > "$DOTEST"/head-name 2> /dev/null ||\r
// echo "detached HEAD" > "$DOTEST"/head-name\r
\r
cmd.Format(_T("git.exe update-ref ORIG_HEAD HEAD"));\r
m_RebaseStage = REBASE_START;\r
}\r
\r
+ if( m_RebaseStage == REBASE_CONFLICT )\r
+ {\r
+ CTGitPathList list;\r
+ if(g_Git.ListConflictFile(list))\r
+ {\r
+ AddLogString(_T("Get conflict files fail"));\r
+ return ;\r
+ }\r
+ if( list.GetCount() != 0 )\r
+ {\r
+ CMessageBox::Show(NULL,_T("There are conflict file, you should mark it resolve"),_T("TortoiseGit"),MB_OK);\r
+ return;\r
+ }\r
+\r
+ GitRev *curRev=(GitRev*)m_CommitList.m_arShownList[m_CurrentRebaseIndex];\r
+\r
+ CString out =_T("");\r
+ CString cmd;\r
+ cmd.Format(_T("git.exe commit -C \"%s\""), curRev->m_CommitHash);\r
+ if(g_Git.Run(cmd,&out,CP_UTF8))\r
+ {\r
+ if(!g_Git.CheckCleanWorkTree())\r
+ {\r
+ CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return;\r
+ }\r
+ }\r
+ AddLogString(out);\r
+ this->m_ctrlTabCtrl.SetActiveTab(REBASE_TAB_LOG);\r
+ m_RebaseStage=REBASE_CONTINUE;\r
+ curRev->m_Action|=CTGitPath::LOGACTIONS_REBASE_DONE;\r
+ this->UpdateCurrentStatus();\r
+ }\r
+\r
InterlockedExchange(&m_bThreadRunning, TRUE);\r
SetControlEnable();\r
\r
curRev=(GitRev*)m_CommitList.m_arShownList[m_CurrentRebaseIndex];\r
}\r
\r
- if(m_CommitList.m_IsOldFirst)\r
- prevIndex=m_CurrentRebaseIndex-1;\r
- else\r
- prevIndex=m_CurrentRebaseIndex+1;\r
-\r
- if(prevIndex >= 0 && prevIndex<m_CommitList.m_arShownList.GetSize())\r
- {\r
- prevRev=(GitRev*)m_CommitList.m_arShownList[prevIndex];\r
- }\r
-\r
- if(prevRev)\r
- {\r
- prevRev->m_Action &= ~ CTGitPath::LOGACTIONS_REBASE_CURRENT;\r
- m_CommitList.GetItemRect(prevIndex,&rect,LVIR_BOUNDS);\r
- m_CommitList.InvalidateRect(rect);\r
+ for(int i=0;i<m_CommitList.m_arShownList.GetSize();i++)\r
+ {\r
+ prevRev=(GitRev*)m_CommitList.m_arShownList[i];\r
+ if(prevRev->m_Action & CTGitPath::LOGACTIONS_REBASE_CURRENT)\r
+ { \r
+ prevRev->m_Action &= ~ CTGitPath::LOGACTIONS_REBASE_CURRENT;\r
+ m_CommitList.GetItemRect(i,&rect,LVIR_BOUNDS);\r
+ m_CommitList.InvalidateRect(rect);\r
+ }\r
}\r
\r
if(curRev)\r
{\r
case CTGitPath::LOGACTIONS_REBASE_PICK:\r
AddLogString(CString(_T("Pick "))+pRev->m_CommitHash);\r
+ AddLogString(pRev->m_Subject);\r
cmd.Format(_T("git.exe cherry-pick %s"),pRev->m_CommitHash);\r
if(g_Git.Run(cmd,&out,CP_UTF8))\r
{\r
break;\r
}\r
m_RebaseStage = REBASE_CONTINUE;\r
- }\r
\r
- if( m_RebaseStage == REBASE_CONTINUE )\r
+ }else if( m_RebaseStage == REBASE_CONTINUE )\r
{\r
this->GoNext(); \r
if(IsEnd())\r
{ \r
break;\r
}\r
- }\r
+\r
+ }else\r
+ break;\r
this->PostMessage(MSG_REBASE_UPDATE_UI);\r
//this->UpdateCurrentStatus();\r
}\r
\r
void CRebaseDlg::ListConflictFile()\r
{\r
- this->m_FileListCtrl.DeleteAllItems(); \r
+ this->m_FileListCtrl.Clear(); \r
CTGitPathList list;\r
CTGitPath path;\r
list.AddPath(path);\r
\r
- this->m_FileListCtrl.GetStatus(list);\r
- this->m_FileListCtrl.Show(CTGitPath::LOGACTIONS_UNMERGED,CTGitPath::LOGACTIONS_UNMERGED);\r
+ this->m_FileListCtrl.GetStatus(list,true);\r
+ this->m_FileListCtrl.Show(CTGitPath::LOGACTIONS_UNMERGED|CTGitPath::LOGACTIONS_MODIFIED,CTGitPath::LOGACTIONS_UNMERGED);\r
if( this->m_FileListCtrl.GetItemCount() == 0 )\r
{\r
\r