Re: [BUG] git config --unset is not idempotent
On Thu, Aug 25, 2022 at 10:52:16AM +0200, Arturo Seijas Fernandez wrote:
Show 7 quoted lines
> The command "git config --unset [option]" is not idempotent. It is
> currently returning a success code when the property had already been
> set and a 5 error code otherwise.
>
> I would expect the error code to be set according to the current state
> when compared to the target state, regardless of the previous state of
> the option.
You can get what you want in the shell with:
# passes "set -e", but could also be used in an "if"
git config --unset ... || test $? = 5
That's obviously not as convenient. The flip side is that returning 0 would make it very hard for callers to tell if they removed something (if they care).
If we were designing the tool now, I could definitely see an argument for returning 0 in this case. But we have over a decade with the "5" exit code documented for a plumbing tool. We won't change it now without a good reason and without a deprecation schedule, and IMHO this doesn't rise to that level.
-Peff