Also fix Issue 41: Crash when diffing from log
Add copy status.
Add log cache version number to force refresh cache data, because cache data may be wrong if there are rename and copy
Signed-off-by: Frank Li <lznuaa@gmail.com>
// relative path\r
CString rename;\r
rename.Format(_T("(from %s)"),GitPath->GetGitOldPathString());\r
// relative path\r
CString rename;\r
rename.Format(_T("(from %s)"),GitPath->GetGitOldPathString());\r
- if(GitPath->m_Action & CTGitPath::LOGACTIONS_REPLACED)\r
+ if(GitPath->m_Action & (CTGitPath::LOGACTIONS_REPLACED|CTGitPath::LOGACTIONS_COPY))\r
entryname+=rename;\r
\r
InsertItem(index, entryname, icon_idx);\r
entryname+=rename;\r
\r
InsertItem(index, entryname, icon_idx);\r
{\r
int status=((CTGitPath*)m_arStatusArray[i])->m_Action;\r
\r
{\r
int status=((CTGitPath*)m_arStatusArray[i])->m_Action;\r
\r
- if(status&CTGitPath::LOGACTIONS_ADDED)\r
+ if(status&(CTGitPath::LOGACTIONS_ADDED|CTGitPath::LOGACTIONS_COPY))\r
m_nAdded++;\r
\r
if(status&CTGitPath::LOGACTIONS_DELETED)\r
m_nAdded++;\r
\r
if(status&CTGitPath::LOGACTIONS_DELETED)\r
\r
CTGitPath file1=*(CTGitPath*)GetItemData(fileindex);\r
CTGitPath file2;\r
\r
CTGitPath file1=*(CTGitPath*)GetItemData(fileindex);\r
CTGitPath file2;\r
- if(file1.m_Action & CTGitPath::LOGACTIONS_REPLACED)\r
+ if(file1.m_Action & (CTGitPath::LOGACTIONS_REPLACED|CTGitPath::LOGACTIONS_COPY))\r
{\r
file2.SetFromGit(file1.GetGitOldPathString());\r
}else\r
{\r
file2.SetFromGit(file1.GetGitOldPathString());\r
}else\r
{\r
crText = m_Colors.GetColor(CColors::Conflict);\r
\r
{\r
crText = m_Colors.GetColor(CColors::Conflict);\r
\r
- }else if(entry->m_Action & CTGitPath::LOGACTIONS_MODIFIED)\r
+ }else if(entry->m_Action & (CTGitPath::LOGACTIONS_MODIFIED))\r
{\r
crText = m_Colors.GetColor(CColors::Modified);\r
\r
{\r
crText = m_Colors.GetColor(CColors::Modified);\r
\r
- }else if(entry->m_Action & CTGitPath::LOGACTIONS_ADDED)\r
+ }else if(entry->m_Action & (CTGitPath::LOGACTIONS_ADDED|CTGitPath::LOGACTIONS_COPY))\r
{\r
crText = m_Colors.GetColor(CColors::Added);\r
}\r
{\r
crText = m_Colors.GetColor(CColors::Added);\r
}\r
\r
#define SVNSLC_SHOWUNVERSIONED CTGitPath::LOGACTIONS_UNVER\r
#define SVNSLC_SHOWNORMAL 0x000000000\r
\r
#define SVNSLC_SHOWUNVERSIONED CTGitPath::LOGACTIONS_UNVER\r
#define SVNSLC_SHOWNORMAL 0x000000000\r
-#define SVNSLC_SHOWMODIFIED CTGitPath::LOGACTIONS_MODIFIED\r
-#define SVNSLC_SHOWADDED CTGitPath::LOGACTIONS_ADDED\r
+#define SVNSLC_SHOWMODIFIED (CTGitPath::LOGACTIONS_MODIFIED)\r
+#define SVNSLC_SHOWADDED (CTGitPath::LOGACTIONS_ADDED|CTGitPath::LOGACTIONS_COPY)\r
#define SVNSLC_SHOWREMOVED CTGitPath::LOGACTIONS_DELETED\r
#define SVNSLC_SHOWCONFLICTED CTGitPath::LOGACTIONS_UNMERGED\r
#define SVNSLC_SHOWMISSING 0x00000000\r
#define SVNSLC_SHOWREMOVED CTGitPath::LOGACTIONS_DELETED\r
#define SVNSLC_SHOWCONFLICTED CTGitPath::LOGACTIONS_UNMERGED\r
#define SVNSLC_SHOWMISSING 0x00000000\r
m_Action|= LOGACTIONS_DELETED;\r
if(action == 'H')\r
m_Action|= LOGACTIONS_CACHE;\r
m_Action|= LOGACTIONS_DELETED;\r
if(action == 'H')\r
m_Action|= LOGACTIONS_CACHE;\r
+ if(action == 'C' )\r
+ m_Action|= LOGACTIONS_COPY;\r
+\r
return m_Action;\r
}\r
void CTGitPath::SetFromGit(const char* pPath)\r
return m_Action;\r
}\r
void CTGitPath::SetFromGit(const char* pPath)\r
sec++;\r
g_Git.StringAppend(&file1,&log[sec],CP_OEMCP);\r
}\r
sec++;\r
g_Git.StringAppend(&file1,&log[sec],CP_OEMCP);\r
}\r
return _T("Modified");\r
if(m_Action & CTGitPath::LOGACTIONS_REPLACED)\r
return _T("Rename");\r
return _T("Modified");\r
if(m_Action & CTGitPath::LOGACTIONS_REPLACED)\r
return _T("Rename");\r
+ if(m_Action & CTGitPath::LOGACTIONS_COPY)\r
+ return _T("Copy");\r
+\r
return _T("Unknown");\r
}\r
\r
return _T("Unknown");\r
}\r
\r
LOGACTIONS_DELETED = 0x00000008,\r
LOGACTIONS_UNMERGED = 0x00000010,\r
LOGACTIONS_CACHE = 0x00000020,\r
LOGACTIONS_DELETED = 0x00000008,\r
LOGACTIONS_UNMERGED = 0x00000010,\r
LOGACTIONS_CACHE = 0x00000020,\r
+ LOGACTIONS_COPY = 0x00000040,\r
LOGACTIONS_UNVER = 0x80000000,\r
LOGACTIONS_IGNORE = 0x40000000,\r
//LOGACTIONS_CONFLICT = 0x20000000,\r
LOGACTIONS_UNVER = 0x80000000,\r
LOGACTIONS_IGNORE = 0x40000000,\r
//LOGACTIONS_CONFLICT = 0x20000000,\r
#define LOG_DATA_MAGIC 0x99aa00FF\r
#define LOG_DATA_ITEM_MAGIC 0x0F8899CC\r
#define LOG_DATA_FILE_MAGIC 0x19999FFF\r
#define LOG_DATA_MAGIC 0x99aa00FF\r
#define LOG_DATA_ITEM_MAGIC 0x0F8899CC\r
#define LOG_DATA_FILE_MAGIC 0x19999FFF\r
-#define LOG_INDEX_VERSION 0x1\r
+#define LOG_INDEX_VERSION 0x2 \r
\r
struct SLogCacheIndexHeader \r
{\r
\r
struct SLogCacheIndexHeader \r
{\r