Re: [PATCH 1/3] rebase: guard against missing files in read_basic_state()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 13, 2013, 22:29 UTC
- Message-ID
- <7vy5adskz3.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1371139573-28047-2-git-send-email-artagnon@gmail.com>
Ramkumar Ramachandra <artagnon@gmail.com> writes:
> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
This does not affect correctness; i.e. head_name=$(cat that-file) will error out if the file is missing, right?
A more troublesome is that nobody seems to check the return value of this function. If head-name, onto or orig-head is missing, is that an error condition that should make the callers of read_basic_state stop and refuse to proceed?
The way the && cascade is used seems to indicate that, but up to the point where it sents $verbose. If and only if head-name, onto, orig-head and quiet can be read in state-dir, verbose in state-dir is checked and only then $verbose is set.
Martin, this seems to be from your series around early Feburary 2011. Do you recall why these checks are cascaded this way? I do not offhand think of a good reason.
Show 17 quoted lines
> ---
> git-rebase.sh | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/git-rebase.sh b/git-rebase.sh
> index d0c11a9..2122fe0 100755
> --- a/git-rebase.sh
> +++ b/git-rebase.sh
> @@ -84,6 +84,8 @@ keep_empty=
> test "$(git config --bool rebase.autosquash)" = "true" && autosquash=t
>
> read_basic_state () {
> + test -f "$state_dir/head-name" &&
> + test -f "$state_dir/onto" &&
> head_name=$(cat "$state_dir"/head-name) &&
> onto=$(cat "$state_dir"/onto) &&
> # We always write to orig-head, but interactive rebase used to write to