Try to enable show merged file
[TortoiseGit.git] / src / TortoiseProc / gitlogcache.h
blob9d8840e8c8768ad719e5a34fc09c9aca02ea3638
1 #pragma once
3 #include "Git.h"
4 #include "TGitPath.h"
5 #include "GitRev.h"
7 #define LOG_INDEX_MAGIC 0x88445566
8 #define LOG_DATA_MAGIC 0x99aa00FF
9 #define LOG_DATA_ITEM_MAGIC 0x0F8899CC
10 #define LOG_DATA_FILE_MAGIC 0x19999FFF
11 #define LOG_INDEX_VERSION 0x4
13 struct SLogCacheIndexHeader
15 DWORD m_Magic;
16 DWORD m_Version;
17 DWORD m_ItemCount;
20 struct SLogCacheItem
22 BYTE m_Hash[40];
23 ULONGLONG m_Offset;
26 struct SLogCacheRevFileHeader
28 DWORD m_Magic;
29 DWORD m_Version;
32 struct SLogCacheRevItemHeader
34 DWORD m_Magic;
35 DWORD m_Version;
36 DWORD m_FileCount;
39 #define INDEX_FILE_NAME _T("tortoisegit.index")
40 #define DATA_FILE_NAME _T("tortoisegit.data")
41 #define LOCK_FILE_NAME _T("tortoisegit.lock")
43 class CLogCache
45 protected:
46 CFile m_IndexFile;
47 CFile m_DataFile;
48 CFile m_LockFile;
50 BOOL CheckHeader(SLogCacheIndexHeader &header)
52 if(header.m_Magic != LOG_INDEX_MAGIC)
53 return FALSE;
55 if(header.m_Version != LOG_INDEX_VERSION)
56 return FALSE;
58 return TRUE;
61 BOOL CheckHeader(SLogCacheRevFileHeader &header)
63 if(header.m_Magic != LOG_DATA_MAGIC)
64 return FALSE;
66 if(header.m_Version != LOG_INDEX_VERSION)
67 return FALSE;
69 return TRUE;
72 BOOL CheckHeader(SLogCacheRevItemHeader &header)
74 if(header.m_Magic != LOG_DATA_ITEM_MAGIC)
75 return FALSE;
77 if(header.m_Version != LOG_INDEX_VERSION)
78 return FALSE;
80 return TRUE;
83 int SaveOneItem(GitRev &Rev,ULONGLONG offset);
84 int LoadOneItem(GitRev &Rev,ULONGLONG offset);
85 CString m_GitDir;
86 int RebuildCacheFile();
88 public:
89 CLogCache();
90 ~CLogCache();
91 int FetchCacheIndex(CString GitDir);
92 std::vector<GitRev> m_NewCacheEntry;
93 std::map<CString, ULONGLONG> m_HashMapIndex;
94 int GetCacheData(GitRev &Rev);
95 int AddCacheEntry(GitRev &Rev);
96 int SaveCache();