OSDN Git Service

BranchView: Show commit subject and date
[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 \r
65 #include "BrowseRefsDlg.h"\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         \r
182 } TGitCommand;\r
183 \r
184 static const struct CommandInfo\r
185 {\r
186         TGitCommand command;\r
187         LPCTSTR pCommandName;\r
188 } commandInfo[] = \r
189 {\r
190         {       cmdAbout,                       _T("about")                             },\r
191         {       cmdAdd,                         _T("add")                               },\r
192         {       cmdBlame,                       _T("blame")                             },\r
193         {       cmdBranch,                      _T("branch")                    },\r
194         {       cmdCat,                         _T("cat")                               },\r
195         {       cmdCheckout,            _T("checkout")                  },\r
196         {       cmdCleanup,                     _T("cleanup")                   },\r
197         {       cmdClone,                       _T("clone")                             },\r
198         {       cmdCommit,                      _T("commit")                    },\r
199         {       cmdConflictEditor,      _T("conflicteditor")    },\r
200         {       cmdCopy,                        _T("copy")                              },\r
201         {       cmdCrash,                       _T("crash")                             },\r
202         {       cmdCreatePatch,         _T("createpatch")               },\r
203         {       cmdDelUnversioned,      _T("delunversioned")    },\r
204         {       cmdDiff,                        _T("diff")                              },\r
205         {       cmdDropCopy,            _T("dropcopy")                  },\r
206         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
207         {       cmdDropExport,          _T("dropexport")                },\r
208         {       cmdDropMove,            _T("dropmove")                  },\r
209         {       cmdFetch,                       _T("fetch")                             },\r
210         {       cmdFormatPatch,         _T("formatpatch")               },\r
211         {       cmdExport,                      _T("export")                    },\r
212         {       cmdHelp,                        _T("help")                              },\r
213         {       cmdIgnore,                      _T("ignore")                    },\r
214         {       cmdImport,                      _T("import")                    },\r
215         {       cmdImportPatch,         _T("importpatch")               },\r
216         {       cmdLock,                        _T("lock")                              },\r
217         {       cmdLog,                         _T("log")                               },\r
218         {       cmdMerge,                       _T("merge")                             },\r
219         {       cmdMergeAll,            _T("mergeall")                  },\r
220         {       cmdPasteCopy,           _T("pastecopy")                 },\r
221         {       cmdPasteMove,           _T("pastemove")                 },\r
222         {       cmdPrevDiff,            _T("prevdiff")                  },\r
223         {       cmdProperties,          _T("properties")                },\r
224         {       cmdPull,                        _T("pull")                              },\r
225         {       cmdPush,                        _T("push")                              },\r
226         {       cmdRTFM,                        _T("rtfm")                              },\r
227         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
228         {       cmdRelocate,            _T("relocate")                  },\r
229         {       cmdRemove,                      _T("remove")                    },\r
230         {       cmdRebase,                      _T("rebase")                    },\r
231         {       cmdRename,                      _T("rename")                    },\r
232         {       cmdRepoBrowser,         _T("repobrowser")               },\r
233         {       cmdRepoCreate,          _T("repocreate")                },\r
234         {       cmdRepoStatus,          _T("repostatus")                },\r
235         {       cmdResolve,                     _T("resolve")                   },\r
236         {       cmdRevert,                      _T("revert")                    },\r
237         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
238         {       cmdSendMail,            _T("sendmail")                  },\r
239         {       cmdSettings,            _T("settings")                  },\r
240         {       cmdShowCompare,         _T("showcompare")               },\r
241         {       cmdSwitch,                      _T("switch")                    },\r
242         {       cmdTag,                         _T("tag")                               },\r
243         {       cmdUnIgnore,            _T("unignore")                  },\r
244         {       cmdUnlock,                      _T("unlock")                    },\r
245         {       cmdUpdate,                      _T("update")                    },\r
246         {       cmdUpdateCheck,         _T("updatecheck")               },\r
247         {       cmdUrlDiff,                     _T("urldiff")                   },\r
248         {       cmdStashSave,           _T("stashsave")                 },\r
249         {       cmdStashApply,          _T("stashapply")                },\r
250         {       cmdStashList,           _T("stashlist")                 },\r
251         {       cmdSubAdd,                      _T("subadd")                    },\r
252         {       cmdSubUpdate,           _T("subupdate")                 },\r
253         {       cmdSubSync,                     _T("subsync")                   },\r
254         {       cmdRefLog,                      _T("reflog")                    }\r
255 };\r
256 \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 #if 1\r
279         class TestCommand : public Command\r
280         {\r
281                 virtual bool Execute()\r
282                 {\r
283                         CBrowseRefsDlg().DoModal();\r
284                         return true;\r
285                 }\r
286         };\r
287         return new TestCommand;\r
288 #endif\r
289 \r
290         switch (command)\r
291         {\r
292         case cmdAbout:\r
293                 return new AboutCommand;        \r
294         case cmdCommit:\r
295                 return new CommitCommand;\r
296         case cmdLog:\r
297                 return new LogCommand;\r
298         case cmdRepoCreate:\r
299                 return new CreateRepositoryCommand;\r
300         case cmdClone:\r
301                 return new CloneCommand;\r
302         case cmdPrevDiff:\r
303                 return new PrevDiffCommand;\r
304         case cmdDiff:\r
305                 return new DiffCommand;\r
306         case cmdRename:\r
307                 return new RenameCommand;\r
308         case cmdRepoStatus:\r
309                 return new RepoStatusCommand;\r
310         case cmdRemove:\r
311                 return new RemoveCommand;\r
312         case cmdRevert:\r
313                 return new RevertCommand;\r
314         case cmdPull:\r
315                 return new PullCommand;\r
316         case cmdFetch:\r
317                 return new FetchCommand;\r
318         case cmdPush:\r
319                 return new PushCommand;\r
320         case cmdBranch:\r
321                 return new BranchCommand;\r
322         case cmdTag:\r
323                 return new TagCommand;\r
324         case cmdMerge:\r
325                 return new MergeCommand;\r
326         case cmdSwitch:\r
327                 return new SwitchCommand;\r
328         case cmdExport:\r
329                 return new ExportCommand;\r
330         case cmdAdd:\r
331                 return new AddCommand;\r
332         case cmdIgnore:\r
333                 return new IgnoreCommand;\r
334         case cmdFormatPatch:\r
335                 return new FormatPatchCommand;\r
336         case cmdImportPatch:\r
337                 return new ImportPatchCommand;\r
338         case cmdBlame:\r
339                 return new BlameCommand;\r
340         case cmdSettings:\r
341                 return new SettingsCommand;\r
342         case cmdConflictEditor:\r
343                 return new ConflictEditorCommand;\r
344         case cmdCleanup:\r
345                 return new CleanupCommand;\r
346         case cmdRebase:\r
347                 return new RebaseCommand;\r
348         case cmdResolve:\r
349                 return new ResolveCommand;\r
350         case cmdDropMove:\r
351                 return new DropMoveCommand;\r
352 //      case cmdDropCopy:\r
353 //              return new DropCopyCommand;\r
354 //      case cmdDropCopyAdd:\r
355 //              return new DropCopyAddCommand;\r
356 //      case cmdDropExport:\r
357 //              return new DropExportCommand;\r
358         case cmdHelp:\r
359                 return new HelpCommand;\r
360         case cmdStashSave:\r
361                 return new StashSaveCommand;\r
362         case cmdStashApply:\r
363                 return new StashApplyCommand;\r
364         case cmdSubAdd:\r
365                 return new SubmoduleAddCommand;\r
366         case cmdSubUpdate:\r
367                 return new SubmoduleUpdateCommand;\r
368         case cmdRefLog:\r
369                 return new RefLogCommand;\r
370         case cmdSubSync:\r
371                 return new SubmoduleSyncCommand;\r
372         case cmdSendMail:\r
373                 return new SendMailCommand;\r
374         case cmdCat:\r
375                 return new CatCommand;\r
376 #if 0\r
377 \r
378         \r
379         case cmdCheckout:\r
380                 return new CheckoutCommand;\r
381 \r
382 \r
383         \r
384         case cmdCopy:\r
385                 return new CopyCommand;\r
386         case cmdCrash:\r
387                 return new CrashCommand;\r
388         case cmdCreatePatch:\r
389                 return new CreatePatchCommand;\r
390         case cmdDelUnversioned:\r
391                 return new DelUnversionedCommand;\r
392 \r
393 \r
394 \r
395         case cmdImport:\r
396                 return new ImportCommand;\r
397         case cmdLock:\r
398                 return new LockCommand;\r
399         case cmdMergeAll:\r
400                 return new MergeAllCommand;\r
401         case cmdPasteCopy:\r
402                 return new PasteCopyCommand;\r
403         case cmdPasteMove:\r
404                 return new PasteMoveCommand;\r
405         case cmdPrevDiff:\r
406                 return new PrevDiffCommand;\r
407         case cmdProperties:\r
408                 return new PropertiesCommand;\r
409         case cmdRTFM:\r
410                 return new RTFMCommand;\r
411         case cmdRebuildIconCache:\r
412                 return new RebuildIconCacheCommand;\r
413         case cmdRelocate:\r
414                 return new RelocateCommand;\r
415         case cmdRepoBrowser:\r
416                 return new RepositoryBrowserCommand;\r
417         case cmdRevisionGraph:\r
418                 return new RevisionGraphCommand;\r
419         case cmdShowCompare:\r
420                 return new ShowCompareCommand;\r
421         case cmdUnIgnore:\r
422                 return new UnIgnoreCommand;\r
423         case cmdUnlock:\r
424                 return new UnLockCommand;\r
425         case cmdUpdate:\r
426                 return new UpdateCommand;\r
427         case cmdUpdateCheck:\r
428                 return new UpdateCheckCommand;\r
429         case cmdUrlDiff:\r
430                 return new UrlDiffCommand;\r
431 #endif\r
432         default:\r
433                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
434                 return new AboutCommand;\r
435         }\r
436 }\r