OSDN Git Service

Add swtich fetch branch tag command at ContextMenu.cpp
authorFrank Li <lznuaa@gmail.com>
Sat, 3 Jan 2009 07:48:12 +0000 (15:48 +0800)
committerFrank Li <lznuaa@gmail.com>
Sat, 3 Jan 2009 07:48:12 +0000 (15:48 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
13 files changed:
src/Resources/tag.ico [new file with mode: 0644]
src/TortoiseProc/Commands/FetchCommand.cpp
src/TortoiseProc/Commands/PullCommand.cpp
src/TortoiseProc/PullFetchDlg.cpp
src/TortoiseProc/PullFetchDlg.h
src/TortoiseProc/TortoiseProc.vcproj
src/TortoiseProc/TortoiseProc.vcproj.FSL.B20596.user
src/TortoiseShell/ContextMenu.cpp
src/TortoiseShell/Globals.h
src/TortoiseShell/ShellCache.h
src/TortoiseShell/ShellExt.h
src/TortoiseShell/resource.h
src/TortoiseShell/resourceshell.rc

diff --git a/src/Resources/tag.ico b/src/Resources/tag.ico
new file mode 100644 (file)
index 0000000..0d742db
Binary files /dev/null and b/src/Resources/tag.ico differ
index 130716a..6f43057 100644 (file)
@@ -17,7 +17,7 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
 //\r
 #include "StdAfx.h"\r
-#include "PullCommand.h"\r
+#include "FetchCommand.h"\r
 \r
 //#include "SVNProgressDlg.h"\r
 #include "StringUtils.h"\r
 #include "PullFetchDlg.h"\r
 #include "ProgressDlg.h"\r
 \r
-bool PullCommand::Execute()\r
+bool FetchCommand::Execute()\r
 {\r
        CPullFetchDlg dlg;\r
+       dlg.m_IsPull=FALSE;\r
+\r
        if(dlg.DoModal()==IDOK)\r
        {\r
                CString url;\r
                url=dlg.m_RemoteURL;\r
                CString cmd;\r
-               cmd.Format(_T("git.exe pull \"%s\""),url);\r
+               cmd.Format(_T("git.exe fetch \"%s\""),url);\r
                CProgressDlg progress;\r
                progress.m_GitCmd=cmd;\r
                if(progress.DoModal()==IDOK)\r
index c41e2ec..593df64 100644 (file)
@@ -17,7 +17,7 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
 //\r
 #include "StdAfx.h"\r
-#include "FetchCommand.h"\r
+#include "PullCommand.h"\r
 \r
 //#include "SVNProgressDlg.h"\r
 #include "StringUtils.h"\r
 #include "PullFetchDlg.h"\r
 #include "ProgressDlg.h"\r
 \r
-bool FetchCommand::Execute()\r
+bool PullCommand::Execute()\r
 {\r
        CPullFetchDlg dlg;\r
+       dlg.m_IsPull=TRUE;\r
        if(dlg.DoModal()==IDOK)\r
        {\r
                CString url;\r
                url=dlg.m_RemoteURL;\r
                CString cmd;\r
-               cmd.Format(_T("git.exe fetch \"%s\""),url);\r
+               cmd.Format(_T("git.exe pull \"%s\""),url);\r
                CProgressDlg progress;\r
                progress.m_GitCmd=cmd;\r
                if(progress.DoModal()==IDOK)\r
index 72949dc..dab4b67 100644 (file)
@@ -13,7 +13,7 @@ IMPLEMENT_DYNAMIC(CPullFetchDlg, CResizableStandAloneDialog)
 CPullFetchDlg::CPullFetchDlg(CWnd* pParent /*=NULL*/)\r
        : CResizableStandAloneDialog(CPullFetchDlg::IDD, pParent)\r
 {\r
-\r
+       m_IsPull=TRUE;\r
 }\r
 \r
 CPullFetchDlg::~CPullFetchDlg()\r
@@ -52,7 +52,10 @@ BOOL CPullFetchDlg::OnInitDialog()
        m_Other.LoadHistory(_T("Software\\TortoiseGit\\History\\PullURLS"), _T("url"));\r
        m_Other.SetCurSel(0);\r
 \r
-       \r
+       if(m_IsPull)\r
+               this->SetWindowTextW(_T("Pull"));\r
+       else\r
+               this->SetWindowTextW(_T("Fetch"));\r
 \r
        return TRUE;\r
 }\r
index 358e660..252fb39 100644 (file)
@@ -24,6 +24,7 @@ protected:
        \r
        DECLARE_MESSAGE_MAP()\r
 public:\r
+       BOOL m_IsPull;\r
        afx_msg void OnBnClickedRd();\r
        afx_msg void OnBnClickedOk();\r
        CString m_RemoteURL;\r
index 59d0b88..e435791 100644 (file)
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\explorer.ico"\r
+                               RelativePath="..\Resources\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\explorer.ico"\r
+                               RelativePath=".\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\newfolder.ico"\r
+                               RelativePath="..\Resources\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\newfolder.ico"\r
+                               RelativePath=".\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\open.ico"\r
+                               RelativePath="..\Resources\open.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\open.ico"\r
+                               RelativePath=".\open.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\save.ico"\r
+                               RelativePath="..\Resources\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\save.ico"\r
+                               RelativePath=".\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\saveas.ico"\r
+                               RelativePath="..\Resources\saveas.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\saveas.ico"\r
+                               RelativePath=".\saveas.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\up.ico"\r
+                               RelativePath="..\Resources\up.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\up.ico"\r
+                               RelativePath=".\up.ico"\r
                                >\r
                        </File>\r
                        <File\r
index 714c8c9..86af789 100644 (file)
@@ -10,8 +10,8 @@
                        >\r
                        <DebugSettings\r
                                Command="$(TargetPath)"\r
-                               WorkingDirectory="D:\"\r
-                               CommandArguments="/command:log /path:&quot;D:\\Test&quot;"\r
+                               WorkingDirectory="D:\Profiles\b20596\tortoisegit"\r
+                               CommandArguments="/command:push /path:&quot;D:\\Profiles\\b20596\\buildtest\\TortoiseGit&quot;"\r
                                Attach="false"\r
                                DebuggerType="3"\r
                                Remote="1"\r
index 699db4c..4cba80d 100644 (file)
@@ -35,9 +35,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuClone,                                               MENUCLONE,                      IDI_CLONE,                              IDS_MENUCLONE,                  IDS_MENUDESCCHECKOUT,\r
        ITEMIS_FOLDER, ITEMIS_INSVN|ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellMenuPull,                                                MENUPULL,                       IDI_PULL,                               IDS_MENUPULL,\r
+       { ShellMenuPull,                                                MENUPULL,                       IDI_PULL,                               IDS_MENUPULL,                   IDS_MENUPULL,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
-       { ShellMenuPush,                                                MENUPUSH,                       IDI_PUSH,                               IDS_MENUPUSH,\r
+\r
+       { 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
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
 //     { ShellMenuCheckout,                                    MENUCHECKOUT,           IDI_CHECKOUT,                   IDS_MENUCHECKOUT,                       IDS_MENUDESCCHECKOUT,\r
@@ -126,8 +130,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { 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
+       { ShellMenuTag,                                                 MENUTAG,                        IDI_TAG,                                IDS_MENUTAG,                            IDS_MENUDESCCOPY,\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
        { ShellMenuExport,                                              MENUEXPORT,                     IDI_EXPORT,                             IDS_MENUEXPORT,                         IDS_MENUDESCEXPORT,\r
-       ITEMIS_INSVN|ITEMIS_ONLYONE, 0, 0, 0, 0, 0, 0, 0 },\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
 //     { ShellMenuRelocate,                                    MENURELOCATE,           IDI_RELOCATE,                   IDS_MENURELOCATE,                       IDS_MENUDESCRELOCATE,\r
 //     ITEMIS_INSVN|ITEMIS_FOLDER|ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, 0, ITEMIS_FOLDERINSVN|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 },\r
@@ -149,14 +158,24 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuBlame,                                               MENUBLAME,                      IDI_BLAME,                              IDS_MENUBLAME,                          IDS_MENUDESCBLAME,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER|ITEMIS_ADDED, 0, 0, 0, 0, 0, 0 },\r
 \r
-//     { ShellMenuIgnoreSub,                                   MENUIGNORE,                     IDI_IGNORE,                             IDS_MENUIGNORE,                         IDS_MENUDESCIGNORE,\r
-//     ITEMIS_INVERSIONEDFOLDER, ITEMIS_IGNORED|ITEMIS_INSVN, 0, 0, 0, 0, 0, 0 },\r
+       { ShellMenuIgnoreSub,                                   MENUIGNORE,                     IDI_IGNORE,                             IDS_MENUIGNORE,                         IDS_MENUDESCIGNORE,\r
+       ITEMIS_INVERSIONEDFOLDER, ITEMIS_IGNORED|ITEMIS_INSVN, 0, 0, 0, 0, 0, 0 },\r
 \r
-//     { ShellMenuUnIgnoreSub,                                 MENUIGNORE,                     IDI_IGNORE,                             IDS_MENUUNIGNORE,                       IDS_MENUDESCUNIGNORE,\r
-//     ITEMIS_IGNORED, 0, 0, 0, 0, 0, 0, 0 },\r
+       { ShellMenuUnIgnoreSub,                                 MENUIGNORE,                     IDI_IGNORE,                             IDS_MENUUNIGNORE,                       IDS_MENUDESCUNIGNORE,\r
+       ITEMIS_IGNORED, 0, 0, 0, 0, 0, 0, 0 },\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
+       { ShellMenuFormatPatch,                                 MENUFORMATPATCH,        IDI_CREATEPATCH,                IDS_MENUFORMATPATCH,            IDS_MENUDESCCREATEPATCH,\r
+       ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
+       { ShellMenuImportPatch,                                 MENUIMPORTPATCH,        IDI_PATCH,                              IDS_MENUIMPORTPATCH,            IDS_MENUDESCCREATEPATCH,\r
+       ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
+\r
        { ShellMenuCreatePatch,                                 MENUCREATEPATCH,        IDI_CREATEPATCH,                IDS_MENUCREATEPATCH,            IDS_MENUDESCCREATEPATCH,\r
        ITEMIS_INSVN, ITEMIS_NORMAL, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
@@ -1773,19 +1792,74 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                svnCmd += _T("\"");\r
                                break;\r
                        case ShellMenuPull:\r
-                               tempfile = WriteFileListToTempFile();\r
-                               svnCmd += _T("pull /pathfile:\"");\r
-                               svnCmd += tempfile;\r
+                               svnCmd += _T("pull /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
-                               svnCmd += _T(" /deletepathfile");\r
                                break;\r
                        case ShellMenuPush:\r
-                               tempfile = WriteFileListToTempFile();\r
-                               svnCmd += _T("push /pathfile:\"");\r
-                               svnCmd += tempfile;\r
+                               svnCmd += _T("push /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+                       case ShellMenuBranch:\r
+                               svnCmd += _T("branch /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
-                               svnCmd += _T(" /deletepathfile");\r
                                break;\r
+                       \r
+                       case ShellMenuTag:\r
+                               svnCmd += _T("tag /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
+                       case ShellMenuFormatPatch:\r
+                               svnCmd += _T("formatpatch /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
+                       case ShellMenuImportPatch:\r
+                               svnCmd += _T("importpatch /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
+                       case ShellMenuCherryPick:\r
+                               svnCmd += _T("cherrypick /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+                       case ShellMenuFetch:\r
+                               svnCmd += _T("fetch /path:\"");\r
+                               if (files_.size() > 0)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
+\r
                        default:\r
                                break;\r
                                //#endregion\r
index 351545d..fc9236c 100644 (file)
 #define MENUPULL                       0x0000000800000000\r
 #define MENUPUSH                       0x0000001000000000\r
 #define MENUCLONE           0x0000002000000000\r
+#define MENUTAG                                0x0000004000000000\r
+#define MENUFORMATPATCH                0x0000008000000000\r
+#define MENUIMPORTPATCH                0x0000010000000000\r
+#define MENUCHERRYPICK         0x0000020000000000\r
+#define MENUFETCH                      0x0000040000000000\r
+\r
 \r
 #define MENUSETTINGS           0x2000000000000000\r
 #define MENUHELP                       0x4000000000000000\r
index 69d768b..849b5ca 100644 (file)
@@ -82,8 +82,8 @@ public:
                getlocktopticker = cachetypeticker;\r
                excludedasnormalticker = cachetypeticker;\r
                excontextticker = cachetypeticker;\r
-               menulayoutlow = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntries"),               MENUCREATEREPOS|MENUCLONE|MENUPULL|MENUPUSH|MENUUPDATE|MENUCOMMIT);\r
-               menulayouthigh = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntrieshigh"), (MENUCREATEREPOS|MENUCLONE|MENUPULL|MENUPUSH|MENUUPDATE|MENUCOMMIT)>>32);\r
+               menulayoutlow = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntries"),               MENUCREATEREPOS|MENUCLONE|MENUUPDATE|MENUCOMMIT);\r
+               menulayouthigh = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntrieshigh"), (MENUCREATEREPOS|MENUCLONE|MENUUPDATE|MENUCOMMIT)>>32);\r
                menumasklow_lm = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntriesMaskLow"), 0, FALSE, HKEY_LOCAL_MACHINE);\r
                menumaskhigh_lm = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntriesMaskHigh"), 0, FALSE, HKEY_LOCAL_MACHINE);\r
                menumasklow_cu = CRegStdWORD(_T("Software\\ToroiseGit\\ContextMenuEntriesMaskLow"), 0);\r
index 16a4793..2ec5341 100644 (file)
@@ -150,6 +150,12 @@ protected:
                ShellMenuPull,\r
                ShellMenuPush,\r
                ShellMenuClone,\r
+               ShellMenuBranch,\r
+               ShellMenuTag,\r
+               ShellMenuFormatPatch,\r
+               ShellMenuImportPatch,\r
+               ShellMenuCherryPick,\r
+               ShellMenuFetch,\r
                ShellMenuLastEntry                      // used to mark the menu array end\r
        };\r
 \r
index 2cfe3a1..c42a1dc 100644 (file)
 #define IDS_git_DEPTH_EXCLUDE           304\r
 #define IDS_git_DEPTH_UNKNOWN           305\r
 #define IDS_git_DEPTH_WORKING           306\r
+#define IDS_MENUTAG                                            307\r
+#define        IDS_MENUFORMATPATCH                             308\r
+#define IDS_MENUIMPORTPATCH                            309\r
+#define IDS_MENUCHERRYPICK                             310\r
+#define IDS_MENUFETCH                                  311\r
 #define IDC_REVISION                    1001\r
 #define IDC_LOCKED                      1002\r
 #define IDC_REPOURL                     1003\r
 #define IDI_ICON1                       5165\r
 #define IDI_PUSH                        5166\r
 #define IDI_CLONE                       5167\r
+#define IDI_TAG                                                        5168\r
 #define IDC_LOCKOWNER                   11019\r
 #define IDC_LOCKDATE                    11020\r
 #define IDC_EDITPROPERTIES              11021\r
index f4b2c83..6c5bd6f 100644 (file)
@@ -71,6 +71,7 @@ IDI_APPSMALL            ICON                    "..\\Resources\\TortoiseSmall.ic
 IDI_CLIPPASTE           ICON                    "..\\Resources\\clippaste.ico"\r
 IDI_PUSH                ICON                    "..\\resources\\Push.ico"\r
 IDI_CLONE               ICON                    "..\\resources\\checkout.ico"\r
+IDI_TAG                                        ICON                                    "..\\resources\\Tag.ico"\r
 #endif    // Neutral resources\r
 /////////////////////////////////////////////////////////////////////////////\r
 \r
@@ -247,6 +248,15 @@ BEGIN
     IDS_STATUSMODIFIED      "modified"\r
 END\r
 \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_MENUFETCH                   "Fetch"\r
+END\r
+\r
 STRINGTABLE \r
 BEGIN\r
     IDS_STATUSMERGED        "merged"\r