OSDN Git Service

Add "SVN Rebase" and "SVN DCommit" command at shell contextmenu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseShell / ContextMenu.cpp
index 1889ebf..9ae7b16 100644 (file)
@@ -41,7 +41,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuFetch,                                               MENUFETCH,                      IDI_PULL,                               IDS_MENUFETCH,                  IDS_MENUFETCH,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellMenuPush,                                                MENUPUSH,                       IDI_PUSH,                               IDS_MENUPUSH,                   IDS_MENUPULL,\r
+       { ShellMenuPush,                                                MENUPUSH,                       IDI_PUSH,                               IDS_MENUPUSH,                   IDS_MENUPUSH,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
 //     { ShellMenuCheckout,                                    MENUCHECKOUT,           IDI_CHECKOUT,                   IDS_MENUCHECKOUT,                       IDS_MENUDESCCHECKOUT,\r
@@ -50,10 +50,17 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 //     { ShellMenuUpdate,                                      MENUSUBUPDATE,                  IDI_UPDATE,                             IDS_MENUUPDATE,                         IDS_MENUDESCUPDATE,                             \r
 //     ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
+       { ShellSeparator, ITEMIS_GITSVN, 0, 0, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuCommit,                                              MENUCOMMIT,                     IDI_COMMIT,                             IDS_MENUCOMMIT,                         IDS_MENUDESCCOMMIT,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
+       { ShellMenuGitSVNDCommit,                               MENUSVNDCOMMIT,                 IDI_COMMIT,                     IDS_MENUSVNDCOMMIT,                     IDS_MENUSVNDCOMMIT_DESC,\r
+       ITEMIS_INSVN|ITEMIS_GITSVN, 0, ITEMIS_FOLDERINSVN|ITEMIS_GITSVN, 0, 0, 0, 0, 0 },\r
+\r
+       { ShellMenuGitSVNRebase,                                MENUSVNREBASE,          IDI_REBASE,                             IDS_MENUSVNREBASE,                              IDS_MENUSVNREBASE_DESC,\r
+       ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_GITSVN, 0, ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE|ITEMIS_GITSVN, 0, 0, 0, 0, 0},\r
+\r
        { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuDiff,                                                MENUDIFF,                       IDI_DIFF,                               IDS_MENUDIFF,                           IDS_MENUDESCDIFF,\r
@@ -628,6 +635,10 @@ STDMETHODIMP CShellExt::Initialize(LPCITEMIDLIST pIDFolder,
                {\r
                        itemStatesFolder |= ITEMIS_SUBMODULE;\r
                }\r
+               if (askedpath.HasGitSVNDir())\r
+               {\r
+                       itemStatesFolder |= ITEMIS_GITSVN;\r
+               }\r
                if (status == git_wc_status_ignored)\r
                        itemStatesFolder |= ITEMIS_IGNORED;\r
                itemStatesFolder |= ITEMIS_FOLDER;\r
@@ -1823,6 +1834,22 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                        svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
                                break;\r
+                       case ShellMenuGitSVNRebase:\r
+                               svnCmd += _T("svnrebase /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+                       case ShellMenuGitSVNDCommit:\r
+                               svnCmd += _T("svndcommit /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
                        case ShellMenuRebase:\r
                                svnCmd += _T("rebase /path:\"");\r
                                if (files_.size() > 0)\r