#include "GitStatus.h"\r
#include "ILogReceiver.h"\r
#include "lanes.h"\r
-\r
+#include <set> \r
+#include "GitHash.h"\r
+#include "GitLogCache.h"\r
class CLogDlg;\r
\r
/**\r
* Instances of CStoreSelection save the selection of the CLogDlg. When the instance\r
* is deleted the destructor restores the selection.\r
*/\r
-typedef std::map<CString, int> MAP_HASH_REV;\r
+typedef std::map<CGitHash, int> MAP_HASH_REV;\r
\r
class CStoreSelection\r
{\r
std::set<LONG> m_SetSelectedRevisions;\r
};\r
\r
-/**\r
- * \ingroup TortoiseProc\r
- * Contains the data of one log entry, used in the log dialog\r
- */\r
-#if 0\r
-typedef struct LogEntryData\r
-{ \r
- git_revnum_t Rev;\r
- __time64_t tmDate;\r
- CString sDate;\r
- CString sAuthor;\r
- CString sMessage;\r
- CString sShortMessage;\r
- CString sBugIDs;\r
- DWORD dwFileChanges;\r
- LogChangedPathArray* pArChangedPaths;\r
- BOOL bCopies;\r
- BOOL bCopiedSelf;\r
- DWORD actions;\r
- BOOL haschildren;\r
- DWORD childStackDepth;\r
-} LOGENTRYDATA, *PLOGENTRYDATA;\r
-#endif\r
+\r
/**\r
* \ingroup TortoiseProc\r
* Helper class for the log dialog, handles all the log entries, including\r
* sorting.\r
*/\r
-class CLogDataVector : public std::vector<GitRev>\r
+class CLogDataVector : public std::vector<CGitHash>\r
{\r
public:\r
+ CLogCache *m_pLogCache;\r
/// De-allocates log items.\r
+ CLogDataVector(CLogCache *pLogCache)\r
+ {\r
+ m_pLogCache=pLogCache;\r
+ m_FirstFreeLane=0;\r
+ }\r
CLogDataVector()\r
{\r
+ m_pLogCache=NULL;\r
m_FirstFreeLane=0;\r
}\r
+ void SetLogCache(CLogCache *pLogCache)\r
+ {\r
+ m_pLogCache = pLogCache;\r
+ }\r
+ GitRev & GetGitRevAt(int i)\r
+ {\r
+ ASSERT(i<size());\r
+ return m_pLogCache->m_HashMap[(*this)[i]];\r
+ }\r
void ClearAll();\r
- int ParserFromLog();\r
- Lanes m_Lanes;\r
+ int ParserFromLog(CTGitPath *path =NULL,int count = -1,int infomask=CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE|CGit::LOG_INFO_SHOW_MERGEDFILE,\r
+ CString *from=NULL,CString *to=NULL);\r
+\r
+ int FetchShortLog(CTGitPath *path , CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH, int showWC=0 );\r
+ int ParserShortLog(CTGitPath *path ,CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH );\r
+\r
+ int ParserFromRefLog(CString ref);\r
+\r
+ int FetchFullInfo(int i);\r
+// void AddFullInfo(\r
+\r
+ Lanes m_Lns;\r
int m_FirstFreeLane;\r
MAP_HASH_REV m_HashMap;\r
- void updateLanes(GitRev& c, Lanes& lns, CString &sha) ;\r
- void setLane(CString& sha) ;\r
+ void updateLanes(GitRev& c, Lanes& lns, CGitHash &sha) ;\r
+ void setLane(CGitHash& sha) ;\r
\r
+ BYTE_VECTOR m_RawlogData;\r
+ std::vector<int> m_RawLogStart;\r
\r
#if 0\r
/// Ascending date sorting.\r