> diff --git a/sequencer.c b/sequencer.c
> index 1c035ceec7..d257903db0 100644
> --- a/sequencer.c
> +++ b/sequencer.c

> +int write_basic_state(struct replay_opts *opts, const char *head_name,
> +                   const char *onto, const char *orig_head)
> +{
> +     const char *quiet = getenv("GIT_QUIET");
> +
> +     if (head_name)
> +             write_file(rebase_path_head_name(), "%s\n", head_name);
> +     if (onto)
> +             write_file(rebase_path_onto(), "%s\n", onto);
> +     if (orig_head)
> +             write_file(rebase_path_orig_head(), "%s\n", orig_head);
> +
> +     if (quiet)
> +             write_file(rebase_path_quiet(), "%s\n", quiet);
> +     else
> +             write_file(rebase_path_quiet(), "");

This is not a faithful conversion of the original.  git-rebase.sh writes
this 'quiet' file with:

  echo "$GIT_QUIET" > "$state_dir"/quiet

which means that a single newline character was written even when
$GIT_QUIET was unset/empty.

I seem to recall a case in the past, when a shell-to-C conversion
accidentally dropped a newline from a similar state-file, which then
caused some issues later on.  But I don't remember the specifics and a
quick search didn't turn up anything relevant either...

> +
> +     if (opts->verbose)
> +             write_file(rebase_path_verbose(), "");
> +     if (opts->strategy)
> +             write_file(rebase_path_strategy(), "%s\n", opts->strategy);
> +     if (opts->xopts_nr > 0)
> +             write_strategy_opts(opts);
> +
> +     if (opts->allow_rerere_auto == RERERE_AUTOUPDATE)
> +             write_file(rebase_path_allow_rerere_autoupdate(), 
> "--rerere-autoupdate\n");
> +     else if (opts->allow_rerere_auto == RERERE_NOAUTOUPDATE)
> +             write_file(rebase_path_allow_rerere_autoupdate(), 
> "--no-rerere-autoupdate\n");
> +
> +     if (opts->gpg_sign)
> +             write_file(rebase_path_gpg_sign_opt(), "-S%s\n", 
> opts->gpg_sign);
> +     if (opts->signoff)
> +             write_file(rebase_path_signoff(), "--signoff\n");
> +
> +     return 0;
> +}
> +
>  static int walk_revs_populate_todo(struct todo_list *todo_list,
>                               struct replay_opts *opts)
>  {

Reply via email to