From: Derrick Stolee <derrickstolee@github.com>
To: Nadav Goldstein via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org
Cc: Nadav Goldstein <nadav.goldstein96@gmail.com>
Subject: Re: [PATCH v2 1/2] add-menu: added add-menu to lib objects
Date: Mon, 23 May 2022 16:03:34 -0400 [thread overview]
Message-ID: <8d483e1d-1865-c475-cbe3-78fa1f7f8bfb@github.com> (raw)
In-Reply-To: <13bc75a2b0510f55e9a73852838b3b11683f13a2.1653286345.git.gitgitgadget@gmail.com>
On 5/23/22 2:12 AM, Nadav Goldstein via GitGitGadget wrote:
> From: Nadav Goldstein <nadav.goldstein96@gmail.com>
>
> added to the lib objects the add menu module which is
> simply extracted functions from clear.c
> (which in the next commit will be removed and instead
> clear will use the outsourced functions).
Please rewrite according to Git style. (Mentioned in
my reply to patch 2 with more detail.)
> diff --git a/add-menu.c b/add-menu.c
I think I said something in another place that was a
bit incorrect: I think of "git add -p" as interactive
add, but really it's "git add -i" that is the
equivalent. The "git add -i" menu is very similar to
the "git clean -i" menu, as it is said in comments.
Thus, perhaps the best thing to do would be to unify
the two implementations, if at all possible. The one
in builtin/clean.c is from 2013 while the one in
add-interactive.c is much more recent.
The biggest test of your new API is whether it can
support _both_ of these existing interactive menus
before adding one to 'git stash'.
> new file mode 100644
> index 00000000000..6a1c125d113
> --- /dev/null
> +++ b/add-menu.c
> @@ -0,0 +1,339 @@
> +#include <stdio.h>
In the Git project, the first include should either be
"cache.h" or "git-compat-utils.h". For this API,
git-compat-utils.h should suffice, since there should
not be anything from the Git data model that actually
matters here.
> +#include "builtin.h"
> +#include "add-menu.h"
> +#include "cache.h"
> +#include "config.h"
> +#include "dir.h"
> +#include "parse-options.h"
> +#include "string-list.h"
> +#include "quote.h"
> +#include "column.h"
> +#include "color.h"
> +#include "pathspec.h"
> +#include "help.h"
> +#include "prompt.h"
I doubt that these are all required. Please check to
see what you are using from each of these includes and
remove as necessary.
> +static const char *clean_get_color(enum color_clean ix)
> +{
> + if (want_color(clean_use_color))
> + return clean_colors[ix];
> + return "";
> +}
Please update the method names to not care about clean.
This is especially true in the public API in the *.h file.
> +void clean_print_color(enum color_clean ix)
> +{
> + printf("%s", clean_get_color(ix));
> +}
> \ No newline at end of file
nit: please make sure the file ends with exactly one newline.
One problem with this approach of adding the code to this
new *.c file and then later removing the code from clean is
that we lose 'git blame' or 'git log -L' history across the
move. It's much harder to detect copies than to detect moved
lines of code.
I don't have a good solution in mind right now, but it's
worth thinking about.
> diff --git a/add-menu.h b/add-menu.h
> new file mode 100644
> index 00000000000..52e5ccb1800
> --- /dev/null
> +++ b/add-menu.h
> @@ -0,0 +1,51 @@
Don't forget the #ifndef __ADD_MENU__/#define __ADD_MENU__
trick to avoid multiple declarations of these values.
> +int *list_and_choose(struct menu_opts *opts, struct menu_stuff *stuff, void (*prompt_help_cmd)(int));
> \ No newline at end of file
nit: newline here, too.
Thanks,
-Stolee
next prev parent reply other threads:[~2022-05-23 20:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-15 21:18 [PATCH] stash: added safety flag for stash clear subcommand Nadav Goldstein via GitGitGadget
2022-05-16 3:17 ` Junio C Hamano
2022-05-23 6:12 ` [PATCH v2 0/2] stash clear: " Nadav Goldstein via GitGitGadget
2022-05-23 6:12 ` [PATCH v2 1/2] add-menu: added add-menu to lib objects Nadav Goldstein via GitGitGadget
2022-05-23 20:03 ` Derrick Stolee [this message]
2022-05-23 20:35 ` Junio C Hamano
2022-05-23 6:12 ` [PATCH v2 2/2] clean: refector to the interactive part of clean Nadav Goldstein via GitGitGadget
2022-05-23 19:45 ` Derrick Stolee
2022-05-23 19:33 ` [PATCH v2 0/2] stash clear: added safety flag for stash clear subcommand Derrick Stolee
2023-06-20 0:03 ` [PATCH v3] Introduced force flag to the git " Nadav Goldstein via GitGitGadget
2023-06-20 6:25 ` Junio C Hamano
2023-06-20 19:54 ` Nadav Goldstein
2023-06-20 20:46 ` Junio C Hamano
2023-06-20 21:01 ` Eric Sunshine
2023-06-20 21:42 ` Nadav Goldstein
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8d483e1d-1865-c475-cbe3-78fa1f7f8bfb@github.com \
--to=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=nadav.goldstein96@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.