Signed-off-by: Frank Li <lznuaa@gmail.com>
if(status)\r
*status = q->queue[i]->status;\r
\r
if(status)\r
*status = q->queue[i]->status;\r
\r
- if(IsBin)\r
- *IsBin = p_Rev->diffstat.files[i]->is_binary;\r
- if(inc)\r
- *inc = p_Rev->diffstat.files[i]->added;\r
- if(dec)\r
- *dec = p_Rev->diffstat.files[i]->deleted;\r
+ if(p_Rev->diffstat.files)\r
+ {\r
+ int j;\r
+ for(j=0;j<p_Rev->diffstat.nr;j++)\r
+ {\r
+ if(strcmp(*newname,p_Rev->diffstat.files[j]->name)==0)\r
+ break;\r
+ }\r
+ if( j== p_Rev->diffstat.nr)\r
+ {\r
+ *IsBin=1;\r
+ *inc=0;\r
+ *dec=0;\r
+ return 0;\r
+ }\r
+ if(IsBin)\r
+ *IsBin = p_Rev->diffstat.files[j]->is_binary;\r
+ if(inc)\r
+ *inc = p_Rev->diffstat.files[j]->added;\r
+ if(dec)\r
+ *dec = p_Rev->diffstat.files[j]->deleted;\r
+ }else\r
+ {\r
+ *IsBin=1;\r
+ *inc=0;\r
+ *dec=0;\r
+ }\r
\r
return 0;\r
}
\ No newline at end of file
\r
return 0;\r
}
\ No newline at end of file
if(m_GitDiff)\r
return m_GitDiff;\r
else\r
if(m_GitDiff)\r
return m_GitDiff;\r
else\r
- git_open_diff(&m_GitDiff,"-C -M");\r
+ {\r
+ git_open_diff(&m_GitDiff,"-C -M -r");\r
+ return m_GitDiff;\r
+ }\r
}\r
\r
static BOOL CheckMsysGitDir();\r
}\r
\r
static BOOL CheckMsysGitDir();\r
InterlockedExchange(&m_IsFull,TRUE);\r
return 0;\r
#endif\r
InterlockedExchange(&m_IsFull,TRUE);\r
return 0;\r
#endif\r
+ this->m_Files.Clear();\r
git->CheckAndInitDll();\r
GIT_COMMIT commit;\r
GIT_COMMIT_LIST list;\r
git->CheckAndInitDll();\r
GIT_COMMIT commit;\r
GIT_COMMIT_LIST list;\r
\r
int i=0;\r
git_get_commit_first_parent(&commit,&list);\r
\r
int i=0;\r
git_get_commit_first_parent(&commit,&list);\r
- while(git_get_commit_next_parent(&list,parent))\r
+ while(git_get_commit_next_parent(&list,parent) == 0)\r
{\r
GIT_FILE file;\r
int count;\r
{\r
GIT_FILE file;\r
int count;\r
path.m_StatAdd.Format(_T("%d"),inc);\r
path.m_StatDel.Format(_T("%d"),dec);\r
}\r
path.m_StatAdd.Format(_T("%d"),inc);\r
path.m_StatDel.Format(_T("%d"),dec);\r
}\r
+ m_Files.AddPath(path);\r
}\r
git_diff_flush(git->GetGitDiff());\r
i++;\r
}\r
git_diff_flush(git->GetGitDiff());\r
i++;\r
GIT_HASH parent;\r
\r
git_get_commit_first_parent(commit,&list);\r
GIT_HASH parent;\r
\r
git_get_commit_first_parent(commit,&list);\r
- while(git_get_commit_next_parent(&list,parent))\r
+ while(git_get_commit_next_parent(&list,parent)==0)\r
{\r
m_ParentHash.push_back(CGitHash((char *)parent));\r
}\r
{\r
m_ParentHash.push_back(CGitHash((char *)parent));\r
}\r
{\r
this->m_logEntries.insert(m_logEntries.begin(),this->m_wcRev.m_CommitHash);\r
this->m_LogCache.m_HashMap[m_wcRev.m_CommitHash]=m_wcRev;\r
{\r
this->m_logEntries.insert(m_logEntries.begin(),this->m_wcRev.m_CommitHash);\r
this->m_LogCache.m_HashMap[m_wcRev.m_CommitHash]=m_wcRev;\r
- m_arShownList.Add(&m_wcRev);\r
}\r
\r
CString cmd=g_Git.GetLogCmd(m_StartRef,path,-1,mask,NULL,NULL,true);\r
}\r
\r
CString cmd=g_Git.GetLogCmd(m_StartRef,path,-1,mask,NULL,NULL,true);\r
latest=CTime(1971,1,2,0,0,0);\r
for(unsigned int i=0;i<m_logEntries.size();i++)\r
{\r
latest=CTime(1971,1,2,0,0,0);\r
for(unsigned int i=0;i<m_logEntries.size();i++)\r
{\r
+ if(m_logEntries[i].IsEmpty())\r
+ continue;\r
+\r
if(m_logEntries.GetGitRevAt(i).m_AuthorDate.GetTime() < oldest.GetTime())\r
oldest = m_logEntries.GetGitRevAt(i).m_AuthorDate.GetTime();\r
\r
if(m_logEntries.GetGitRevAt(i).m_AuthorDate.GetTime() < oldest.GetTime())\r
oldest = m_logEntries.GetGitRevAt(i).m_AuthorDate.GetTime();\r
\r
if( m_logEntries.size() > 0)\r
{\r
GitRev *pRev = &m_logEntries.GetGitRevAt(0);\r
if( m_logEntries.size() > 0)\r
{\r
GitRev *pRev = &m_logEntries.GetGitRevAt(0);\r
+ \r
+ m_arShownList.Add(pRev);\r
+\r
if( pRev->m_CommitHash.IsEmpty() )\r
{\r
pRev->m_Files.Clear();\r
if( pRev->m_CommitHash.IsEmpty() )\r
{\r
pRev->m_Files.Clear();\r
+ InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
+\r
git_get_log_firstcommit(m_DllGitLog);\r
GIT_COMMIT commit;\r
t1=GetTickCount();\r
git_get_log_firstcommit(m_DllGitLog);\r
GIT_COMMIT commit;\r
t1=GetTickCount();\r
pRev->ParserParentFromCommit(&commit);\r
}\r
\r
pRev->ParserParentFromCommit(&commit);\r
}\r
\r
+ m_arShownList.Add(pRev);\r
+\r
if(t2-t1>500 && m_logEntries.size()<(oldsize+100) )\r
{\r
//update UI\r
oldsize = m_logEntries.size();\r
if(t2-t1>500 && m_logEntries.size()<(oldsize+100) )\r
{\r
//update UI\r
oldsize = m_logEntries.size();\r
- //PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL);\r
- //::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) GITLOG_END,0);\r
+ PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL);\r
+ ::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) GITLOG_END,0);\r
} \r
}\r
\r
//Update UI;\r
} \r
}\r
\r
//Update UI;\r
- //PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL);\r
- //::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) GITLOG_END,0);\r
+ PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL);\r
+ ::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) GITLOG_END,0);\r
\r
InterlockedExchange(&m_bThreadRunning, FALSE);\r
\r
\r
InterlockedExchange(&m_bThreadRunning, FALSE);\r
\r
lns.changeActiveLane(sha); // uses previous isBoundary state\r
\r
lns.setBoundary(c.IsBoundary() == TRUE); // update must be here\r
lns.changeActiveLane(sha); // uses previous isBoundary state\r
\r
lns.setBoundary(c.IsBoundary() == TRUE); // update must be here\r
- TRACE(_T("%s %d"),c.m_CommitHash,c.IsBoundary());\r
+ TRACE(_T("%s %d"),c.m_CommitHash.ToString(),c.IsBoundary());\r
\r
if (isFork)\r
lns.setFork(sha);\r
\r
if (isFork)\r
lns.setFork(sha);\r
}else if( cur == GITLOG_END)\r
{\r
\r
}else if( cur == GITLOG_END)\r
{\r
\r
+ if(this->m_LogList.HasText())\r
+ {\r
+ this->m_LogList.ClearText();\r
+ UpdateLogInfoLabel();\r
+ }\r
+\r
//if (!m_bShowedAll)\r
DialogEnableWindow(IDC_SHOWWHOLEPROJECT, TRUE);\r
\r
//if (!m_bShowedAll)\r
DialogEnableWindow(IDC_SHOWWHOLEPROJECT, TRUE);\r
\r