OSDN Git Service

Add Resolve context menu
authorFrank Li <lznuaa@gmail.com>
Sat, 21 Feb 2009 14:22:46 +0000 (22:22 +0800)
committerFrank Li <lznuaa@gmail.com>
Sat, 21 Feb 2009 14:22:46 +0000 (22:22 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/Commands/Command.cpp
src/TortoiseProc/Commands/ResolveCommand.cpp
src/TortoiseProc/ResolveDlg.cpp
src/TortoiseProc/ResolveDlg.h
src/TortoiseProc/SVNProgressDlg.cpp
src/TortoiseProc/SVNProgressDlg.h
src/TortoiseProc/TortoiseProc.vcproj

index f886b4c..78b6c77 100644 (file)
@@ -50,7 +50,7 @@
 #include "ConflictEditorCommand.h"\r
 #include "CleanupCommand.h"\r
 #include "RebaseCommand.h"\r
-\r
+#include "ResolveCommand.h"\r
 #if 0\r
 \r
 \r
@@ -87,7 +87,7 @@
 \r
 #include "RepositoryBrowserCommand.h"\r
 \r
-#include "ResolveCommand.h"\r
+\r
 #include "RevertCommand.h"\r
 #include "RevisiongraphCommand.h"\r
 #include "RTFMCommand.h"\r
@@ -306,6 +306,8 @@ Command * CommandServer::GetCommand(const CString& sCmd)
                return new CleanupCommand;\r
        case cmdRebase:\r
                return new RebaseCommand;\r
+       case cmdResolve:\r
+               return new ResolveCommand;\r
 #if 0\r
 \r
        case cmdCat:\r
@@ -365,8 +367,7 @@ Command * CommandServer::GetCommand(const CString& sCmd)
                return new RepositoryBrowserCommand;\r
 \r
 \r
-       case cmdResolve:\r
-               return new ResolveCommand;\r
+\r
 \r
        case cmdRevisionGraph:\r
                return new RevisionGraphCommand;\r
index bde902d..c3f2d55 100644 (file)
@@ -33,15 +33,17 @@ bool ResolveCommand::Execute()
        {\r
                if (dlg.m_pathList.GetCount())\r
                {\r
-                       CSVNProgressDlg progDlg(CWnd::FromHandle(hWndExplorer));\r
+\r
+                       CGitProgressDlg progDlg(CWnd::FromHandle(hWndExplorer));\r
                        theApp.m_pMainWnd = &progDlg;\r
-                       progDlg.SetCommand(CSVNProgressDlg::SVNProgress_Resolve);\r
+                       progDlg.SetCommand(CGitProgressDlg::GitProgress_Resolve);\r
                        if (parser.HasVal(_T("closeonend")))\r
                                progDlg.SetAutoClose(parser.GetLongVal(_T("closeonend")));\r
                        progDlg.SetOptions(parser.HasKey(_T("skipcheck")) ? ProgOptSkipConflictCheck : ProgOptNone);\r
                        progDlg.SetPathList(dlg.m_pathList);\r
                        progDlg.DoModal();\r
                        return !progDlg.DidErrorsOccur();\r
+\r
                }\r
        }\r
        return false;\r
index bc44e25..a38e0f9 100644 (file)
@@ -20,6 +20,7 @@
 #include "TortoiseProc.h"\r
 #include "messagebox.h"\r
 #include "ResolveDlg.h"\r
+#include "CommonResource.h"\r
 \r
 #define REFRESHTIMER   100\r
 \r
@@ -46,8 +47,8 @@ void CResolveDlg::DoDataExchange(CDataExchange* pDX)
 BEGIN_MESSAGE_MAP(CResolveDlg, CResizableStandAloneDialog)\r
        ON_BN_CLICKED(IDC_SELECTALL, OnBnClickedSelectall)\r
        ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
-       ON_REGISTERED_MESSAGE(CSVNStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnSVNStatusListCtrlNeedsRefresh)\r
-       ON_REGISTERED_MESSAGE(CSVNStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnSVNStatusListCtrlNeedsRefresh)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
        ON_WM_TIMER()\r
 END_MESSAGE_MAP()\r
 \r
@@ -131,7 +132,7 @@ UINT CResolveDlg::ResolveThread()
 \r
        m_bCancelled = false;\r
 \r
-       if (!m_resolveListCtrl.GetStatus(m_pathList))\r
+       if (!m_resolveListCtrl.GetStatus(&m_pathList))\r
        {\r
                m_resolveListCtrl.SetEmptyString(m_resolveListCtrl.GetLastErrorMessage());\r
        }\r
@@ -206,7 +207,7 @@ LRESULT CResolveDlg::OnFileDropped(WPARAM, LPARAM lParam)
        // When the timer expires, we start the refresh thread,\r
        // but only if it isn't already running - otherwise we\r
        // restart the timer.\r
-       CTSVNPath path;\r
+       CTGitPath path;\r
        path.SetFromWin((LPCTSTR)lParam);\r
 \r
        if (!m_resolveListCtrl.HasPath(path))\r
index 5294a79..b4c9571 100644 (file)
@@ -18,7 +18,7 @@
 //\r
 #pragma once\r
 #include "StandAloneDlg.h"\r
-#include "SVNStatusListCtrl.h"\r
+#include "GitStatusListCtrl.h"\r
 \r
 \r
 /**\r
@@ -55,10 +55,10 @@ private:
        DECLARE_MESSAGE_MAP()\r
 \r
 public:\r
-       CTSVNPathList   m_pathList;\r
+       CTGitPathList   m_pathList;\r
 \r
 private:\r
-       CSVNStatusListCtrl      m_resolveListCtrl;\r
+       CGitStatusListCtrl      m_resolveListCtrl;\r
        volatile LONG           m_bThreadRunning;\r
        CButton                         m_SelectAll;\r
        bool                            m_bCancelled;\r
index 9b81f7d..08a406c 100644 (file)
@@ -267,6 +267,11 @@ BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t actio
                        data->color = m_Colors.GetColor(CColors::Added);\r
        //      }\r
                break;\r
+       \r
+       case git_wc_notify_resolved:\r
+               data->sActionColumnText.LoadString(IDS_SVNACTION_RESOLVE);\r
+               break;\r
+\r
 #if 0\r
        case svn_wc_notify_commit_added:\r
                data->sActionColumnText.LoadString(IDS_SVNACTION_ADDING);\r
@@ -295,9 +300,6 @@ BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t actio
        case svn_wc_notify_revert:\r
                data->sActionColumnText.LoadString(IDS_SVNACTION_REVERT);\r
                break;\r
-       case svn_wc_notify_resolved:\r
-               data->sActionColumnText.LoadString(IDS_SVNACTION_RESOLVE);\r
-               break;\r
        case svn_wc_notify_update_replace:\r
        case svn_wc_notify_commit_replaced:\r
                data->sActionColumnText.LoadString(IDS_SVNACTION_REPLACED);\r
@@ -1775,7 +1777,7 @@ bool CGitProgressDlg::CmdAdd(CString& sWindowTitle, bool& localoperation)
        for(int i=0;i<m_targetPathList.GetCount();i++)\r
        {\r
                CString cmd,out;\r
-               cmd.Format(_T("git.exe add \"%s\""),m_targetPathList[i].GetGitPathString());\r
+               cmd.Format(_T("git.exe add -f \"%s\""),m_targetPathList[i].GetGitPathString());\r
                if(g_Git.Run(cmd,&out,CP_OEMCP))\r
                {\r
                        CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
@@ -2314,7 +2316,7 @@ bool CGitProgressDlg::CmdRename(CString& sWindowTitle, bool& localoperation)
 \r
 bool CGitProgressDlg::CmdResolve(CString& sWindowTitle, bool& localoperation)\r
 {\r
-#if 0\r
+\r
        localoperation = true;\r
        ASSERT(m_targetPathList.GetCount() == 1);\r
        sWindowTitle.LoadString(IDS_PROGRS_TITLE_RESOLVE);\r
@@ -2322,6 +2324,20 @@ bool CGitProgressDlg::CmdResolve(CString& sWindowTitle, bool& localoperation)
        SetBackgroundImage(IDI_RESOLVE_BKG);\r
        // check if the file may still have conflict markers in it.\r
        BOOL bMarkers = FALSE;\r
+\r
+       for(int i=0;i<m_targetPathList.GetCount();i++)\r
+       {\r
+               CString cmd,out;\r
+               cmd.Format(_T("git.exe add -f \"%s\""),m_targetPathList[i].GetGitPathString());\r
+               if(g_Git.Run(cmd,&out,CP_OEMCP))\r
+               {\r
+                       CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+                       m_bErrorsOccurred=true;\r
+                       return false;\r
+               }\r
+               Notify(m_targetPathList[i],git_wc_notify_resolved);\r
+       }\r
+#if 0\r
        if ((m_options & ProgOptSkipConflictCheck) == 0)\r
        {\r
                try\r
@@ -2369,8 +2385,9 @@ bool CGitProgressDlg::CmdResolve(CString& sWindowTitle, bool& localoperation)
                for (INT_PTR fileindex=0; fileindex<m_targetPathList.GetCount(); ++fileindex)\r
                        Resolve(m_targetPathList[fileindex], svn_wc_conflict_choose_merged, true);\r
        }\r
-       CShellUpdater::Instance().AddPathsForUpdate(m_targetPathList);\r
 #endif\r
+       CShellUpdater::Instance().AddPathsForUpdate(m_targetPathList);\r
+\r
        return true;\r
 }\r
 \r
index aaf4aad..c6a8e65 100644 (file)
@@ -69,6 +69,7 @@ typedef enum
 typedef enum\r
 {\r
        git_wc_notify_add,\r
+       git_wc_notify_resolved\r
 \r
 }git_wc_notify_action_t;\r
 /**\r
index 376f8c1..2594c42 100644 (file)
                                        RelativePath=".\Commands\ConflictEditorCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\Commands\ResolveCommand.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\Commands\ResolveCommand.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\ResolveDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\ResolveDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="Rebase"\r