OSDN Git Service

RebaseDlg: Squash provide chance to modified last message.
authorFrank Li <lznuaa@gmail.com>
Thu, 19 Feb 2009 02:21:30 +0000 (10:21 +0800)
committerFrank Li <lznuaa@gmail.com>
Thu, 19 Feb 2009 02:21:30 +0000 (10:21 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/RebaseDlg.cpp
src/TortoiseProc/RebaseDlg.h

index 0faf90b..28f8d1b 100644 (file)
@@ -537,6 +537,14 @@ void CRebaseDlg::OnBnClickedContinue()
                if(VerifyNoConflict())\r
                        return;\r
                GitRev *curRev=(GitRev*)m_CommitList.m_arShownList[m_CurrentRebaseIndex];\r
+               if(this->CheckNextCommitIsSquash())\r
+               {//next commit is not squash;\r
+                       m_RebaseStage = REBASE_SQUASH_EDIT;\r
+                       this->OnRebaseUpdateUI(0,0);\r
+                       this->UpdateCurrentStatus();\r
+                       return ;\r
+\r
+               }\r
                m_RebaseStage=REBASE_CONTINUE;\r
                curRev->m_Action|=CTGitPath::LOGACTIONS_REBASE_DONE;\r
                this->UpdateCurrentStatus();\r
@@ -852,6 +860,18 @@ void CRebaseDlg::AddLogString(CString str)
        this->m_wndOutputRebase.SendMessage(SCI_SETREADONLY, TRUE);\r
 }\r
 \r
+int CRebaseDlg::GetCurrentCommitID()\r
+{\r
+       if(m_CommitList.m_IsOldFirst)\r
+       {\r
+               return this->m_CurrentRebaseIndex+1;\r
+\r
+       }else\r
+       {\r
+               return m_CommitList.GetItemCount()-m_CurrentRebaseIndex;\r
+       }\r
+}\r
+\r
 int CRebaseDlg::DoRebase()\r
 {      \r
        CString cmd,out;\r
@@ -882,7 +902,9 @@ int CRebaseDlg::DoRebase()
        if(mode == CTGitPath::LOGACTIONS_REBASE_SQUASH)\r
                nocommit=_T(" --no-commit ");\r
 \r
-       AddLogString(CTGitPath::GetActionName(mode)+_T(":")+pRev->m_CommitHash);\r
+       CString log;\r
+       log.Format(_T("%s %d:%s"),CTGitPath::GetActionName(mode),this->GetCurrentCommitID(),pRev->m_CommitHash);\r
+       AddLogString(log);\r
        AddLogString(pRev->m_Subject);\r
        cmd.Format(_T("git.exe cherry-pick %s %s"),nocommit,pRev->m_CommitHash);\r
 \r
@@ -1063,4 +1085,4 @@ void CRebaseDlg::OnBnClickedAbort()
                return ;\r
        }\r
        this->OnCancel();\r
-}
\ No newline at end of file
+}\r
index df77a2e..5d5d2ec 100644 (file)
@@ -84,6 +84,7 @@ protected:
        CString m_SquashMessage;\r
 \r
        int CheckNextCommitIsSquash();\r
+       int GetCurrentCommitID();\r
 \r
 public:\r
    \r