From: Phillip Wood <phillip.wood123@gmail.com>
To: Stefan Xenos via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org
Cc: Christophe Poucet <christophe.poucet@gmail.com>,
Stefan Xenos <sxenos@google.com>
Subject: Re: [PATCH 07/10] evolve: implement the git change command
Date: Sun, 25 Sep 2022 10:10:55 +0100 [thread overview]
Message-ID: <61a01fdf-9805-ff8d-6306-ff49f31e93c2@gmail.com> (raw)
In-Reply-To: <914028341842a4d57e02ec42a7426d3aa83640f9.1663959325.git.gitgitgadget@gmail.com>
Hi Chris
On 23/09/2022 19:55, Stefan Xenos via GitGitGadget wrote:
> From: Stefan Xenos <sxenos@google.com>
>
> Implement the git change update command, which
> are sufficient for constructing change graphs.
>
> For example, to create a new change (a stable name) that refers to HEAD:
>
> git change update -c HEAD
>
> To record a rebase or amend in the change graph:
>
> git change update -c <new_commit> -r <old_commit>
>
> To record a cherry-pick in the change graph:
>
> git change update -c <new_commit> -o <original_commit>
While it is good to have this example it would be better to have some
documentation about how to use this command. It would be very helpful to
have the documentation added before the code so that reviewers have an
overview of the command when they come to review the code.
The commit message should also discuss why it is called "change" rather
than "evolve". For more details on commit messages for this project see
"Describe your changes well" in Documentation/SubmittingPatches. Having
some tests would make it clear how this command is intended to be used
as well as demonstrating that the implementation works.
> Signed-off-by: Stefan Xenos <sxenos@google.com>
> Signed-off-by: Chris Poucet <poucet@google.com>
> ---
> +struct update_state {
> + int options;
> + const char* change;
> + const char* content;
> + struct string_list replace;
> + struct string_list origin;
> +};
> +
> +static void init_update_state(struct update_state *state)
> +{
> + memset(state, 0, sizeof(*state));
> + state->content = "HEAD";
> + string_list_init_nodup(&state->replace);
> + string_list_init_nodup(&state->origin);
> +}
In general we prefer to use initializer macros over functions. So this
would become
#define UPDATE_STATE_INIT { \
.content = "HEAD", \
.replace = STRING_LIST_INIT_NODUP, \
.origin = STRING_LIST_INIT_NODUP \
}
and lower down we'd have
struct update_state state = UPDATE_STATE_INIT;
Likewise we prefer
struct foo = { 0 };
over
struct foo foo;
memset(&foo, 0, sizeof(foo));
> +int cmd_change(int argc, const char **argv, const char *prefix)
> +{
> + /* No options permitted before subcommand currently */
> + struct option options[] = {
> + OPT_END()
> + };
> + int result = 1;
> +
> + argc = parse_options(argc, argv, prefix, options, builtin_change_usage,
> + PARSE_OPT_STOP_AT_NON_OPTION);
> +
> + if (argc < 1)
> + usage_with_options(builtin_change_usage, options);
> + else if (!strcmp(argv[0], "update"))
> + result = change_update(argc, argv, prefix);
Since Stefan wrote this code the parse options api has been improved to
support sub commands so this should be updated to use that support.
Thanks again for picking up these patches, I'm excited to see an evolve
command for git.
Best Wishes
Phillip
next prev parent reply other threads:[~2022-09-25 9:11 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-23 18:55 [PATCH 00/10] Add the Git Change command Christophe Poucet via GitGitGadget
2022-09-23 18:55 ` [PATCH 01/10] technical doc: add a design doc for the evolve command Stefan Xenos via GitGitGadget
2022-09-23 19:59 ` Jerry Zhang
2022-09-28 21:26 ` Junio C Hamano
2022-09-28 22:20 ` Junio C Hamano
2022-09-29 9:17 ` Phillip Wood
2022-09-29 19:57 ` Jonathan Tan
2022-09-23 18:55 ` [PATCH 02/10] sha1-array: implement oid_array_readonly_contains Chris Poucet via GitGitGadget
2022-09-26 13:08 ` Phillip Wood
2022-09-23 18:55 ` [PATCH 03/10] ref-filter: add the metas namespace to ref-filter Chris Poucet via GitGitGadget
2022-09-26 13:13 ` Phillip Wood
2022-10-04 9:50 ` Chris P
2022-09-23 18:55 ` [PATCH 04/10] evolve: add support for parsing metacommits Stefan Xenos via GitGitGadget
2022-09-26 13:27 ` Phillip Wood
2022-10-04 11:21 ` Chris P
2022-10-04 14:10 ` Phillip Wood
2022-09-23 18:55 ` [PATCH 05/10] evolve: add the change-table structure Stefan Xenos via GitGitGadget
2022-09-27 13:27 ` Phillip Wood
2022-09-27 13:50 ` Ævar Arnfjörð Bjarmason
2022-09-27 14:13 ` Phillip Wood
2022-09-27 15:28 ` Ævar Arnfjörð Bjarmason
2022-09-28 14:33 ` Phillip Wood
2022-09-28 15:14 ` Ævar Arnfjörð Bjarmason
2022-09-28 15:59 ` Junio C Hamano
2022-09-27 14:18 ` Phillip Wood
2022-10-04 14:48 ` Chris P
2022-09-23 18:55 ` [PATCH 06/10] evolve: add support for writing metacommits Stefan Xenos via GitGitGadget
2022-09-28 14:27 ` Phillip Wood
2022-10-05 9:40 ` Chris P
2022-10-05 11:09 ` Phillip Wood
2022-09-23 18:55 ` [PATCH 07/10] evolve: implement the git change command Stefan Xenos via GitGitGadget
2022-09-25 9:10 ` Phillip Wood [this message]
2022-09-26 8:23 ` Ævar Arnfjörð Bjarmason
2022-09-26 8:25 ` Ævar Arnfjörð Bjarmason
2022-10-05 12:30 ` Chris P
2022-09-23 18:55 ` [PATCH 08/10] evolve: add the git change list command Stefan Xenos via GitGitGadget
2022-09-23 18:55 ` [PATCH 09/10] evolve: add delete command Chris Poucet via GitGitGadget
2022-09-26 8:38 ` Ævar Arnfjörð Bjarmason
2022-09-26 9:10 ` Chris Poucet
2022-09-23 18:55 ` [PATCH 10/10] evolve: add documentation for `git change` Chris Poucet via GitGitGadget
2022-09-25 8:41 ` Phillip Wood
2022-09-25 8:39 ` [PATCH 00/10] Add the Git Change command Phillip Wood
2022-10-04 9:33 ` Chris P
2022-10-04 14:24 ` Phillip Wood
2022-10-04 15:19 ` Chris P
2022-10-04 15:55 ` Chris P
2022-10-04 16:00 ` Phillip Wood
2022-10-04 15:57 ` Phillip Wood
2022-10-05 14:59 ` [PATCH v2 00/10] RFC: Git Evolve / Change Christophe Poucet via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 01/10] technical doc: add a design doc for the evolve command Stefan Xenos via GitGitGadget
2022-10-05 15:16 ` Chris Poucet
2022-10-06 20:53 ` Glen Choo
2022-10-10 19:35 ` Victoria Dye
2022-10-11 8:59 ` Phillip Wood
2022-10-11 16:59 ` Victoria Dye
2022-10-12 19:19 ` Phillip Wood
2022-10-05 14:59 ` [PATCH v2 02/10] sha1-array: implement oid_array_readonly_contains Chris Poucet via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 03/10] ref-filter: add the metas namespace to ref-filter Chris Poucet via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 04/10] evolve: add support for parsing metacommits Stefan Xenos via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 05/10] evolve: add the change-table structure Stefan Xenos via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 06/10] evolve: add support for writing metacommits Stefan Xenos via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 07/10] evolve: implement the git change command Stefan Xenos via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 08/10] evolve: add delete command Chris Poucet via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 09/10] evolve: add documentation for `git change` Chris Poucet via GitGitGadget
2022-10-05 14:59 ` [PATCH v2 10/10] evolve: add tests for the git-change command Chris Poucet via GitGitGadget
2022-10-10 9:23 ` [PATCH v2 00/10] RFC: Git Evolve / Change Phillip Wood
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=61a01fdf-9805-ff8d-6306-ff49f31e93c2@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=christophe.poucet@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
--cc=sxenos@google.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).