#include "Git.h"\r
#include "atlconv.h"\r
#include "afx.h"\r
+#include "GitRev.h"\r
\r
#define MAX_DIRBUFFER 1000\r
CGit g_Git;\r
return GIT_ERROR_CREATE_PROCESS;\r
}\r
\r
+ CloseHandle(hWrite);\r
+\r
DWORD readnumber;\r
while(ReadFile(hRead,buffer,4090,&readnumber,NULL))\r
{\r
buffer[readnumber]=0;\r
USES_CONVERSION;\r
output->Append(A2W(buffer));\r
- if(readnumber<4090)\r
- break;\r
}\r
\r
\r
CloseHandle(pi.hThread);\r
CloseHandle(pi.hProcess);\r
- CloseHandle(hWrite);\r
+\r
CloseHandle(hRead);\r
return GIT_SUCCESS;\r
}\r
}\r
return CString("");\r
}\r
+\r
+int CGit::GetLog(CString& logOut)\r
+{\r
+\r
+ CString cmd;\r
+ CString log;\r
+ cmd=("git.cmd log -C --numstat --pretty=format:\"");\r
+ log.Format(_T("#<%c>%%n"),LOG_REV_ITEM_BEGIN);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%an%%n"),LOG_REV_AUTHOR_NAME);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%ae%%n"),LOG_REV_AUTHOR_EMAIL);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%ai%%n"),LOG_REV_AUTHOR_DATE);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%cn%%n"),LOG_REV_COMMIT_NAME);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%ce%%n"),LOG_REV_COMMIT_EMAIL);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%ci%%n"),LOG_REV_COMMIT_DATE);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%s%%n"),LOG_REV_COMMIT_SUBJECT);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%b%%n"),LOG_REV_COMMIT_BODY);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%H%%n"),LOG_REV_COMMIT_HASH);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%P%%n"),LOG_REV_COMMIT_PARENT);\r
+ cmd += log;\r
+ log.Format(_T("#<%c>%%n"),LOG_REV_COMMIT_FILE);\r
+ cmd += log;\r
+ cmd += CString(_T("\""));\r
+ Run(cmd,&logOut);\r
+ return 0;\r
+}\r
CString GetUserEmail(void);\r
CString GetCurrentBranch(void);\r
CString m_CurrentDir;\r
+ int GetLog(CString& logOut);\r
};\r
\r
extern CGit g_Git;
\ No newline at end of file
>\r
</File>\r
<File\r
- RelativePath=".\resource.h"\r
- >\r
- </File>\r
- <File\r
RelativePath=".\stdafx.h"\r
>\r
</File>\r
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
>\r
- <File\r
- RelativePath=".\Git.rc"\r
- >\r
- </File>\r
</Filter>\r
<File\r
RelativePath=".\ReadMe.txt"\r
#include "StdAfx.h"\r
#include "GitRev.h"\r
\r
+\r
GitRev::GitRev(void)\r
{\r
}\r
GitRev::~GitRev(void)\r
{\r
}\r
+\r
+#if 0\r
+GitRev::GitRev(GitRev & rev)\r
+{\r
+}\r
+GitRev& GitRev::operator=(GitRev &rev)\r
+{\r
+ return *this;\r
+}\r
+#endif\r
+int GitRev::ParserFromLog(CString &log)\r
+{\r
+ int pos=0;\r
+ CString one;\r
+ CString key;\r
+ CString text;\r
+ TCHAR mode;\r
+ CTGitPath path;\r
+ this->m_Files.Clear();\r
+\r
+ while( pos>=0 )\r
+ {\r
+ one=log.Tokenize(_T("\n"),pos);\r
+ if(one[0]==_T('#') && one[1] == _T('<') && one[3] == _T('>'))\r
+ {\r
+ text = one.Right(one.GetLength()-4);\r
+ mode = one[2];\r
+ switch(mode)\r
+ {\r
+ case LOG_REV_AUTHOR_NAME:\r
+ this->m_AuthorName = text;\r
+ break;\r
+ case LOG_REV_AUTHOR_EMAIL:\r
+ this->m_AuthorEmail = text;\r
+ break;\r
+ case LOG_REV_AUTHOR_DATE:\r
+ this->m_AuthorDate =ConverFromString(text);\r
+ break;\r
+ case LOG_REV_COMMIT_NAME:\r
+ this->m_CommitterName = text;\r
+ break;\r
+ case LOG_REV_COMMIT_EMAIL:\r
+ this->m_CommitterEmail = text;\r
+ break;\r
+ case LOG_REV_COMMIT_DATE:\r
+ this->m_CommitterDate =ConverFromString(text);\r
+ break;\r
+ case LOG_REV_COMMIT_SUBJECT:\r
+ this->m_Subject = text;\r
+ break;\r
+ case LOG_REV_COMMIT_BODY:\r
+ this->m_Body = text;\r
+ break;\r
+ case LOG_REV_COMMIT_HASH:\r
+ this->m_CommitHash = text;\r
+ break;\r
+ case LOG_REV_COMMIT_PARENT:\r
+ this->m_ParentHash.insert(this->m_ParentHash.end(),text);\r
+ break;\r
+ case LOG_REV_COMMIT_FILE:\r
+ break;\r
+ }\r
+ }else\r
+ {\r
+ switch(mode)\r
+ {\r
+ case LOG_REV_COMMIT_BODY:\r
+ this->m_Subject += one;\r
+ break;\r
+ case LOG_REV_COMMIT_FILE:\r
+ if(one[0]==_T(':'))\r
+ {\r
+ \r
+ }else\r
+ {\r
+ int tabstart=0;\r
+ \r
+ path.m_StatAdd=_wtoi(one.Tokenize(_T("\t"),tabstart));\r
+ if( tabstart< 0)\r
+ break;\r
+// tabstart+=1;\r
+ path.m_StatDel=_wtoi(one.Tokenize(_T("\t"),tabstart));\r
+// tabstart++;\r
+ path.SetFromGit(one.Right(one.GetLength()-tabstart));\r
+ \r
+ this->m_Files.AddPath(path);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return 0;\r
+}\r
+\r
+CTime GitRev::ConverFromString(CString input)\r
+{\r
+ CTime tm(_wtoi(input.Mid(0,4)),\r
+ _wtoi(input.Mid(5,2)),\r
+ _wtoi(input.Mid(8,2)),\r
+ _wtoi(input.Mid(11,2)),\r
+ _wtoi(input.Mid(14,2)),\r
+ _wtoi(input.Mid(17,2)),\r
+ _wtoi(input.Mid(20,4)));\r
+ return tm;\r
+}\r
#pragma once\r
+#include "GitStatus.h"\r
+#include "AtlTime.h"\r
+\r
+typedef std::vector<git_revnum_t> GIT_REV_LIST;\r
+\r
+#define LOG_REV_AUTHOR_NAME _T('0')\r
+#define LOG_REV_AUTHOR_EMAIL _T('1')\r
+#define LOG_REV_AUTHOR_DATE _T('2')\r
+#define LOG_REV_COMMIT_NAME _T('3')\r
+#define LOG_REV_COMMIT_EMAIL _T('4')\r
+#define LOG_REV_COMMIT_DATE _T('5')\r
+#define LOG_REV_COMMIT_SUBJECT _T('6')\r
+#define LOG_REV_COMMIT_BODY _T('7')\r
+#define LOG_REV_COMMIT_HASH _T('8')\r
+#define LOG_REV_COMMIT_PARENT _T('9')\r
+#define LOG_REV_COMMIT_FILE _T('A')\r
+#define LOG_REV_ITEM_BEGIN _T('B')\r
+#define LOG_REV_ITEM_END _T('C')\r
+\r
\r
class GitRev\r
{\r
public:\r
GitRev(void);\r
- GitRev(GitRev &rev);\r
+// GitRev(GitRev &rev);\r
+// GitRev &operator=(GitRev &rev);\r
~GitRev(void);\r
enum\r
{\r
REV_UNSPECIFIED = -4, ///< unspecified revision\r
};\r
\r
+ CString m_AuthorName;\r
+ CString m_AuthorEmail;\r
+ CTime m_AuthorDate;\r
+ CString m_CommitterName;\r
+ CString m_CommitterEmail;\r
+ CTime m_CommitterDate;\r
+ CString m_Subject;\r
+ CString m_Body;\r
+ git_revnum_t m_CommitHash;\r
+ GIT_REV_LIST m_ParentHash;\r
+ CTGitPathList m_Files;\r
+\r
+ int ParserFromLog(CString &log);\r
+ CTime ConverFromString(CString input);\r
};\r
~CTGitPath(void);\r
CTGitPath(const CString& sUnknownPath);\r
public:\r
+ int m_StatAdd;\r
+ int m_StatDel;\r
+\r
/**\r
* Set the path as an UTF8 string with forward slashes\r
*/\r
void SanitizeRootPath(CString& sPath, bool bIsForwardPath) const;\r
\r
void UpdateAttributes() const;\r
+ \r
+\r
\r
private:\r
mutable CString m_sBackslashPath;\r
\r
#include "AboutCommand.h"\r
#include "CommitCommand.h"\r
+#include "LogCommand.h"\r
#if 0\r
#include "AddCommand.h"\r
#include "BlameCommand.h"\r
#include "IgnoreCommand.h"\r
#include "ImportCommand.h"\r
#include "LockCommand.h"\r
-#include "LogCommand.h"\r
+\r
#include "MergeCommand.h"\r
#include "MergeAllCommand.h"\r
#include "PasteCopyCommand.h"\r
return new AboutCommand; \r
case cmdCommit:\r
return new CommitCommand;\r
+ case cmdLog:\r
+ return new LogCommand;\r
#if 0\r
case cmdAdd:\r
return new AddCommand;\r
return new ImportCommand;\r
case cmdLock:\r
return new LockCommand;\r
- case cmdLog:\r
- return new LogCommand;\r
+\r
case cmdMerge:\r
return new MergeCommand;\r
case cmdMergeAll:\r
Column.fmt = LVCFMT_RIGHT;\r
m_LogList.SetColumn(0, &Column); \r
\r
+// CString log;\r
+// g_Git.GetLog(log);\r
+\r
temp.LoadString(IDS_LOG_ACTIONS);\r
m_LogList.InsertColumn(1, temp);\r
temp.LoadString(IDS_LOG_AUTHOR);\r
// we fill here the log message rich edit control,\r
// and also populate the changed files list control\r
// according to the selected revision(s).\r
-\r
+#if 0\r
CWnd * pMsgView = GetDlgItem(IDC_MSGVIEW);\r
// empty the log message view\r
pMsgView->SetWindowText(_T(" "));\r
else\r
SetSortArrow(&m_ChangedFileListCtrl, -1, false);\r
m_ChangedFileListCtrl.SetRedraw(TRUE);\r
+#endif\r
}\r
\r
void CLogDlg::OnBnClickedGetall()\r
return ((CLogDlg*)pVoid)->LogThread();\r
}\r
\r
-\r
+GitRev g_rev;\r
//this is the thread function which calls the subversion function\r
UINT CLogDlg::LogThread()\r
{\r
-#if 0\r
+\r
InterlockedExchange(&m_bThreadRunning, TRUE);\r
\r
//does the user force the cache to refresh (shift or control key down)?\r
m_LogProgress.SetRange32(0, 100);\r
m_LogProgress.SetPos(0);\r
GetDlgItem(IDC_PROGRESS)->ShowWindow(TRUE);\r
- git_revnum_t r = -1;\r
+// git_revnum_t r = -1;\r
\r
// get the repository root url, because the changed-files-list has the\r
// paths shown there relative to the repository root.\r
- CTGitPath rootpath;\r
- BOOL succeeded = GetRootAndHead(m_path, rootpath, r);\r
+// CTGitPath rootpath;\r
+// BOOL succeeded = GetRootAndHead(m_path, rootpath, r);\r
\r
- m_sRepositoryRoot = rootpath.GetGitPathString();\r
- m_sURL = m_path.GetGitPathString();\r
+// m_sRepositoryRoot = rootpath.GetGitPathString();\r
+// m_sURL = m_path.GetGitPathString();\r
\r
// we need the UUID to unambigously identify the log cache\r
- if (logCachePool.IsEnabled())\r
- m_sUUID = logCachePool.GetRepositoryInfo().GetRepositoryUUID (rootpath);\r
+// if (logCachePool.IsEnabled())\r
+// m_sUUID = logCachePool.GetRepositoryInfo().GetRepositoryUUID (rootpath);\r
\r
// if the log dialog is started from a working copy, we need to turn that\r
// local path into an url here\r
- if (succeeded)\r
- {\r
- if (!m_path.IsUrl())\r
- {\r
- m_sURL = GetURLFromPath(m_path);\r
+// if (succeeded)\r
+// {\r
+// if (!m_path.IsUrl())\r
+// {\r
+// m_sURL = GetURLFromPath(m_path);\r
\r
// The URL is escaped because Git::logReceiver\r
// returns the path in a native format\r
- m_sURL = CPathUtils::PathUnescape(m_sURL);\r
- }\r
- m_sRelativeRoot = m_sURL.Mid(CPathUtils::PathUnescape(m_sRepositoryRoot).GetLength());\r
- m_sSelfRelativeURL = m_sRelativeRoot;\r
- }\r
-\r
+// m_sURL = CPathUtils::PathUnescape(m_sURL);\r
+ // }\r
+// m_sRelativeRoot = m_sURL.Mid(CPathUtils::PathUnescape(m_sRepositoryRoot).GetLength());\r
+// m_sSelfRelativeURL = m_sRelativeRoot;\r
+ // }\r
+#if 0\r
if (succeeded && !m_mergePath.IsEmpty() && m_mergedRevs.empty())\r
{\r
// in case we got a merge path set, retrieve the merge info\r
m_DateTo.SetRange(&m_timFrom, &m_timTo);\r
m_DateFrom.SetTime(&m_timFrom);\r
m_DateTo.SetTime(&m_timTo);\r
-\r
+#endif\r
DialogEnableWindow(IDC_GETALL, TRUE);\r
+ m_LogList.ClearText();\r
+\r
+ this->m_logEntries.ClearAll();\r
+ this->m_logEntries.ParserFromLog();\r
+ m_LogList.SetItemCountEx(this->m_logEntries.size());\r
\r
+ this->m_arShownList.Add(&g_rev);\r
+ g_rev.m_AuthorName.Append(_T("Frank Li"));\r
+ \r
+#if 0 \r
if (!m_bShowedAll)\r
DialogEnableWindow(IDC_NEXTHUNDRED, TRUE);\r
+#endif\r
DialogEnableWindow(IDC_CHECK_STOPONCOPY, TRUE);\r
DialogEnableWindow(IDC_INCLUDEMERGE, TRUE);\r
DialogEnableWindow(IDC_STATBUTTON, TRUE);\r
DialogEnableWindow(IDC_REFRESH, TRUE);\r
\r
+#if 0\r
LogCache::CRepositoryInfo& cachedProperties = logCachePool.GetRepositoryInfo();\r
SetDlgTitle(cachedProperties.IsOffline (m_sUUID, m_sRepositoryRoot, false));\r
\r
GetDlgItem(IDC_PROGRESS)->ShowWindow(FALSE);\r
m_bCancelled = true;\r
+#endif\r
InterlockedExchange(&m_bThreadRunning, FALSE);\r
m_LogList.RedrawItems(0, m_arShownList.GetCount());\r
m_LogList.SetRedraw(false);\r
m_LogList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);\r
}\r
}\r
+\r
if (!GetDlgItem(IDOK)->IsWindowVisible())\r
{\r
temp.LoadString(IDS_MSGBOX_OK);\r
SetDlgItemText(IDCANCEL, temp);\r
}\r
+\r
RefreshCursor();\r
// make sure the filter is applied (if any) now, after we refreshed/fetched\r
// the log messages\r
PostMessage(WM_TIMER, LOGFILTER_TIMER);\r
-#endif\r
+\r
return 0;\r
}\r
\r
\r
void CLogDlg::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
{\r
-#if 0\r
+\r
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );\r
// Take the default processing unless we set this to something else below.\r
*pResult = CDRF_DODEFAULT;\r
\r
if (m_arShownList.GetCount() > (INT_PTR)pLVCD->nmcd.dwItemSpec)\r
{\r
- PLOGENTRYDATA data = (PLOGENTRYDATA)m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec);\r
+ GitRev* data = (GitRev*)m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec);\r
if (data)\r
{\r
+#if 0\r
if (data->bCopiedSelf)\r
{\r
// only change the background color if the item is not 'hot' (on vista with themes enabled)\r
if (!theme.IsAppThemed() || !m_bVista || ((pLVCD->nmcd.uItemState & CDIS_HOT)==0))\r
pLVCD->clrTextBk = GetSysColor(COLOR_MENU);\r
}\r
+\r
if (data->bCopies)\r
crText = m_Colors.GetColor(CColors::Modified);\r
- if ((data->childStackDepth)||(m_mergedRevs.find(data->Rev) != m_mergedRevs.end()))\r
- crText = GetSysColor(COLOR_GRAYTEXT);\r
- if (data->Rev == m_wcRev)\r
- {\r
- SelectObject(pLVCD->nmcd.hdc, m_boldFont);\r
+#endif\r
+// if ((data->childStackDepth)||(m_mergedRevs.find(data->Rev) != m_mergedRevs.end()))\r
+// crText = GetSysColor(COLOR_GRAYTEXT);\r
+// if (data->Rev == m_wcRev)\r
+// {\r
+// SelectObject(pLVCD->nmcd.hdc, m_boldFont);\r
// We changed the font, so we're returning CDRF_NEWFONT. This\r
// tells the control to recalculate the extent of the text.\r
- *pResult = CDRF_NOTIFYSUBITEMDRAW | CDRF_NEWFONT;\r
- }\r
+// *pResult = CDRF_NOTIFYSUBITEMDRAW | CDRF_NEWFONT;\r
+// }\r
}\r
}\r
if (m_arShownList.GetCount() == (INT_PTR)pLVCD->nmcd.dwItemSpec)\r
int iconwidth = ::GetSystemMetrics(SM_CXSMICON);\r
int iconheight = ::GetSystemMetrics(SM_CYSMICON);\r
\r
- PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec));\r
+ GitRev* pLogEntry = reinterpret_cast<GitRev *>(m_arShownList.GetAt(pLVCD->nmcd.dwItemSpec));\r
\r
// Get the selected state of the\r
// item being drawn.\r
}\r
else\r
{\r
+#if 0\r
if (pLogEntry->bCopiedSelf)\r
{\r
// unfortunately, the pLVCD->nmcd.uItemState does not contain valid\r
}\r
}\r
}\r
+#endif\r
}\r
\r
if (theme.IsBackgroundPartiallyTransparent(LVP_LISTDETAIL, state))\r
}\r
else\r
{\r
- if (pLogEntry->bCopiedSelf)\r
- brush = ::CreateSolidBrush(::GetSysColor(COLOR_MENU));\r
- else\r
+ //if (pLogEntry->bCopiedSelf)\r
+ // brush = ::CreateSolidBrush(::GetSysColor(COLOR_MENU));\r
+ //else\r
brush = ::CreateSolidBrush(::GetSysColor(COLOR_WINDOW));\r
}\r
if (brush == NULL)\r
::FillRect(pLVCD->nmcd.hdc, &rect, brush);\r
::DeleteObject(brush);\r
}\r
-\r
+#if 0\r
// Draw the icon(s) into the compatible DC\r
if (pLogEntry->actions & LOGACTIONS_MODIFIED)\r
::DrawIconEx(pLVCD->nmcd.hdc, rect.left + ICONITEMBORDER, rect.top, m_hModifiedIcon, iconwidth, iconheight, 0, NULL, DI_NORMAL);\r
if (pLogEntry->actions & LOGACTIONS_REPLACED)\r
::DrawIconEx(pLVCD->nmcd.hdc, rect.left+nIcons*iconwidth + ICONITEMBORDER, rect.top, m_hReplacedIcon, iconwidth, iconheight, 0, NULL, DI_NORMAL);\r
nIcons++;\r
-\r
+#endif\r
*pResult = CDRF_SKIPDEFAULT;\r
return;\r
}\r
break;\r
}\r
*pResult = CDRF_DODEFAULT;\r
-#endif\r
+\r
}\r
void CLogDlg::OnNMCustomdrawChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)\r
{\r
\r
LRESULT CLogDlg::OnClickedCancelFilter(WPARAM /*wParam*/, LPARAM /*lParam*/)\r
{\r
+#if 0\r
KillTimer(LOGFILTER_TIMER);\r
\r
m_sFilterText.Empty();\r
GetDlgItem(IDC_SEARCHEDIT)->ShowWindow(SW_SHOW);\r
GetDlgItem(IDC_SEARCHEDIT)->SetFocus();\r
UpdateLogInfoLabel();\r
+#endif\r
return 0L; \r
}\r
\r
\r
// Which item number?\r
int itemid = pItem->iItem;\r
- PLOGENTRYDATA pLogEntry = NULL;\r
+ GitRev * pLogEntry = NULL;\r
if (itemid < m_arShownList.GetCount())\r
- pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(pItem->iItem));\r
+ pLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(pItem->iItem));\r
\r
// Which column?\r
switch (pItem->iSubItem)\r
case 0: //revision\r
if (pLogEntry)\r
{\r
+#if 0\r
_stprintf_s(pItem->pszText, pItem->cchTextMax, _T("%ld"), pLogEntry->Rev);\r
// to make the child entries indented, add spaces\r
size_t len = _tcslen(pItem->pszText);\r
nSpaces--;\r
}\r
*pBuf = 0;\r
+#endif\r
}\r
break;\r
case 1: //action -- no text in the column\r
break;\r
case 2: //author\r
if (pLogEntry)\r
- lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->sAuthor, pItem->cchTextMax);\r
+ lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->m_AuthorName, pItem->cchTextMax);\r
break;\r
case 3: //date\r
+#if 0\r
if (pLogEntry)\r
lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->sDate, pItem->cchTextMax);\r
break;\r
+#endif\r
case 4: //message or bug id\r
+#if 0\r
if (m_bShowBugtraqColumn)\r
{\r
if (pLogEntry)\r
lstrcpyn(pItem->pszText, (LPCTSTR)pLogEntry->sBugIDs, pItem->cchTextMax);\r
break;\r
}\r
+#endif\r
// fall through here!\r
case 5:\r
+#if 0\r
if (pLogEntry)\r
{\r
// Add as many characters as possible from the short log message\r
sTemp.LoadString(IDS_LOG_STOPONCOPY_HINT);\r
lstrcpyn(pItem->pszText, sTemp, pItem->cchTextMax);\r
}\r
+#endif\r
break;\r
default:\r
ASSERT(false);\r
\r
void CLogDlg::OnEnChangeSearchedit()\r
{\r
+#if 0\r
UpdateData();\r
if (m_sFilterText.IsEmpty())\r
{\r
SetTimer(LOGFILTER_TIMER, 1000, NULL);\r
else\r
KillTimer(LOGFILTER_TIMER);\r
+#endif\r
}\r
\r
bool CLogDlg::ValidateRegexp(LPCTSTR regexp_str, tr1::wregex& pat, bool bMatchCase /* = false */)\r
\r
BOOL CLogDlg::IsEntryInDateRange(int i)\r
{\r
+#if 0\r
__time64_t time = m_logEntries[i]->tmDate;\r
if ((time >= m_tFrom)&&(time <= m_tTo))\r
return TRUE;\r
+#endif\r
return FALSE;\r
+\r
}\r
\r
CTGitPathList CLogDlg::GetChangedPathsFromSelectedRevisions(bool bRelativePaths /* = false */, bool bUseFilter /* = true */)\r
\r
void CLogDlg::SortByColumn(int nSortColumn, bool bAscending)\r
{\r
+#if 0\r
switch(nSortColumn)\r
{\r
case 0: // Revision\r
ATLASSERT(0);\r
break;\r
}\r
+#endif\r
}\r
\r
void CLogDlg::OnLvnColumnclick(NMHDR *pNMHDR, LRESULT *pResult)\r
return;\r
if (pFindInfo->lvfi.psz == 0)\r
return;\r
- \r
+#if 0\r
CString sCmp = pFindInfo->lvfi.psz;\r
CString sRev; \r
for (int i=pFindInfo->iStart; i<m_arShownList.GetCount(); ++i)\r
{\r
- PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(i));\r
+ GitRev * pLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(i));\r
sRev.Format(_T("%ld"), pLogEntry->Rev);\r
if (pFindInfo->lvfi.flags & LVFI_PARTIAL)\r
{\r
}\r
}\r
}\r
-\r
+#endif\r
*pResult = -1;\r
}\r
\r
\r
void CLogDlg::UpdateLogInfoLabel()\r
{\r
+#if 0\r
git_revnum_t rev1 = 0;\r
git_revnum_t rev2 = 0;\r
long selectedrevs = 0;\r
CString sTemp;\r
sTemp.Format(IDS_LOG_LOGINFOSTRING, m_arShownList.GetCount(), rev2, rev1, selectedrevs);\r
m_sLogInfo = sTemp;\r
+#endif\r
UpdateData(FALSE);\r
}\r
\r
}\r
return url;\r
}\r
+\r
+\r
+int CLogDataVector::ParserFromLog()\r
+{\r
+ CString log;\r
+ GitRev rev;\r
+ g_Git.GetLog(log);\r
+\r
+ CString begin;\r
+ begin.Format(_T("#<%c>"),LOG_REV_ITEM_BEGIN);\r
+ \r
+ if(log.GetLength()==0)\r
+ return 0;\r
+ \r
+ int start=4;\r
+ int length;\r
+ int next =1;\r
+ while( next>0 )\r
+ {\r
+ next=log.Find(begin,start);\r
+ if(next >0 )\r
+ length = next - start+4;\r
+ else\r
+ length = log.GetLength()-start+4;\r
+\r
+ CString onelog =log;\r
+ onelog=log.Mid(start -4,length);\r
+ rev.ParserFromLog(onelog);\r
+ this->push_back(rev);\r
+ start = next +4;\r
+ }\r
+\r
+ return 0;\r
+}\r
\r
void CLogDataVector::ClearAll()\r
{\r
+#if 0\r
if(size() > 0)\r
{\r
for(iterator it=begin(); it!=end(); ++it)\r
} \r
clear();\r
}\r
+#endif\r
}
\ No newline at end of file
//\r
#pragma once\r
#include "Git.h"\r
+#include "GitRev.h"\r
#include "GitStatus.h"\r
#include "ILogReceiver.h"\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
BOOL haschildren;\r
DWORD childStackDepth;\r
} LOGENTRYDATA, *PLOGENTRYDATA;\r
-\r
+#endif\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<PLOGENTRYDATA>\r
+class CLogDataVector : public std::vector<GitRev>\r
{\r
public:\r
/// De-allocates log items.\r
void ClearAll();\r
-\r
+ int ParserFromLog();\r
+#if 0\r
/// Ascending date sorting.\r
struct AscDateSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->tmDate < pEnd->tmDate;\r
}\r
/// Descending date sorting.\r
struct DescDateSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->tmDate > pEnd->tmDate;\r
}\r
/// Ascending revision sorting.\r
struct AscRevSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->Rev < pEnd->Rev;\r
}\r
/// Descending revision sorting.\r
struct DescRevSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->Rev > pEnd->Rev;\r
}\r
/// Ascending author sorting.\r
struct AscAuthorSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
int ret = pStart->sAuthor.CompareNoCase(pEnd->sAuthor);\r
if (ret == 0)\r
/// Descending author sorting.\r
struct DescAuthorSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
int ret = pStart->sAuthor.CompareNoCase(pEnd->sAuthor);\r
if (ret == 0)\r
/// Ascending bugID sorting.\r
struct AscBugIDSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
int ret = pStart->sBugIDs.CompareNoCase(pEnd->sBugIDs);\r
if (ret == 0)\r
/// Descending bugID sorting.\r
struct DescBugIDSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
int ret = pStart->sBugIDs.CompareNoCase(pEnd->sBugIDs);\r
if (ret == 0)\r
/// Ascending message sorting.\r
struct AscMessageSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->sShortMessage.CompareNoCase(pEnd->sShortMessage)<0;\r
}\r
/// Descending message sorting.\r
struct DescMessageSort\r
{\r
- bool operator()(PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator()(GitRev& pStart, GitRev& pEnd)\r
{\r
return pStart->sShortMessage.CompareNoCase(pEnd->sShortMessage)>0;\r
}\r
/// Ascending action sorting\r
struct AscActionSort\r
{\r
- bool operator() (PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator() (GitRev& pStart, GitRev& pEnd)\r
{\r
if (pStart->actions == pEnd->actions)\r
return pStart->Rev < pEnd->Rev;\r
/// Descending action sorting\r
struct DescActionSort\r
{\r
- bool operator() (PLOGENTRYDATA& pStart, PLOGENTRYDATA& pEnd)\r
+ bool operator() (GitRev& pStart, GitRev& pEnd)\r
{\r
if (pStart->actions == pEnd->actions)\r
return pStart->Rev > pEnd->Rev;\r
return pStart->actions > pEnd->actions;\r
}\r
};\r
+#endif\r
};\r
void SetSecondUrl(const CString& url) {m_url2.SetFromUnknown(url);}\r
void SetCommitMessage(const CString& msg) {m_sMessage = msg;}\r
\r
- void SetRevision(const GitRev& rev) {m_Revision = rev;}\r
- void SetRevisionEnd(const GitRev& rev) {m_RevisionEnd = rev;}\r
+// void SetRevision(const GitRev& rev) {m_Revision = rev;}\r
+// void SetRevisionEnd(const GitRev& rev) {m_RevisionEnd = rev;}\r
\r
void SetDiffOptions(const CString& opts) {m_diffoptions = opts;}\r
void SetDepth(git_depth_t depth = git_depth_unknown) {m_depth = depth;}\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- AdditionalIncludeDirectories="../ext/ResizableLib;../Git;"../../ext/apr-util/include";"../../ext/apr-util/xml/expat/lib";../../ext/Subversion/subversion/include;../../ext/Subversion/subversion/libsvn_client;../../ext/apr/include;../../ext/boost;..\TortoiseProc;..\Utils;..\SVN;..\..\ext\ResizableLib;..\crashrpt;..\TortoiseShell;"..\..\ext\libintl\libintl3-win32\inc";..\ext\hunspell;..\ext\scintilla\include;..\Utils\TreePropSheet;..\Utils\ColourPickerXP;..\Utils\NewMenu;..\Utils\MiscUI;..\LogCache;"../../ext/cyrus-sasl/include";../../../common/openssl/inc32;.\RevisionGraph"\r
+ AdditionalIncludeDirectories=""$InputDir";../ext/ResizableLib;../Git;"../../ext/apr-util/include";"../../ext/apr-util/xml/expat/lib";../../ext/Subversion/subversion/include;../../ext/Subversion/subversion/libsvn_client;../../ext/apr/include;../../ext/boost;..\TortoiseProc;..\Utils;..\SVN;..\..\ext\ResizableLib;..\crashrpt;..\TortoiseShell;"..\..\ext\libintl\libintl3-win32\inc";..\ext\hunspell;..\ext\scintilla\include;..\Utils\TreePropSheet;..\Utils\ColourPickerXP;..\Utils\NewMenu;..\Utils\MiscUI;..\LogCache;"../../ext/cyrus-sasl/include";../../../common/openssl/inc32;.\RevisionGraph"\r
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;SVN_DEBUG;ENABLE_NLS;THESAURUS"\r
MinimalRebuild="true"\r
ExceptionHandling="2"\r
<DebugSettings\r
Command="$(TargetPath)"\r
WorkingDirectory="D:\Profiles\b20596\tortoisegit"\r
- CommandArguments="/command:commit"\r
+ CommandArguments="/command:log"\r
Attach="false"\r
DebuggerType="3"\r
Remote="1"\r
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
>\r
<File\r
- RelativePath=".\resource.h"\r
- >\r
- </File>\r
- <File\r
RelativePath=".\stdafx.h"\r
>\r
</File>\r
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
>\r
- <File\r
- RelativePath=".\resource.rc"\r
- >\r
- </File>\r
</Filter>\r
<Filter\r
Name="MiscUi"\r