1 // TortoiseGit - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2003-2007 - TortoiseGit
\r
5 // This program is free software; you can redistribute it and/or
\r
6 // modify it under the terms of the GNU General Public License
\r
7 // as published by the Free Software Foundation; either version 2
\r
8 // of the License, or (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, write to the Free Software Foundation,
\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
22 #include "GitStatus.h"
\r
23 #include "ILogReceiver.h"
\r
30 * \ingroup TortoiseProc
\r
31 * Instances of CStoreSelection save the selection of the CLogDlg. When the instance
\r
32 * is deleted the destructor restores the selection.
\r
34 typedef std::map<CString, int> MAP_HASH_REV;
\r
36 class CStoreSelection
\r
39 CStoreSelection(CLogDlg* dlg);
\r
43 std::set<LONG> m_SetSelectedRevisions;
\r
48 * \ingroup TortoiseProc
\r
49 * Helper class for the log dialog, handles all the log entries, including
\r
52 class CLogDataVector : public std::vector<GitRev>
\r
55 /// De-allocates log items.
\r
61 int ParserFromLog(CTGitPath *path =NULL,int count = -1,int infomask=CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE|CGit::LOG_INFO_SHOW_MERGEDFILE,
\r
62 CString *from=NULL,CString *to=NULL);
\r
64 int FetchShortLog(CTGitPath *path , CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH, int showWC=0 );
\r
65 int ParserShortLog(CTGitPath *path ,CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH );
\r
67 int ParserFromRefLog(CString ref);
\r
69 int FetchFullInfo(int i);
\r
70 // void AddFullInfo(
\r
73 int m_FirstFreeLane;
\r
74 MAP_HASH_REV m_HashMap;
\r
75 void updateLanes(GitRev& c, Lanes& lns, CString &sha) ;
\r
76 void setLane(CString& sha) ;
\r
78 BYTE_VECTOR m_RawlogData;
\r
79 std::vector<int> m_RawLogStart;
\r
82 /// Ascending date sorting.
\r
85 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
87 return pStart->tmDate < pEnd->tmDate;
\r
90 /// Descending date sorting.
\r
93 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
95 return pStart->tmDate > pEnd->tmDate;
\r
98 /// Ascending revision sorting.
\r
101 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
103 return pStart->Rev < pEnd->Rev;
\r
106 /// Descending revision sorting.
\r
109 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
111 return pStart->Rev > pEnd->Rev;
\r
114 /// Ascending author sorting.
\r
115 struct AscAuthorSort
\r
117 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
119 int ret = pStart->sAuthor.CompareNoCase(pEnd->sAuthor);
\r
121 return pStart->Rev < pEnd->Rev;
\r
125 /// Descending author sorting.
\r
126 struct DescAuthorSort
\r
128 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
130 int ret = pStart->sAuthor.CompareNoCase(pEnd->sAuthor);
\r
132 return pStart->Rev > pEnd->Rev;
\r
136 /// Ascending bugID sorting.
\r
137 struct AscBugIDSort
\r
139 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
141 int ret = pStart->sBugIDs.CompareNoCase(pEnd->sBugIDs);
\r
143 return pStart->Rev < pEnd->Rev;
\r
147 /// Descending bugID sorting.
\r
148 struct DescBugIDSort
\r
150 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
152 int ret = pStart->sBugIDs.CompareNoCase(pEnd->sBugIDs);
\r
154 return pStart->Rev > pEnd->Rev;
\r
158 /// Ascending message sorting.
\r
159 struct AscMessageSort
\r
161 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
163 return pStart->sShortMessage.CompareNoCase(pEnd->sShortMessage)<0;
\r
166 /// Descending message sorting.
\r
167 struct DescMessageSort
\r
169 bool operator()(GitRev& pStart, GitRev& pEnd)
\r
171 return pStart->sShortMessage.CompareNoCase(pEnd->sShortMessage)>0;
\r
174 /// Ascending action sorting
\r
175 struct AscActionSort
\r
177 bool operator() (GitRev& pStart, GitRev& pEnd)
\r
179 if (pStart->actions == pEnd->actions)
\r
180 return pStart->Rev < pEnd->Rev;
\r
181 return pStart->actions < pEnd->actions;
\r
184 /// Descending action sorting
\r
185 struct DescActionSort
\r
187 bool operator() (GitRev& pStart, GitRev& pEnd)
\r
189 if (pStart->actions == pEnd->actions)
\r
190 return pStart->Rev > pEnd->Rev;
\r
191 return pStart->actions > pEnd->actions;
\r