OSDN Git Service

Commit Combine: handle case "HEAD is not first one commit of list"
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitLogListAction.cpp
index c8fa97c..03c349e 100644 (file)
@@ -194,15 +194,18 @@ void CGitLogList::ContextMenuAction(int cmd,int FirstSelect, int LastSelect)
                {\r
                        CString head;\r
                        CString headhash;\r
-                       \r
-                       head.Format(_T("HEAD~%d"),FirstSelect);\r
-                       CString hashFirst=g_Git.GetHash(head);\r
+                       CString hashFirst,hashLast;\r
 \r
-                       head.Format(_T("HEAD~%d"),LastSelect);\r
-                       CString hashLast=g_Git.GetHash(head);\r
-                       \r
-                       headhash=g_Git.GetHash(CString(_T("HEAD")));\r
-                       \r
+                       int headindex=GetHeadIndex();\r
+                       if(headindex>=0) //incase show all branch, head is not the first commits. \r
+                       {\r
+                               head.Format(_T("HEAD~%d"),FirstSelect-headindex);\r
+                               hashFirst=g_Git.GetHash(head);\r
+\r
+                               head.Format(_T("HEAD~%d"),LastSelect-headindex);\r
+                               hashLast=g_Git.GetHash(head);\r
+                       }\r
+                                               \r
                        GitRev* pFirstEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(FirstSelect));\r
                        GitRev* pLastEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(LastSelect));\r
                        if(pFirstEntry->m_CommitHash != hashFirst || pLastEntry->m_CommitHash != hashLast)\r
@@ -213,6 +216,9 @@ void CGitLogList::ContextMenuAction(int cmd,int FirstSelect, int LastSelect)
                                        no filters are applied."),_T("TortoiseGit"),MB_OK);\r
                                break;\r
                        }\r
+                       \r
+                       headhash=g_Git.GetHash(CString(_T("HEAD")));\r
+                       \r
                        if(!g_Git.CheckCleanWorkTree())\r
                        {\r
                                CMessageBox::Show(NULL,_T("Combine needs a clean work tree"),_T("TortoiseGit"),MB_OK);\r