OSDN Git Service

Merge commit 'origin/master' into temp_rebase
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / Command.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #include "StdAfx.h"\r
20 #include "Command.h"\r
21 \r
22 #include "AboutCommand.h"\r
23 #include "CommitCommand.h"\r
24 #include "LogCommand.h"\r
25 \r
26 #include "CreateRepositoryCommand.h"\r
27 #include "CloneCommand.h"\r
28 #include "PrevDiffCommand.h"\r
29 #include "DiffCommand.h"\r
30 \r
31 #include "RenameCommand.h"\r
32 #include "RepoStatusCommand.h"\r
33 \r
34 #include "RevertCommand.h"\r
35 #include "RemoveCommand.h"\r
36 #include "PullCommand.h"\r
37 #include "FetchCommand.h"\r
38 #include "PushCommand.h"\r
39 #include "BranchCommand.h"\r
40 #include "TagCommand.h"\r
41 #include "MergeCommand.h"\r
42 #include "SwitchCommand.h"\r
43 #include "ExportCommand.h"\r
44 #include "AddCommand.h"\r
45 #include "IgnoreCommand.h"\r
46 #include "FormatPatchCommand.h"\r
47 #include "ImportPatchCommand.h"\r
48 #include "BlameCommand.h"\r
49 #include "SettingsCommand.h"\r
50 #include "ConflictEditorCommand.h"\r
51 #include "CleanupCommand.h"\r
52 #include "RebaseCommand.h"\r
53 #include "ResolveCommand.h"\r
54 #include "DropMoveCommand.h"\r
55 #include "DropCopyAddCommand.h"\r
56 #include "DropCopyCommand.h"\r
57 #include "DropExportCommand.h"\r
58 #include "HelpCommand.h"\r
59 #include "StashCommand.h"\r
60 #include "SubmoduleCommand.h"\r
61 #include "ReflogCommand.h"\r
62 #include "SendMailCommand.h"\r
63 #include "CatCommand.h"\r
64 #include "RefBrowseCommand.h"\r
65 \r
66 \r
67 #if 0\r
68 \r
69 \r
70 \r
71 #include "CheckoutCommand.h"\r
72 \r
73 \r
74 \r
75 #include "CopyCommand.h"\r
76 #include "CrashCommand.h"\r
77 #include "CreatePatchCommand.h"\r
78 \r
79 #include "DelUnversionedCommand.h"\r
80 \r
81 \r
82 \r
83 \r
84 \r
85 \r
86 #include "ImportCommand.h"\r
87 #include "LockCommand.h"\r
88 \r
89 \r
90 #include "MergeAllCommand.h"\r
91 #include "PasteCopyCommand.h"\r
92 #include "PasteMoveCommand.h"\r
93 \r
94 #include "PropertiesCommand.h"\r
95 #include "RebuildIconCacheCommand.h"\r
96 #include "RelocateCommand.h"\r
97 #include "RemoveCommand.h"\r
98 \r
99 #include "RepositoryBrowserCommand.h"\r
100 \r
101 \r
102 #include "RevertCommand.h"\r
103 #include "RevisiongraphCommand.h"\r
104 #include "RTFMCommand.h"\r
105 \r
106 #include "ShowCompareCommand.h"\r
107 \r
108 #include "UnIgnoreCommand.h"\r
109 #include "UnLockCommand.h"\r
110 #include "UpdateCheckCommand.h"\r
111 #include "UpdateCommand.h"\r
112 #include "UrlDiffCommand.h"\r
113 #endif\r
114 typedef enum\r
115 {\r
116         cmdAbout,\r
117         cmdAdd,\r
118         cmdBlame,\r
119         cmdBranch,\r
120         cmdCat,\r
121         cmdCheckout,\r
122         cmdCleanup,\r
123         cmdClone,\r
124         cmdCommit,\r
125         cmdConflictEditor,\r
126         cmdCopy,\r
127         cmdCrash,\r
128         cmdCreatePatch,\r
129         cmdDelUnversioned,\r
130         cmdDiff,\r
131         cmdDropCopy,\r
132         cmdDropCopyAdd,\r
133         cmdDropExport,\r
134         cmdDropMove,\r
135         cmdFetch,\r
136         cmdFormatPatch,\r
137         cmdExport,\r
138         cmdHelp,\r
139         cmdIgnore,\r
140         cmdImport,\r
141         cmdImportPatch,\r
142         cmdLock,\r
143         cmdLog,\r
144         cmdMerge,\r
145         cmdMergeAll,\r
146         cmdPasteCopy,\r
147         cmdPasteMove,\r
148         cmdPrevDiff,\r
149         cmdProperties,\r
150         cmdPull,\r
151         cmdPush,\r
152         cmdRTFM,\r
153         cmdRebuildIconCache,\r
154         cmdRelocate,\r
155         cmdRemove,\r
156         cmdRebase,\r
157         cmdRename,\r
158         cmdRepoBrowser,\r
159         cmdRepoCreate,\r
160         cmdRepoStatus,\r
161         cmdResolve,\r
162         cmdRevert,\r
163         cmdRevisionGraph,\r
164         cmdSendMail,\r
165         cmdSettings,\r
166         cmdShowCompare,\r
167         cmdSwitch,\r
168         cmdTag,\r
169         cmdUnIgnore,\r
170         cmdUnlock,\r
171         cmdUpdate,\r
172         cmdUpdateCheck,\r
173         cmdUrlDiff,     \r
174         cmdStashSave,   \r
175         cmdStashApply,\r
176         cmdStashList,\r
177         cmdSubAdd,              \r
178         cmdSubUpdate,\r
179         cmdSubSync,\r
180         cmdRefLog,\r
181         cmdRefBrowse\r
182         \r
183 } TGitCommand;\r
184 \r
185 static const struct CommandInfo\r
186 {\r
187         TGitCommand command;\r
188         LPCTSTR pCommandName;\r
189 } commandInfo[] = \r
190 {\r
191         {       cmdAbout,                       _T("about")                             },\r
192         {       cmdAdd,                         _T("add")                               },\r
193         {       cmdBlame,                       _T("blame")                             },\r
194         {       cmdBranch,                      _T("branch")                    },\r
195         {       cmdCat,                         _T("cat")                               },\r
196         {       cmdCheckout,            _T("checkout")                  },\r
197         {       cmdCleanup,                     _T("cleanup")                   },\r
198         {       cmdClone,                       _T("clone")                             },\r
199         {       cmdCommit,                      _T("commit")                    },\r
200         {       cmdConflictEditor,      _T("conflicteditor")    },\r
201         {       cmdCopy,                        _T("copy")                              },\r
202         {       cmdCrash,                       _T("crash")                             },\r
203         {       cmdCreatePatch,         _T("createpatch")               },\r
204         {       cmdDelUnversioned,      _T("delunversioned")    },\r
205         {       cmdDiff,                        _T("diff")                              },\r
206         {       cmdDropCopy,            _T("dropcopy")                  },\r
207         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
208         {       cmdDropExport,          _T("dropexport")                },\r
209         {       cmdDropMove,            _T("dropmove")                  },\r
210         {       cmdFetch,                       _T("fetch")                             },\r
211         {       cmdFormatPatch,         _T("formatpatch")               },\r
212         {       cmdExport,                      _T("export")                    },\r
213         {       cmdHelp,                        _T("help")                              },\r
214         {       cmdIgnore,                      _T("ignore")                    },\r
215         {       cmdImport,                      _T("import")                    },\r
216         {       cmdImportPatch,         _T("importpatch")               },\r
217         {       cmdLock,                        _T("lock")                              },\r
218         {       cmdLog,                         _T("log")                               },\r
219         {       cmdMerge,                       _T("merge")                             },\r
220         {       cmdMergeAll,            _T("mergeall")                  },\r
221         {       cmdPasteCopy,           _T("pastecopy")                 },\r
222         {       cmdPasteMove,           _T("pastemove")                 },\r
223         {       cmdPrevDiff,            _T("prevdiff")                  },\r
224         {       cmdProperties,          _T("properties")                },\r
225         {       cmdPull,                        _T("pull")                              },\r
226         {       cmdPush,                        _T("push")                              },\r
227         {       cmdRTFM,                        _T("rtfm")                              },\r
228         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
229         {       cmdRelocate,            _T("relocate")                  },\r
230         {       cmdRemove,                      _T("remove")                    },\r
231         {       cmdRebase,                      _T("rebase")                    },\r
232         {       cmdRename,                      _T("rename")                    },\r
233         {       cmdRepoBrowser,         _T("repobrowser")               },\r
234         {       cmdRepoCreate,          _T("repocreate")                },\r
235         {       cmdRepoStatus,          _T("repostatus")                },\r
236         {       cmdResolve,                     _T("resolve")                   },\r
237         {       cmdRevert,                      _T("revert")                    },\r
238         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
239         {       cmdSendMail,            _T("sendmail")                  },\r
240         {       cmdSettings,            _T("settings")                  },\r
241         {       cmdShowCompare,         _T("showcompare")               },\r
242         {       cmdSwitch,                      _T("switch")                    },\r
243         {       cmdTag,                         _T("tag")                               },\r
244         {       cmdUnIgnore,            _T("unignore")                  },\r
245         {       cmdUnlock,                      _T("unlock")                    },\r
246         {       cmdUpdate,                      _T("update")                    },\r
247         {       cmdUpdateCheck,         _T("updatecheck")               },\r
248         {       cmdUrlDiff,                     _T("urldiff")                   },\r
249         {       cmdStashSave,           _T("stashsave")                 },\r
250         {       cmdStashApply,          _T("stashapply")                },\r
251         {       cmdStashList,           _T("stashlist")                 },\r
252         {       cmdSubAdd,                      _T("subadd")                    },\r
253         {       cmdSubUpdate,           _T("subupdate")                 },\r
254         {       cmdSubSync,                     _T("subsync")                   },\r
255         {       cmdRefLog,                      _T("reflog")                    },\r
256         {       cmdRefBrowse,           _T("refbrowse")                 },\r
257 };\r
258 \r
259 \r
260 Command * CommandServer::GetCommand(const CString& sCmd)\r
261 {\r
262         // Look up the command\r
263         TGitCommand command = cmdAbout;         // Something harmless as a default\r
264         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
265         {\r
266                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
267                 {\r
268                         // We've found the command\r
269                         command = commandInfo[nCommand].command;\r
270                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
271                         ASSERT((int)command == nCommand);\r
272                         break;\r
273                 }\r
274         }\r
275 \r
276                 \r
277         // CBrowseRefsDlg dialog\r
278 \r
279 \r
280         switch (command)\r
281         {\r
282         case cmdAbout:\r
283                 return new AboutCommand;        \r
284         case cmdCommit:\r
285                 return new CommitCommand;\r
286         case cmdLog:\r
287                 return new LogCommand;\r
288         case cmdRepoCreate:\r
289                 return new CreateRepositoryCommand;\r
290         case cmdClone:\r
291                 return new CloneCommand;\r
292         case cmdPrevDiff:\r
293                 return new PrevDiffCommand;\r
294         case cmdDiff:\r
295                 return new DiffCommand;\r
296         case cmdRename:\r
297                 return new RenameCommand;\r
298         case cmdRepoStatus:\r
299                 return new RepoStatusCommand;\r
300         case cmdRemove:\r
301                 return new RemoveCommand;\r
302         case cmdRevert:\r
303                 return new RevertCommand;\r
304         case cmdPull:\r
305                 return new PullCommand;\r
306         case cmdFetch:\r
307                 return new FetchCommand;\r
308         case cmdPush:\r
309                 return new PushCommand;\r
310         case cmdBranch:\r
311                 return new BranchCommand;\r
312         case cmdTag:\r
313                 return new TagCommand;\r
314         case cmdMerge:\r
315                 return new MergeCommand;\r
316         case cmdSwitch:\r
317                 return new SwitchCommand;\r
318         case cmdExport:\r
319                 return new ExportCommand;\r
320         case cmdAdd:\r
321                 return new AddCommand;\r
322         case cmdIgnore:\r
323                 return new IgnoreCommand;\r
324         case cmdFormatPatch:\r
325                 return new FormatPatchCommand;\r
326         case cmdImportPatch:\r
327                 return new ImportPatchCommand;\r
328         case cmdBlame:\r
329                 return new BlameCommand;\r
330         case cmdSettings:\r
331                 return new SettingsCommand;\r
332         case cmdConflictEditor:\r
333                 return new ConflictEditorCommand;\r
334         case cmdCleanup:\r
335                 return new CleanupCommand;\r
336         case cmdRebase:\r
337                 return new RebaseCommand;\r
338         case cmdResolve:\r
339                 return new ResolveCommand;\r
340         case cmdDropMove:\r
341                 return new DropMoveCommand;\r
342 //      case cmdDropCopy:\r
343 //              return new DropCopyCommand;\r
344 //      case cmdDropCopyAdd:\r
345 //              return new DropCopyAddCommand;\r
346 //      case cmdDropExport:\r
347 //              return new DropExportCommand;\r
348         case cmdHelp:\r
349                 return new HelpCommand;\r
350         case cmdStashSave:\r
351                 return new StashSaveCommand;\r
352         case cmdStashApply:\r
353                 return new StashApplyCommand;\r
354         case cmdSubAdd:\r
355                 return new SubmoduleAddCommand;\r
356         case cmdSubUpdate:\r
357                 return new SubmoduleUpdateCommand;\r
358         case cmdRefLog:\r
359                 return new RefLogCommand;\r
360         case cmdSubSync:\r
361                 return new SubmoduleSyncCommand;\r
362         case cmdSendMail:\r
363                 return new SendMailCommand;\r
364         case cmdCat:\r
365                 return new CatCommand;\r
366         case cmdRefBrowse:\r
367                 return new RefBrowseCommand;\r
368 #if 0\r
369 \r
370         \r
371         case cmdCheckout:\r
372                 return new CheckoutCommand;\r
373 \r
374 \r
375         \r
376         case cmdCopy:\r
377                 return new CopyCommand;\r
378         case cmdCrash:\r
379                 return new CrashCommand;\r
380         case cmdCreatePatch:\r
381                 return new CreatePatchCommand;\r
382         case cmdDelUnversioned:\r
383                 return new DelUnversionedCommand;\r
384 \r
385 \r
386 \r
387         case cmdImport:\r
388                 return new ImportCommand;\r
389         case cmdLock:\r
390                 return new LockCommand;\r
391         case cmdMergeAll:\r
392                 return new MergeAllCommand;\r
393         case cmdPasteCopy:\r
394                 return new PasteCopyCommand;\r
395         case cmdPasteMove:\r
396                 return new PasteMoveCommand;\r
397         case cmdPrevDiff:\r
398                 return new PrevDiffCommand;\r
399         case cmdProperties:\r
400                 return new PropertiesCommand;\r
401         case cmdRTFM:\r
402                 return new RTFMCommand;\r
403         case cmdRebuildIconCache:\r
404                 return new RebuildIconCacheCommand;\r
405         case cmdRelocate:\r
406                 return new RelocateCommand;\r
407         case cmdRepoBrowser:\r
408                 return new RepositoryBrowserCommand;\r
409         case cmdRevisionGraph:\r
410                 return new RevisionGraphCommand;\r
411         case cmdShowCompare:\r
412                 return new ShowCompareCommand;\r
413         case cmdUnIgnore:\r
414                 return new UnIgnoreCommand;\r
415         case cmdUnlock:\r
416                 return new UnLockCommand;\r
417         case cmdUpdate:\r
418                 return new UpdateCommand;\r
419         case cmdUpdateCheck:\r
420                 return new UpdateCheckCommand;\r
421         case cmdUrlDiff:\r
422                 return new UrlDiffCommand;\r
423 #endif\r
424         default:\r
425                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
426                 return new AboutCommand;\r
427         }\r
428 }\r