OSDN Git Service

RebaseDlg: Fetch log when change branch and upstream
authorFrank Li <lznuaa@gmail.com>
Sat, 14 Feb 2009 09:20:58 +0000 (17:20 +0800)
committerFrank Li <lznuaa@gmail.com>
Sat, 14 Feb 2009 09:20:58 +0000 (17:20 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/Git.h
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/GitLogListBase.cpp
src/TortoiseProc/GitLogListBase.h
src/TortoiseProc/LogDataVector.cpp
src/TortoiseProc/LogDlgHelper.h
src/TortoiseProc/RebaseDlg.cpp
src/TortoiseProc/RebaseDlg.h

index 978dfca..d08d0b0 100644 (file)
@@ -388,14 +388,14 @@ int CGit::BuildOutputFormat(CString &format,bool IsFull)
        return 0;\r
 }\r
 \r
-int CGit::GetLog(BYTE_VECTOR& logOut, CString &hash,  CTGitPath *path ,int count,int mask)\r
+int CGit::GetLog(BYTE_VECTOR& logOut, CString &hash,  CTGitPath *path ,int count,int mask,CString *from,CString *to)\r
 {\r
        CGitCall_ByteVector gitCall(CString(),&logOut);\r
-       return GetLog(&gitCall,hash,path,count,mask);\r
+       return GetLog(&gitCall,hash,path,count,mask,from,to);\r
 }\r
 \r
 //int CGit::GetLog(CGitCall* pgitCall, CString &hash,  CTGitPath *path ,int count,int mask)\r
-int CGit::GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path, int count, int mask)\r
+int CGit::GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path, int count, int mask,CString *from,CString *to)\r
 {\r
 \r
        CString cmd;\r
@@ -442,6 +442,12 @@ int CGit::GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path, int count,
        if(mask& CGit::LOG_INFO_FOLLOW)\r
                param += _T(" --follow ");\r
 \r
+       if(from != NULL && to != NULL)\r
+       {\r
+               CString range;\r
+               range.Format(_T(" %s..%s "),*from,*to);\r
+               param += range;\r
+       }\r
        param+=hash;\r
 \r
        cmd.Format(_T("git.exe log %s -z --topo-order %s --parents --pretty=format:\""),\r
index 5e81ff9..f453a40 100644 (file)
@@ -84,8 +84,10 @@ public:
        \r
        //hash is empty means all. -1 means all\r
 \r
-       int GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME);\r
-       int GetLog(BYTE_VECTOR& 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
+       int GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME,\r
+                                                               CString *from=NULL,CString *to=NULL);\r
+       int GetLog(BYTE_VECTOR& 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
+                                                               CString *from=NULL,CString *to=NULL);\r
 \r
        BOOL EnumFiles(const char *pszProjectPath, const char *pszSubPath, unsigned int nFlags, WGENUMFILECB *pEnumCb, void *pUserData);\r
 \r
index c959528..3290da6 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 7566bd9..584874f 100644 (file)
@@ -1301,12 +1301,12 @@ void CGitLogListBase::OnLvnOdfinditemLoglist(NMHDR *pNMHDR, LRESULT *pResult)
        *pResult = -1;\r
 }\r
 \r
-int CGitLogListBase::FillGitLog(CTGitPath *path,int info)\r
+int CGitLogListBase::FillGitLog(CTGitPath *path,int info,CString *from,CString *to)\r
 {\r
        ClearText();\r
 \r
        this->m_logEntries.ClearAll();\r
-       this->m_logEntries.ParserFromLog(path,-1,info);\r
+       this->m_logEntries.ParserFromLog(path,-1,info,from,to);\r
 \r
        //this->m_logEntries.ParserFromLog();\r
        SetItemCountEx(this->m_logEntries.size());\r
index 6cfead5..42b2359 100644 (file)
@@ -135,7 +135,7 @@ public:
        void DiffSelectedRevWithPrevious();\r
        bool IsSelectionContinuous();\r
        int  FillGitShortLog();\r
-       int  FillGitLog(CTGitPath *path,int infomask=CGit::     LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE);\r
+       int  FillGitLog(CTGitPath *path,int infomask=CGit::     LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE,CString *from=NULL,CString *to=NULL);\r
 \r
        inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
        int FetchLogAsync(void * data=NULL);\r
index 08ff2f7..1b265d2 100644 (file)
@@ -104,12 +104,12 @@ int CLogDataVector::FetchFullInfo(int i)
        return at(i).SafeFetchFullInfo(&g_Git);
 }
 //CLogDataVector Class
-int CLogDataVector::ParserFromLog(CTGitPath *path ,int count ,int infomask)
+int CLogDataVector::ParserFromLog(CTGitPath *path ,int count ,int infomask,CString *from,CString *to)
 {
        BYTE_VECTOR log;
        GitRev rev;
        CString emptyhash;
-       g_Git.GetLog(log,emptyhash,path,count,infomask);
+       g_Git.GetLog(log,emptyhash,path,count,infomask,from,to);
 
        CString begin;
        begin.Format(_T("#<%c>"),LOG_REV_ITEM_BEGIN);
index 6658bd4..a96aeba 100644 (file)
@@ -58,7 +58,8 @@ public:
                m_FirstFreeLane=0;\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  ParserFromLog(CTGitPath *path =NULL,int count = -1,int infomask=CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE,\r
+                                                                                        CString *from=NULL,CString *to=NULL);\r
        int  ParserShortLog(CTGitPath *path ,CString &hash,int count=-1 ,int mask=CGit::LOG_INFO_ONLY_HASH );\r
        int FetchFullInfo(int i);\r
 //     void AddFullInfo(\r
index f029ae1..11d3b4a 100644 (file)
@@ -113,7 +113,7 @@ BOOL CRebaseDlg::OnInitDialog()
 \r
        m_FileListCtrl.Init(SVNSLC_COLEXT | SVNSLC_COLSTATUS , _T("RebaseDlg"));\r
 \r
-       m_ctrlTabCtrl.AddTab(&m_FileListCtrl,_T("Modified File"));\r
+       m_ctrlTabCtrl.AddTab(&m_FileListCtrl,_T("Conflict File"));\r
        m_ctrlTabCtrl.AddTab(&m_LogMessageCtrl,_T("Log Message"),1);\r
        AddRebaseAnchor();\r
 \r
@@ -150,6 +150,10 @@ BOOL CRebaseDlg::OnInitDialog()
                this->m_UpstreamCtrl.EnableWindow(FALSE);\r
        }\r
 \r
+       m_CommitList.DeleteAllItems();\r
+       m_CommitList.InsertGitColumn();\r
+\r
+       FetchLogList();\r
        return TRUE;\r
 }\r
 // CRebaseDlg message handlers\r
@@ -278,12 +282,22 @@ void CRebaseDlg::LoadBranchInfo()
 \r
 void CRebaseDlg::OnCbnSelchangeBranch()\r
 {\r
-\r
+       FetchLogList();\r
 }\r
 \r
 void CRebaseDlg::OnCbnSelchangeUpstream()\r
 {\r
+       FetchLogList();\r
+}\r
+\r
+void CRebaseDlg::FetchLogList()\r
+{\r
+       m_CommitList.Clear();\r
+       this->m_CommitList.FillGitLog(NULL,0,&m_UpstreamCtrl.GetString(),&m_BranchCtrl.GetString());\r
+       if( m_CommitList.GetItemCount() == 0 )\r
+               m_CommitList.ShowText(_T("Nothing Rebase"));\r
 \r
+       m_CommitList.Invalidate();\r
 }\r
 \r
 void CRebaseDlg::AddBranchToolTips(CHistoryCombo *pBranch)\r
index 4aedfc5..5673bb5 100644 (file)
@@ -44,6 +44,7 @@ protected:
        void SaveSplitterPos();\r
        \r
        void LoadBranchInfo();\r
+       void FetchLogList();\r
 \r
        CRect                           m_DlgOrigRect;\r
        CRect                           m_CommitListOrigRect;\r