Hi,
On Sat, 2 Feb 2008, Kirill wrote:
> TODO: think about moving env_for_git() and exec_with_status() to
> systeminfo. It does not really belong there, but even less so to menu.
How about exec.[ch]?
> TODO: decide on a structure and actions of added menu items.
Yep. I think a good starting point is to look at what
TortoiseCVS/TortoiseSVN provide.
Personally, the thing I used most (back when I still had to work with CVS
on Windows), was the diff operation. I needed to know what I changed, to
clean up my temporary debug hacks before committing.
Another really nice thing was to see the history of a file (I guess this
would be "gitk HEAD -- <file>").
> + // store the folder, if provided
Please convert to C style comments.
> diff --git a/menu.c b/menu.c
> index f3e876c..7f034db 100644
> --- a/menu.c
> +++ b/menu.c
> @@ -1,12 +1,13 @@
> #include <shlobj.h>
> -#include <stdarg.h>
> -#include <tchar.h>
> #include <stdio.h>
> #include "menu.h"
> #include "ext.h"
> #include "debug.h"
> #include "systeminfo.h"
>
> +#define LONGEST_MENU_ITEM 40
> +#define MAX_PROCESSING_TIME (60 * 1000)
These may want to be dynamic/configurable, but let's do this commit first,
put a TODO into a comment, and take care of it later.
> + if (CreateProcess(NULL, cmd,
> + NULL, NULL, FALSE, 0,
> + env_for_git(), wd, &si, &pi)) {
Please indent the second and third line either 4 spaces more than the
"if", or two tabs, not just one. But here, I think that all parameters
would fit on one line anyway.
> + if (WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess,
> + MAX_PROCESSING_TIME)) {
Same goes for this indent.
> +
> + if (! GetExitCodeProcess(pi.hProcess, &status)) {
> + debug_git("[ERROR] GetExitCode failed (%d); "
> + "wd: %s; cmd: %s",
> + GetLastError(), wd, cmd);
> + }
These curly brackets are unnecessary (as a few times in this patch).
> @@ -67,16 +108,52 @@ static STDMETHODIMP query_context_menu(void *p, HMENU
> menu,
> {
> struct git_menu *this_menu = p;
> struct git_data *this_ = this_menu->git_data;
> + char *wd;
> + BOOL bDirSelected = TRUE;
> +
> + UINT original_first = first_command;
> + char menu_item[LONGEST_MENU_ITEM];
> +
> + int status;
>
> if (flags & CMF_DEFAULTONLY)
> return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0);
>
> + // figure out the directory
-> C style comment
> + wd = strdup(this_->name);
> + if (! (FILE_ATTRIBUTE_DIRECTORY & GetFileAttributes(wd))) {
Please lose the space after the exclamation mark.
> + /* TODO: when the above block is fixed, we'll just have
> + return MAKE_RESULT(..., build_menu_items()); */
Personally, I prefer multiline comments to start with a "/*" in one line,
continue with " * <text>" on the next line, and end with " */" like this:
/*
* TODO: when the above block is fixed, we'll just have
* return MAKE_RESULT(..., build_menu_items());
*/
But that is just personal preference...
> @@ -147,13 +224,11 @@ static STDMETHODIMP invoke_command(void *p,
> STARTUPINFO si = { sizeof(si) };
> PROCESS_INFORMATION pi;
>
> - TCHAR command[1024];
> + char command[1024];
> const char *wd;
> DWORD dwAttr, fa;
>
> - wsprintf(command, TEXT("wish.exe \"%s/bin/git-gui\""),
> - msys_path());
> -
> + sprintf(command, "wish.exe \"%s/bin/git-gui\"", msys_path());
>
>
This line should be empty, but has white space.
Besides, this whole hunk is unrelated to the commit message, correct?
> @@ -202,7 +277,7 @@ static STDMETHODIMP get_command_string(void *p, UINT id,
>
>
> if (flags & GCS_HELPTEXT) {
> - LPCTSTR text = _T("Launch the GIT Gui in the local or chosen
> directory.");
> + char *text = "Launch the GIT Gui in the local or chosen
> directory.";
Same goes for this hunk...
Okay, reading my comments again, it seems like all of them are negative.
Please bear in mind, though:
- if I did not like your patch, I would not bother reviewing it, so let's
just make this clear once and for all: reviewing a patch is already a
display of respect to the author of the patch.
- quite a few comments are about style, but you told me that you want me
to comment on the style. Besides, I think it is really, really
important for a software project to have more or less one style:
different styles just distract from the content, and besides, let's
admit it: looking at neat code beats looking at messy code.
- I only want the things changed that I do not like, that's why I comment
on them ;-)
- I am a lazy bastard...
Thanks,
Dscho