OSDN Git Service

Add show one file log at dialog box.
authorFrank Li <lznuaa@gmail.com>
Tue, 20 Jan 2009 14:11:58 +0000 (22:11 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 20 Jan 2009 14:11:58 +0000 (22:11 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/Git.h
src/Git/GitRev.cpp
src/TortoiseProc/Commands/LogCommand.cpp
src/TortoiseProc/Commands/PrevDiffCommand.cpp
src/TortoiseProc/GitLogListBase.cpp
src/TortoiseProc/LogDataVector.cpp
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/LogDlgHelper.h
src/TortoiseProc/TortoiseProcLang.vcproj.FSL.B20596.user [deleted file]

index 89e4fd2..d81542b 100644 (file)
@@ -222,21 +222,31 @@ int CGit::GetLog(CString& logOut, CString &hash,  CTGitPath *path ,int count,int
                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
@@ -254,6 +264,7 @@ int CGit::GetShortLog(CString &logOut,CTGitPath * path, int count)
        //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
index 96a0186..b9da969 100644 (file)
@@ -51,7 +51,10 @@ public:
                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
@@ -60,12 +63,12 @@ public:
        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
index 083f517..d5e9edb 100644 (file)
@@ -160,15 +160,16 @@ int GitRev::SafeFetchFullInfo(CGit *git)
                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
index a5b78be..70cde22 100644 (file)
@@ -25,21 +25,21 @@ bool LogCommand::Execute()
 {\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
@@ -48,11 +48,16 @@ bool LogCommand::Execute()
                // 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
@@ -64,11 +69,12 @@ bool LogCommand::Execute()
        {\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
index b8fa037..28ddea6 100644 (file)
@@ -49,7 +49,8 @@ bool PrevDiffCommand::Execute()
                        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
index ed13ed8..8d1c162 100644 (file)
@@ -1340,7 +1340,14 @@ int CGitLogListBase::FillGitShortLog()
     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
index b7e4096..b276d1f 100644 (file)
@@ -63,7 +63,8 @@
 //#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;
@@ -74,7 +75,10 @@ int CLogDataVector::ParserShortLog(CTGitPath *path ,int count  )
        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;
        
@@ -99,7 +103,6 @@ int CLogDataVector::ParserShortLog(CTGitPath *path ,int count  )
        }
 
        return 0;
-       return 0;
 
 }
 int CLogDataVector::FetchFullInfo(int i)
index e85e71e..1fa14ff 100644 (file)
@@ -348,6 +348,7 @@ BOOL CLogDlg::OnInitDialog()
        //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
index f0dbc2d..2d4c5e2 100644 (file)
@@ -59,7 +59,7 @@ public:
        }\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
diff --git a/src/TortoiseProc/TortoiseProcLang.vcproj.FSL.B20596.user b/src/TortoiseProc/TortoiseProcLang.vcproj.FSL.B20596.user
deleted file mode 100644 (file)
index 834912e..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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