OSDN Git Service

Add Patch Import Command (git am)
[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 \r
49 \r
50 #if 0\r
51 \r
52 #include "BlameCommand.h"\r
53 #include "CatCommand.h"\r
54 #include "CheckoutCommand.h"\r
55 #include "CleanupCommand.h"\r
56 \r
57 #include "ConflictEditorCommand.h"\r
58 #include "CopyCommand.h"\r
59 #include "CrashCommand.h"\r
60 #include "CreatePatchCommand.h"\r
61 \r
62 #include "DelUnversionedCommand.h"\r
63 \r
64 #include "DropCopyAddCommand.h"\r
65 #include "DropCopyCommand.h"\r
66 #include "DropExportCommand.h"\r
67 #include "DropMoveCommand.h"\r
68 \r
69 #include "HelpCommand.h"\r
70 \r
71 #include "ImportCommand.h"\r
72 #include "LockCommand.h"\r
73 \r
74 \r
75 #include "MergeAllCommand.h"\r
76 #include "PasteCopyCommand.h"\r
77 #include "PasteMoveCommand.h"\r
78 \r
79 #include "PropertiesCommand.h"\r
80 #include "RebuildIconCacheCommand.h"\r
81 #include "RelocateCommand.h"\r
82 #include "RemoveCommand.h"\r
83 \r
84 #include "RepositoryBrowserCommand.h"\r
85 \r
86 #include "ResolveCommand.h"\r
87 #include "RevertCommand.h"\r
88 #include "RevisiongraphCommand.h"\r
89 #include "RTFMCommand.h"\r
90 #include "SettingsCommand.h"\r
91 #include "ShowCompareCommand.h"\r
92 \r
93 #include "UnIgnoreCommand.h"\r
94 #include "UnLockCommand.h"\r
95 #include "UpdateCheckCommand.h"\r
96 #include "UpdateCommand.h"\r
97 #include "UrlDiffCommand.h"\r
98 #endif\r
99 typedef enum\r
100 {\r
101         cmdAbout,\r
102         cmdAdd,\r
103         cmdBlame,\r
104         cmdBranch,\r
105         cmdCat,\r
106         cmdCheckout,\r
107         cmdCleanup,\r
108         cmdClone,\r
109         cmdCommit,\r
110         cmdConflictEditor,\r
111         cmdCopy,\r
112         cmdCrash,\r
113         cmdCreatePatch,\r
114         cmdDelUnversioned,\r
115         cmdDiff,\r
116         cmdDropCopy,\r
117         cmdDropCopyAdd,\r
118         cmdDropExport,\r
119         cmdDropMove,\r
120         cmdFetch,\r
121         cmdFormatPatch,\r
122         cmdExport,\r
123         cmdHelp,\r
124         cmdIgnore,\r
125         cmdImport,\r
126         cmdImportPatch,\r
127         cmdLock,\r
128         cmdLog,\r
129         cmdMerge,\r
130         cmdMergeAll,\r
131         cmdPasteCopy,\r
132         cmdPasteMove,\r
133         cmdPrevDiff,\r
134         cmdProperties,\r
135         cmdPull,\r
136         cmdPush,\r
137         cmdRTFM,\r
138         cmdRebuildIconCache,\r
139         cmdRelocate,\r
140         cmdRemove,\r
141         cmdRename,\r
142         cmdRepoBrowser,\r
143         cmdRepoCreate,\r
144         cmdRepoStatus,\r
145         cmdResolve,\r
146         cmdRevert,\r
147         cmdRevisionGraph,\r
148         cmdSettings,\r
149         cmdShowCompare,\r
150         cmdSwitch,\r
151         cmdTag,\r
152         cmdUnIgnore,\r
153         cmdUnlock,\r
154         cmdUpdate,\r
155         cmdUpdateCheck,\r
156         cmdUrlDiff,\r
157         \r
158 } TGitCommand;\r
159 \r
160 static const struct CommandInfo\r
161 {\r
162         TGitCommand command;\r
163         LPCTSTR pCommandName;\r
164 } commandInfo[] = \r
165 {\r
166         {       cmdAbout,                       _T("about")                             },\r
167         {       cmdAdd,                         _T("add")                               },\r
168         {       cmdBlame,                       _T("blame")                             },\r
169         {       cmdBranch,                      _T("branch")                    },\r
170         {       cmdCat,                         _T("cat")                               },\r
171         {       cmdCheckout,            _T("checkout")                  },\r
172         {       cmdCleanup,                     _T("cleanup")                   },\r
173         {       cmdClone,                       _T("clone")                             },\r
174         {       cmdCommit,                      _T("commit")                    },\r
175         {       cmdConflictEditor,      _T("conflicteditor")    },\r
176         {       cmdCopy,                        _T("copy")                              },\r
177         {       cmdCrash,                       _T("crash")                             },\r
178         {       cmdCreatePatch,         _T("createpatch")               },\r
179         {       cmdDelUnversioned,      _T("delunversioned")    },\r
180         {       cmdDiff,                        _T("diff")                              },\r
181         {       cmdDropCopy,            _T("dropcopy")                  },\r
182         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
183         {       cmdDropExport,          _T("dropexport")                },\r
184         {       cmdDropMove,            _T("dropmove")                  },\r
185         {       cmdFetch,                       _T("fetch")                             },\r
186         {       cmdFormatPatch,         _T("formatpatch")               },\r
187         {       cmdExport,                      _T("export")                    },\r
188         {       cmdHelp,                        _T("help")                              },\r
189         {       cmdIgnore,                      _T("ignore")                    },\r
190         {       cmdImport,                      _T("import")                    },\r
191         {       cmdImportPatch,         _T("importpatch")               },\r
192         {       cmdLock,                        _T("lock")                              },\r
193         {       cmdLog,                         _T("log")                               },\r
194         {       cmdMerge,                       _T("merge")                             },\r
195         {       cmdMergeAll,            _T("mergeall")                  },\r
196         {       cmdPasteCopy,           _T("pastecopy")                 },\r
197         {       cmdPasteMove,           _T("pastemove")                 },\r
198         {       cmdPrevDiff,            _T("prevdiff")                  },\r
199         {       cmdProperties,          _T("properties")                },\r
200         {       cmdPull,                        _T("pull")                              },\r
201         {       cmdPush,                        _T("push")                              },\r
202         {       cmdRTFM,                        _T("rtfm")                              },\r
203         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
204         {       cmdRelocate,            _T("relocate")                  },\r
205         {       cmdRemove,                      _T("remove")                    },\r
206         {       cmdRename,                      _T("rename")                    },\r
207         {       cmdRepoBrowser,         _T("repobrowser")               },\r
208         {       cmdRepoCreate,          _T("repocreate")                },\r
209         {       cmdRepoStatus,          _T("repostatus")                },\r
210         {       cmdResolve,                     _T("resolve")                   },\r
211         {       cmdRevert,                      _T("revert")                    },\r
212         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
213         {       cmdSettings,            _T("settings")                  },\r
214         {       cmdShowCompare,         _T("showcompare")               },\r
215         {       cmdSwitch,                      _T("switch")                    },\r
216         {       cmdTag,                         _T("tag")                               },\r
217         {       cmdUnIgnore,            _T("unignore")                  },\r
218         {       cmdUnlock,                      _T("unlock")                    },\r
219         {       cmdUpdate,                      _T("update")                    },\r
220         {       cmdUpdateCheck,         _T("updatecheck")               },\r
221         {       cmdUrlDiff,                     _T("urldiff")                   },\r
222 };\r
223 \r
224 \r
225 \r
226 \r
227 Command * CommandServer::GetCommand(const CString& sCmd)\r
228 {\r
229         // Look up the command\r
230         TGitCommand command = cmdAbout;         // Something harmless as a default\r
231         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
232         {\r
233                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
234                 {\r
235                         // We've found the command\r
236                         command = commandInfo[nCommand].command;\r
237                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
238                         ASSERT((int)command == nCommand);\r
239                         break;\r
240                 }\r
241         }\r
242 \r
243 \r
244 \r
245         switch (command)\r
246         {\r
247         case cmdAbout:\r
248                 return new AboutCommand;        \r
249         case cmdCommit:\r
250                 return new CommitCommand;\r
251         case cmdLog:\r
252                 return new LogCommand;\r
253         case cmdRepoCreate:\r
254                 return new CreateRepositoryCommand;\r
255         case cmdClone:\r
256                 return new CloneCommand;\r
257         case cmdPrevDiff:\r
258                 return new PrevDiffCommand;\r
259         case cmdDiff:\r
260                 return new DiffCommand;\r
261         case cmdRename:\r
262                 return new RenameCommand;\r
263         case cmdRepoStatus:\r
264                 return new RepoStatusCommand;\r
265         case cmdRemove:\r
266                 return new RemoveCommand;\r
267         case cmdRevert:\r
268                 return new RevertCommand;\r
269         case cmdPull:\r
270                 return new PullCommand;\r
271         case cmdFetch:\r
272                 return new FetchCommand;\r
273         case cmdPush:\r
274                 return new PushCommand;\r
275         case cmdBranch:\r
276                 return new BranchCommand;\r
277         case cmdTag:\r
278                 return new TagCommand;\r
279         case cmdMerge:\r
280                 return new MergeCommand;\r
281         case cmdSwitch:\r
282                 return new SwitchCommand;\r
283         case cmdExport:\r
284                 return new ExportCommand;\r
285         case cmdAdd:\r
286                 return new AddCommand;\r
287         case cmdIgnore:\r
288                 return new IgnoreCommand;\r
289         case cmdFormatPatch:\r
290                 return new FormatPatchCommand;\r
291         case cmdImportPatch:\r
292                 return new ImportPatchCommand;\r
293 \r
294 #if 0\r
295 \r
296         case cmdBlame:\r
297                 return new BlameCommand;\r
298         case cmdCat:\r
299                 return new CatCommand;\r
300         case cmdCheckout:\r
301                 return new CheckoutCommand;\r
302         case cmdCleanup:\r
303                 return new CleanupCommand;\r
304 \r
305         case cmdConflictEditor:\r
306                 return new ConflictEditorCommand;\r
307         case cmdCopy:\r
308                 return new CopyCommand;\r
309         case cmdCrash:\r
310                 return new CrashCommand;\r
311         case cmdCreatePatch:\r
312                 return new CreatePatchCommand;\r
313         case cmdDelUnversioned:\r
314                 return new DelUnversionedCommand;\r
315 \r
316         case cmdDropCopy:\r
317                 return new DropCopyCommand;\r
318         case cmdDropCopyAdd:\r
319                 return new DropCopyAddCommand;\r
320         case cmdDropExport:\r
321                 return new DropExportCommand;\r
322         case cmdDropMove:\r
323                 return new DropMoveCommand;\r
324 \r
325         case cmdHelp:\r
326                 return new HelpCommand;\r
327 \r
328         case cmdImport:\r
329                 return new ImportCommand;\r
330         case cmdLock:\r
331                 return new LockCommand;\r
332 \r
333         case cmdMerge:\r
334                 return new MergeCommand;\r
335         case cmdMergeAll:\r
336                 return new MergeAllCommand;\r
337         case cmdPasteCopy:\r
338                 return new PasteCopyCommand;\r
339         case cmdPasteMove:\r
340                 return new PasteMoveCommand;\r
341         case cmdPrevDiff:\r
342                 return new PrevDiffCommand;\r
343         case cmdProperties:\r
344                 return new PropertiesCommand;\r
345         case cmdRTFM:\r
346                 return new RTFMCommand;\r
347         case cmdRebuildIconCache:\r
348                 return new RebuildIconCacheCommand;\r
349         case cmdRelocate:\r
350                 return new RelocateCommand;\r
351         case cmdRemove:\r
352                 return new RemoveCommand;\r
353 \r
354         case cmdRepoBrowser:\r
355                 return new RepositoryBrowserCommand;\r
356 \r
357 \r
358         case cmdResolve:\r
359                 return new ResolveCommand;\r
360 \r
361         case cmdRevisionGraph:\r
362                 return new RevisionGraphCommand;\r
363         case cmdSettings:\r
364                 return new SettingsCommand;\r
365         case cmdShowCompare:\r
366                 return new ShowCompareCommand;\r
367 \r
368         case cmdUnIgnore:\r
369                 return new UnIgnoreCommand;\r
370         case cmdUnlock:\r
371                 return new UnLockCommand;\r
372         case cmdUpdate:\r
373                 return new UpdateCommand;\r
374         case cmdUpdateCheck:\r
375                 return new UpdateCheckCommand;\r
376         case cmdUrlDiff:\r
377                 return new UrlDiffCommand;\r
378 #endif\r
379         default:\r
380                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
381                 return new AboutCommand;\r
382         }\r
383 }\r