OSDN Git Service

Add Stash Save\apply and Submodule Add and Update command.
authorFrank Li <lznuaa@gmail.com>
Wed, 11 Mar 2009 14:30:07 +0000 (22:30 +0800)
committerFrank Li <lznuaa@gmail.com>
Wed, 11 Mar 2009 14:30:07 +0000 (22:30 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseShell/ContextMenu.cpp
src/TortoiseShell/Globals.h
src/TortoiseShell/ShellExt.h
src/TortoiseShell/resource.h
src/TortoiseShell/resourceshell.rc

index 7f99798..f2d02d4 100644 (file)
@@ -47,8 +47,9 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 //     { ShellMenuCheckout,                                    MENUCHECKOUT,           IDI_CHECKOUT,                   IDS_MENUCHECKOUT,                       IDS_MENUDESCCHECKOUT,\r
 //     ITEMIS_FOLDER, ITEMIS_INSVN|ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0, 0 },\r
 \r
-//     { ShellMenuUpdate,                                              MENUUPDATE,                     IDI_UPDATE,                             IDS_MENUUPDATE,                         IDS_MENUDESCUPDATE,                             \r
-//     ITEMIS_INSVN,   ITEMIS_ADDED, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+//     { ShellMenuUpdate,                                      MENUSUBUPDATE,                  IDI_UPDATE,                             IDS_MENUUPDATE,                         IDS_MENUDESCUPDATE,                             \r
+//     ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
 \r
        { ShellMenuCommit,                                              MENUCOMMIT,                     IDI_COMMIT,                             IDS_MENUCOMMIT,                         IDS_MENUDESCCOMMIT,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
@@ -79,6 +80,11 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 //     { ShellMenuRevisionGraph,                               MENUREVISIONGRAPH,      IDI_REVISIONGRAPH,              IDS_MENUREVISIONGRAPH,          IDS_MENUDESCREVISIONGRAPH,\r
 //     ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, 0, 0, 0, 0},\r
 \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
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuConflictEditor,                              MENUCONFLICTEDITOR,     IDI_CONFLICT,                   IDS_MENUCONFLICT,                       IDS_MENUDESCCONFLICT,\r
@@ -87,8 +93,6 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuResolve,                                             MENURESOLVE,            IDI_RESOLVE,                    IDS_MENURESOLVE,                        IDS_MENUDESCRESOLVE,\r
        ITEMIS_INSVN|ITEMIS_CONFLICTED, 0, ITEMIS_INSVN|ITEMIS_FOLDER, 0, ITEMIS_FOLDERINSVN, 0, 0, 0 },\r
 \r
-//     { ShellMenuUpdateExt,                                   MENUUPDATEEXT,          IDI_UPDATE,                             IDS_MENUUPDATEEXT,                      IDS_MENUDESCUPDATEEXT,\r
-//     ITEMIS_INSVN, ITEMIS_ADDED, ITEMIS_FOLDERINSVN, ITEMIS_ADDED, 0, 0, 0, 0 },\r
 \r
        { ShellMenuRename,                                              MENURENAME,                     IDI_RENAME,                             IDS_MENURENAME,                         IDS_MENUDESCRENAME,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_INVERSIONEDFOLDER, 0, 0, 0, 0, 0, 0, 0 },\r
@@ -130,8 +134,8 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 \r
        { ShellMenuMerge,                                               MENUMERGE,                      IDI_MERGE,                              IDS_MENUMERGE,                          IDS_MENUDESCMERGE,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 },\r
-       { ShellMenuMergeAll,                                    MENUMERGEALL,           IDI_MERGE,                              IDS_MENUMERGEALL,                       IDS_MENUDESCMERGEALL,\r
-       ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
+//     { ShellMenuMergeAll,                                    MENUMERGEALL,           IDI_MERGE,                              IDS_MENUMERGEALL,                       IDS_MENUDESCMERGEALL,\r
+//     ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuBranch,                                              MENUCOPY,                       IDI_COPY,                               IDS_MENUBRANCH,                         IDS_MENUDESCCOPY,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
@@ -171,6 +175,15 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 \r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
+       { ShellMenuSubAdd,                                  MENUSUBADD,                         IDI_ADD,                                IDS_MENUSUBADD,                         IDS_MENUSUBADD,\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
+       { ShellMenuUpdateExt,                                   MENUUPDATEEXT,          IDI_UPDATE,                             IDS_MENUUPDATEEXT,                      IDS_MENUDESCUPDATEEXT,\r
+       ITEMIS_INSVN, ITEMIS_ADDED, ITEMIS_FOLDERINSVN, ITEMIS_ADDED, 0, 0, 0, 0 },\r
+\r
+\r
+       { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
+\r
 //     { ShellMenuCherryPick,                                  MENUCHERRYPICK,         IDI_CREATEPATCH,                IDS_MENUCHERRYPICK,             IDS_MENUDESCCREATEPATCH,\r
 //     ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
@@ -182,13 +195,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 \r
 \r
        { ShellMenuCreatePatch,                                 MENUCREATEPATCH,        IDI_CREATEPATCH,                IDS_MENUCREATEPATCH,            IDS_MENUDESCCREATEPATCH,\r
-       ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_EXTENDED, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, 0, 0, 0, 0, 0 },\r
 \r
        { ShellMenuApplyPatch,                                  MENUAPPLYPATCH,         IDI_PATCH,                              IDS_MENUAPPLYPATCH,                     IDS_MENUDESCAPPLYPATCH,\r
-       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_FOLDERINSVN, ITEMIS_ADDED, ITEMIS_ONLYONE|ITEMIS_PATCHFILE, 0, ITEMIS_FOLDERINSVN, ITEMIS_ADDED, 0, 0 },\r
+       ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, ITEMIS_ADDED, ITEMIS_ONLYONE|ITEMIS_PATCHFILE|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED, ITEMIS_ADDED, 0, 0 },\r
 \r
-       { ShellMenuProperties,                                  MENUPROPERTIES,         IDI_PROPERTIES,                 IDS_MENUPROPERTIES,                     IDS_MENUDESCPROPERTIES,\r
-       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+//     { ShellMenuProperties,                                  MENUPROPERTIES,         IDI_PROPERTIES,                 IDS_MENUPROPERTIES,                     IDS_MENUDESCPROPERTIES,\r
+//     ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 //     { ShellMenuClipPaste,                                   MENUCLIPPASTE,          IDI_CLIPPASTE,                  IDS_MENUCLIPPASTE,                      IDS_MENUDESCCLIPPASTE,\r
@@ -1465,7 +1478,7 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                break;\r
                        case ShellMenuUpdateExt:\r
                                tempfile = WriteFileListToTempFile();\r
-                               svnCmd += _T("update /pathfile:\"");\r
+                               svnCmd += _T("subupdate /pathfile:\"");\r
                                svnCmd += tempfile;\r
                                svnCmd += _T("\"");\r
                                svnCmd += _T(" /deletepathfile");\r
@@ -1787,6 +1800,34 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                        svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
                                break;\r
+\r
+                       case ShellMenuStashSave:\r
+                               svnCmd += _T("stashsave /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
+                       case ShellMenuStashApply:\r
+                               svnCmd += _T("stashapply /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
+                       case ShellMenuSubAdd:\r
+                               svnCmd += _T("subadd /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
                        case ShellMenuBlame:\r
                                svnCmd += _T("blame /path:\"");\r
                                if (files_.size() > 0)\r
index 409ec32..936437c 100644 (file)
@@ -19,7 +19,7 @@
 #pragma once\r
 \r
 //#define MENUCHECKOUT         0x0000000000000001\r
-//#define MENUUPDATE           0x0000000000000002\r
+//#define MENUUPDATE                   0x0000000000000002\r
 #define MENUCOMMIT                     0x0000000000000004\r
 #define MENUADD                                0x0000000000000008\r
 #define MENUREVERT                     0x0000000000000010\r
@@ -33,7 +33,7 @@
 #define MENUMERGE                      0x0000000000001000\r
 #define MENUREMOVE                     0x0000000000002000\r
 #define MENURENAME                     0x0000000000004000\r
-//#define MENUUPDATEEXT                0x0000000000008000\r
+#define MENUUPDATEEXT          0x0000000000008000\r
 #define MENUDIFF                       0x0000000000010000\r
 #define MENULOG                                0x0000000000020000\r
 #define MENUCONFLICTEDITOR     0x0000000000040000\r
 #define MENUCHERRYPICK         0x0000020000000000\r
 #define MENUFETCH                      0x0000040000000000\r
 #define MENUREBASE                     0x0000080000000000\r
-\r
+#define MENUSTASHSAVE          0x0000100000000000\r
+#define MENUSTASHAPPLY         0x0000200000000000\r
+#define MENUSUBADD                     0x0000400000000000\r
+//#define MENUSUBSYNC                  0x0000800000000000\r
 \r
 #define MENUSETTINGS           0x2000000000000000\r
 #define MENUHELP                       0x4000000000000000\r
index 906589a..7c34d32 100644 (file)
@@ -157,6 +157,10 @@ protected:
                ShellMenuCherryPick,\r
                ShellMenuFetch,\r
                ShellMenuRebase,\r
+               ShellMenuStashSave,\r
+               ShellMenuStashApply,\r
+               ShellMenuSubAdd,\r
+               ShellMenuSubSync,\r
                ShellMenuLastEntry                      // used to mark the menu array end\r
        };\r
 \r
index 8fe42d9..98bfb5a 100644 (file)
 #define IDS_MENUCHERRYPICK                             310\r
 #define IDS_MENUFETCH                                  311\r
 #define IDS_MENUREBASE                                 312\r
+#define IDS_MENUSTASHSAVE                              313\r
+#define IDS_MENUSTASHAPPLY                             314\r
+#define IDS_MENUSUBADD                                 315\r
+#define IDS_MENUSUBSYNC                                        316\r
+\r
 #define IDC_REVISION                    1001\r
 #define IDC_LOCKED                      1002\r
 #define IDC_REPOURL                     1003\r
index 73cd472..b753efa 100644 (file)
@@ -205,7 +205,7 @@ END
 STRINGTABLE \r
 BEGIN\r
     IDS_MENUCHECKOUT        "Switch/Chec&kout..."\r
-    IDS_MENUUPDATE          "&Update"\r
+    IDS_MENUUPDATE          "Submodule &Update"\r
     IDS_MENUCOMMIT          "&Commit..."\r
     IDS_MENUCREATEREPOS     "Create repositor&y here"\r
     IDS_MENUADD             "&Add..."\r
@@ -218,7 +218,7 @@ STRINGTABLE
 BEGIN\r
     IDS_MENUSWITCH          "S&witch..."\r
     IDS_MENUMERGE           "&Merge..."\r
-    IDS_MENUBRANCH          "Create Branch"\r
+    IDS_MENUBRANCH          "Create Branch..."\r
     IDS_MENUIMPORT          "&Import..."\r
     IDS_MENUEXPORT          "E&xport..."\r
     IDS_MENUSETTINGS        "&Settings"\r
@@ -256,12 +256,16 @@ END
 \r
 STRINGTABLE\r
 BEGIN\r
-       IDS_MENUTAG                             "Create Tag"\r
-       IDS_MENUFORMATPATCH             "Create Patch Serial"\r
-       IDS_MENUIMPORTPATCH             "Apply Patch Serial"\r
-       IDS_MENUCHERRYPICK              "Cherry Pick"\r
+       IDS_MENUTAG                             "Create Tag..."\r
+       IDS_MENUFORMATPATCH             "Create Patch Serial..."\r
+       IDS_MENUIMPORTPATCH             "Apply Patch Serial..."\r
+       IDS_MENUCHERRYPICK              "Cherry Pick..."\r
        IDS_MENUFETCH                   "Fetch..."\r
        IDS_MENUREBASE                  "*Rebase..."\r
+       IDS_MENUSTASHSAVE               "Stash Save"\r
+       IDS_MENUSTASHAPPLY              "Stash Apply"\r
+       IDS_MENUSUBADD                  "Submodule Add"\r
+       IDS_MENUSUBSYNC                 "Submodule Sync"\r
 END\r
 \r
 STRINGTABLE \r
@@ -276,7 +280,7 @@ BEGIN
     IDS_MENUDESCRENAME      "Renames files / folders inside version control"\r
     IDS_MENUREMOVE          "&Delete"\r
     IDS_MENUDESCREMOVE      "Deletes files / folders from version control"\r
-    IDS_MENUUPDATEEXT       "&Update to revision..."\r
+    IDS_MENUUPDATEEXT       "Submodule &Update"\r
     IDS_MENUDESCUPDATEEXT   "Updates the working copy to a specific revision"\r
     IDS_COLTITLESTATUS      "Git Status"\r
     IDS_COLDESCSTATUS       "Status of item in Git"\r
@@ -339,8 +343,8 @@ BEGIN
     IDS_DROPEXPORTMENU      "Git Export versioned items here"\r
     IDS_DROPEXPORTEXTENDEDMENU "Git Export all items here"\r
     IDS_MENUIGNOREMULTIPLEMASK "Ignore items by &extension"\r
-    IDS_MENUPULL            "Pull"\r
-    IDS_MENUPUSH            "Push"\r
+    IDS_MENUPULL            "Pull..."\r
+    IDS_MENUPUSH            "Push..."\r
     IDS_MENUCLONE           "Clone..."\r
 END\r
 \r