param += _T(" --full-history ");\r
\r
if(mask& LOG_INFO_BOUNDARY)\r
- param += _T("--left-right --boundary ");\r
+ param += _T(" --left-right --boundary ");\r
+\r
+ if(mask& CGit::LOG_INFO_ALL_BRANCH)\r
+ param += _T(" --all ");\r
+\r
+ if(mask& CGit::LOG_INFO_DETECT_COPYRENAME)\r
+ param += _T(" -C ");\r
+ \r
+ if(mask& CGit::LOG_INFO_DETECT_RENAME )\r
+ param += _T(" -M ");\r
\r
param+=hash;\r
\r
- cmd.Format(_T("git.exe log %s -C --topo-order --parents %s --pretty=format:\""),\r
+ cmd.Format(_T("git.exe log %s --topo-order --parents %s --pretty=format:\""),\r
num,param);\r
\r
- BuildOutputFormat(log);\r
+ BuildOutputFormat(log,!(mask&CGit::LOG_INFO_ONLY_HASH));\r
+\r
cmd += log;\r
cmd += CString(_T("\" "))+hash+file;\r
\r
return Run(cmd,&logOut);\r
}\r
\r
-\r
+#if 0\r
int CGit::GetShortLog(CString &logOut,CTGitPath * path, int count)\r
{\r
CString cmd;\r
//cmd += CString(_T("\" HEAD~40..HEAD"));\r
return Run(cmd,&logOut);\r
}\r
+#endif\r
\r
#define BUFSIZE 512\r
void GetTempPath(CString &path)\r
LOG_INFO_PATCH=0x4,\r
LOG_INFO_FULLHISTORY=0x8,\r
LOG_INFO_BOUNDARY=0x10,\r
- LOG_INFO_ALL=0x20\r
+ LOG_INFO_ALL_BRANCH=0x20,\r
+ LOG_INFO_ONLY_HASH=0x40,\r
+ LOG_INFO_DETECT_RENAME=0x80,\r
+ LOG_INFO_DETECT_COPYRENAME=0x100\r
}LOG_INFO_MASK;\r
\r
int GetRemoteList(STRING_VECTOR &list);\r
int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
\r
//hash is empty means all. -1 means all\r
- int GetLog(CString& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY);\r
+ int GetLog(CString& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME);\r
\r
git_revnum_t GetHash(CString &friendname);\r
\r
int BuildOutputFormat(CString &format,bool IsFull=TRUE);\r
- int GetShortLog(CString &log,CTGitPath * path=NULL, int count =-1);\r
+ //int GetShortLog(CString &log,CTGitPath * path=NULL, int count =-1);\r
static void StringAppend(CString *str,char *p);\r
\r
BOOL IsInitRepos();\r
CString onelog;\r
TCHAR oldmark=this->m_Mark;\r
\r
- git->GetLog(onelog,m_CommitHash,NULL,1,CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE);\r
+ git->GetLog(onelog,m_CommitHash,NULL,1,CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE|CGit::LOG_INFO_DETECT_COPYRENAME);\r
CString oldhash=m_CommitHash;\r
+ GIT_REV_LIST oldlist=this->m_ParentHash;\r
ParserFromLog(onelog);\r
\r
//ASSERT(oldhash==m_CommitHash);\r
if(oldmark!=0)\r
this->m_Mark=oldmark; //parser full log will cause old mark overwrited. \r
//So we need keep old bound mark.\r
-\r
+ this->m_ParentHash=oldlist;\r
InterlockedExchange(&m_IsUpdateing,FALSE);\r
InterlockedExchange(&m_IsFull,TRUE);\r
return 0;\r
{\r
//the log command line looks like this:\r
//command:log path:<path_to_file_or_directory_to_show_the_log_messages> [startrev:<startrevision>] [endrev:<endrevision>]\r
-#if 0 \r
+\r
CString val = parser.GetVal(_T("startrev"));\r
if ( val.IsEmpty() )\r
{\r
// support deprecated parameter prior 1.5.0\r
val = parser.GetVal(_T("revstart"));\r
}\r
- SVNRev revstart = val.IsEmpty() ? SVNRev() : SVNRev(val);\r
+ GitRev revstart ;\r
val = parser.GetVal(_T("endrev"));\r
if ( val.IsEmpty() )\r
{\r
// support deprecated parameter prior 1.5.0\r
val = parser.GetVal(_T("revend"));\r
}\r
- SVNRev revend = val.IsEmpty() ? SVNRev() : SVNRev(val);\r
+ GitRev revend ;\r
val = parser.GetVal(_T("limit"));\r
int limit = _tstoi(val);\r
val = parser.GetVal(_T("pegrev"));\r
// support deprecated parameter prior 1.5.0\r
val = parser.GetVal(_T("revpeg"));\r
}\r
+\r
+ GitRev pegrev;\r
+\r
+#if 0\r
SVNRev pegrev = val.IsEmpty() ? SVNRev() : SVNRev(val);\r
if (!revstart.IsValid())\r
revstart = SVNRev::REV_HEAD;\r
if (!revend.IsValid())\r
revend = 0;\r
+#endif\r
\r
if (limit == 0)\r
{\r
{\r
bStrict = TRUE;\r
}\r
-#endif \r
+\r
\r
CLogDlg dlg;\r
theApp.m_pMainWnd = &dlg;\r
-// dlg.SetParams(cmdLinePath, pegrev, revstart, revend, limit, bStrict);\r
+ //dlg.SetParams(cmdLinePath);\r
+ dlg.SetParams(cmdLinePath, pegrev, revstart, revend, limit, bStrict);\r
// dlg.SetIncludeMerge(!!parser.HasKey(_T("merge")));\r
// val = parser.GetVal(_T("propspath"));\r
// if (!val.IsEmpty())\r
CString logout;\r
\r
CLogDataVector revs;\r
- revs.ParserShortLog(&cmdLinePath,2);\r
+ \r
+ revs.ParserShortLog(&cmdLinePath,hash,2);\r
if( revs.size() == 0)\r
{\r
CMessageBox::Show(hWndExplorer, IDS_ERR_NOPREVREVISION, IDS_APPNAME, MB_ICONERROR);\r
else\r
path=&this->m_Path;\r
\r
- this->m_logEntries.ParserShortLog(path,-1);\r
+ CString hash;\r
+ int mask;\r
+ mask = CGit::LOG_INFO_ONLY_HASH | CGit::LOG_INFO_BOUNDARY;\r
+ if(this->m_bAllBranch)\r
+ mask |= CGit::LOG_INFO_ALL_BRANCH;\r
+\r
+ this->m_logEntries.ParserShortLog(path,hash,-1,mask);\r
+ \r
\r
//this->m_logEntries.ParserFromLog();\r
SetItemCountEx(this->m_logEntries.size());\r
//#include "EditPropertiesDlg.h"
#include "FileDiffDlg.h"
-int CLogDataVector::ParserShortLog(CTGitPath *path ,int count )
+
+int CLogDataVector::ParserShortLog(CTGitPath *path ,CString &hash,int count ,int mask )
{
CString log;
GitRev rev;
CString begin;
begin.Format(_T("#<%c>"),LOG_REV_ITEM_BEGIN);
- g_Git.GetShortLog(log,path,count);
+ //g_Git.GetShortLog(log,path,count);
+
+ g_Git.GetLog(log,hash,path,count,mask);
+
if(log.GetLength()==0)
return 0;
}
return 0;
- return 0;
}
int CLogDataVector::FetchFullInfo(int i)
//m_tTo = 0;\r
//m_tFrom = (DWORD)-1;\r
\r
+ m_LogList.m_Path=m_path;\r
m_LogList.FetchLogAsync(LogCallBack,this);\r
\r
GetDlgItem(IDC_LOGLIST)->SetFocus();\r
}\r
void ClearAll();\r
int ParserFromLog(CTGitPath *path =NULL,int count = -1,int infomask=CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE);\r
- int ParserShortLog(CTGitPath *path =NULL,int count = -1 );\r
+ int ParserShortLog(CTGitPath *path ,CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH );\r
int FetchFullInfo(int i);\r
\r
Lanes m_Lns;\r
+++ /dev/null
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioUserFile\r
- ProjectType="Visual C++"\r
- Version="9.00"\r
- ShowAllFiles="false"\r
- >\r
- <Configurations>\r
- <Configuration\r
- Name="Release|Win32"\r
- >\r
- <DebugSettings\r
- Command=""\r
- WorkingDirectory=""\r
- CommandArguments=""\r
- Attach="false"\r
- DebuggerType="3"\r
- Remote="1"\r
- RemoteMachine="B20596-01"\r
- RemoteCommand=""\r
- HttpUrl=""\r
- PDBPath=""\r
- SQLDebugging=""\r
- Environment=""\r
- EnvironmentMerge="true"\r
- DebuggerFlavor=""\r
- MPIRunCommand=""\r
- MPIRunArguments=""\r
- MPIRunWorkingDirectory=""\r
- ApplicationCommand=""\r
- ApplicationArguments=""\r
- ShimCommand=""\r
- MPIAcceptMode=""\r
- MPIAcceptFilter=""\r
- />\r
- </Configuration>\r
- <Configuration\r
- Name="Debug|Win32"\r
- >\r
- <DebugSettings\r
- Command=""\r
- WorkingDirectory=""\r
- CommandArguments=""\r
- Attach="false"\r
- DebuggerType="3"\r
- Remote="1"\r
- RemoteMachine="B20596-01"\r
- RemoteCommand=""\r
- HttpUrl=""\r
- PDBPath=""\r
- SQLDebugging=""\r
- Environment=""\r
- EnvironmentMerge="true"\r
- DebuggerFlavor=""\r
- MPIRunCommand=""\r
- MPIRunArguments=""\r
- MPIRunWorkingDirectory=""\r
- ApplicationCommand=""\r
- ApplicationArguments=""\r
- ShimCommand=""\r
- MPIAcceptMode=""\r
- MPIAcceptFilter=""\r
- />\r
- </Configuration>\r
- </Configurations>\r
-</VisualStudioUserFile>\r