OSDN Git Service

Stash list using reflog dialog.
authorFrank Li <lznuaa@gmail.com>
Tue, 17 Mar 2009 09:47:39 +0000 (17:47 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 17 Mar 2009 09:47:39 +0000 (17:47 +0800)
Add reflog and stash list at shell menu. need press "shift key"

Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/Commands/RefLogCommand.cpp
src/TortoiseProc/RefLogDlg.cpp
src/TortoiseProc/RefLogDlg.h
src/TortoiseProc/refloglist.h
src/TortoiseShell/ContextMenu.cpp
src/TortoiseShell/Globals.h
src/TortoiseShell/ShellExt.h
src/TortoiseShell/resource.h
src/TortoiseShell/resourceshell.rc

index e2f48b3..d5e65d0 100644 (file)
 bool RefLogCommand::Execute()\r
 {\r
        bool bRet = false;\r
-\r
        CRefLogDlg dlg;\r
+\r
+       CString branch = parser.GetVal(_T("ref"));\r
+       if ( !branch.IsEmpty() )\r
+               dlg.m_CurrentBranch = branch;\r
+       \r
        dlg.DoModal();\r
        return bRet;\r
 }\r
index 7a4d600..03ad3d0 100644 (file)
@@ -48,18 +48,21 @@ BOOL CRefLogDlg::OnInitDialog()
        STRING_VECTOR list;\r
        g_Git.GetRefList(list);\r
 \r
-       CString currentbranch;\r
-       currentbranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());\r
+       if(this->m_CurrentBranch.IsEmpty())\r
+       {\r
+               m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());\r
+       }\r
 \r
-       this->m_ChooseRef.AddString(list);\r
        m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);\r
+       this->m_ChooseRef.AddString(list);\r
+       \r
 \r
        this->m_RefList.InsertRefLogColumn();\r
        //m_RefList.m_logEntries.ParserFromRefLog(_T("master"));\r
        \r
        for(int i=0;i<list.size();i++)\r
        {\r
-               if(list[i] == currentbranch)\r
+               if(list[i] == m_CurrentBranch)\r
                {\r
                        m_ChooseRef.SetCurSel(i);\r
                        break;\r
index e75759c..13f7f4e 100644 (file)
@@ -23,6 +23,7 @@ protected:
        DECLARE_MESSAGE_MAP()\r
 public:\r
        CHistoryCombo m_ChooseRef;\r
+       CString m_CurrentBranch;\r
 public:\r
        CRefLogList m_RefList;\r
 public:\r
index e155a76..911408c 100644 (file)
@@ -18,6 +18,7 @@ public:
        };\r
        \r
        std::map<CString,CLogDataVector> m_RefMap;\r
+\r
 protected:\r
        virtual void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
        virtual void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
index f2d02d4..d6e4136 100644 (file)
@@ -68,6 +68,9 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuLog,                                                 MENULOG,                        IDI_LOG,                                IDS_MENULOG,                            IDS_MENUDESCLOG,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, 0, 0 },\r
 \r
+       { ShellMenuRefLog,                                              MENUREFLOG,                     IDI_LOG,                                IDS_MENUREFLOG,                         IDS_MENUDESCREFLOG,\r
+       ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0 },\r
+\r
 //     { ShellMenuRepoBrowse,                                  MENUREPOBROWSE,         IDI_REPOBROWSE,                 IDS_MENUREPOBROWSE,                     IDS_MENUDESCREPOBROWSE,\r
 //     ITEMIS_ONLYONE, 0, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 },\r
 \r
@@ -82,8 +85,11 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 \r
        { ShellMenuStashSave,                               MENUSTASHSAVE,              IDI_COMMIT,                             IDS_MENUSTASHSAVE,                              IDS_MENUSTASHSAVE,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
-       { ShellMenuStashApply,                              MENUSTASHAPPLY,         IDI_RELOCATE,                               IDS_MENUSTASHAPPLY,                             IDS_MENUSTASHAPPLY,\r
+       { ShellMenuStashApply,                              MENUSTASHAPPLY,         IDI_RELOCATE,                       IDS_MENUSTASHAPPLY,                             IDS_MENUSTASHAPPLY,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+       { ShellMenuStashList,                               MENUSTASHAPPLY,         IDI_LOG,                            IDS_MENUSTASHLIST,                              IDS_MENUSTASHLIST,\r
+       ITEMIS_INSVN|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
+\r
 \r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
@@ -1792,8 +1798,8 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                svnCmd += _T("\"");\r
                 }\r
                                break;\r
-                       case ShellMenuRepoBrowse:\r
-                               svnCmd += _T("repobrowser /path:\"");\r
+                       case ShellMenuRefLog:\r
+                               svnCmd += _T("reflog /path:\"");\r
                                if (files_.size() > 0)\r
                                        svnCmd += files_.front();\r
                                else\r
@@ -1819,6 +1825,15 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                svnCmd += _T("\"");\r
                                break;\r
 \r
+                       case ShellMenuStashList:\r
+                               svnCmd += _T("reflog /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\" /ref:refs/stash");\r
+                               break;\r
+\r
                        case ShellMenuSubAdd:\r
                                svnCmd += _T("subadd /path:\"");\r
                                if (files_.size() > 0)\r
index 936437c..c1d4019 100644 (file)
@@ -40,7 +40,7 @@
 //#define MENURELOCATE         0x0000000000080000\r
 #define MENUSHOWCHANGED                0x0000000000100000\r
 #define MENUIGNORE                     0x0000000000200000\r
-//#define MENUREPOBROWSE       0x0000000000400000\r
+#define MENUREFLOG                     0x0000000000400000\r
 #define MENUBLAME                      0x0000000000800000\r
 #define MENUCREATEPATCH                0x0000000001000000\r
 #define MENUAPPLYPATCH         0x0000000002000000\r
@@ -64,7 +64,9 @@
 #define MENUREBASE                     0x0000080000000000\r
 #define MENUSTASHSAVE          0x0000100000000000\r
 #define MENUSTASHAPPLY         0x0000200000000000\r
-#define MENUSUBADD                     0x0000400000000000\r
+#define MENUSTASHLIST          0x0000400000000000\r
+#define MENUSUBADD                     0x0000800000000000\r
+\r
 //#define MENUSUBSYNC                  0x0000800000000000\r
 \r
 #define MENUSETTINGS           0x2000000000000000\r
index 7c34d32..acd24c7 100644 (file)
@@ -133,7 +133,7 @@ protected:
                ShellMenuIgnoreFile,\r
                ShellMenuIgnoreCaseSensitive,\r
                ShellMenuIgnoreCaseInsensitive,\r
-               ShellMenuRepoBrowse,\r
+               ShellMenuRefLog,\r
                ShellMenuBlame,\r
                ShellMenuApplyPatch,\r
                ShellMenuCreatePatch,\r
@@ -159,6 +159,7 @@ protected:
                ShellMenuRebase,\r
                ShellMenuStashSave,\r
                ShellMenuStashApply,\r
+               ShellMenuStashList,\r
                ShellMenuSubAdd,\r
                ShellMenuSubSync,\r
                ShellMenuLastEntry                      // used to mark the menu array end\r
index 98bfb5a..2c2b267 100644 (file)
 #define IDS_MENUSTASHAPPLY                             314\r
 #define IDS_MENUSUBADD                                 315\r
 #define IDS_MENUSUBSYNC                                        316\r
+#define IDS_MENUREFLOG                                 317\r
+#define IDS_MENUDESCREFLOG                             318\r
+#define IDS_MENUSTASHLIST                              319\r
 \r
 #define IDC_REVISION                    1001\r
 #define IDC_LOCKED                      1002\r
index b753efa..7e35c59 100644 (file)
@@ -264,6 +264,7 @@ BEGIN
        IDS_MENUREBASE                  "*Rebase..."\r
        IDS_MENUSTASHSAVE               "Stash Save"\r
        IDS_MENUSTASHAPPLY              "Stash Apply"\r
+       IDS_MENUSTASHLIST               "Stash List"\r
        IDS_MENUSUBADD                  "Submodule Add"\r
        IDS_MENUSUBSYNC                 "Submodule Sync"\r
 END\r
@@ -315,7 +316,9 @@ BEGIN
     IDS_DROPCOPYADDMENU     "Git Copy and add files to this WC"\r
     IDS_DROPMOVEMENU        "Git Move versioned item(s) here"\r
     IDS_MENULOG             "Show &log"\r
+       IDS_MENUREFLOG          "Show &Reflog"\r
     IDS_MENUDESCLOG         "Shows the log for the selected file / folder"\r
+       IDS_MENUDESCREFLOG      "Shows reference log"\r
     IDS_COLTITLEURL         "Git URL"\r
     IDS_COLDESCURL          "URL of Git items"\r
     IDS_COLTITLESHORTURL    "Git short URL"\r