]> git.ipfire.org Git - thirdparty/git.git/commit
refspec: treat 'fetch' as a Boolean value
authorTaylor Blau <me@ttaylorr.com>
Tue, 18 Mar 2025 22:50:18 +0000 (18:50 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Mar 2025 08:45:15 +0000 (01:45 -0700)
commit3809633d0adb77b02ba8cfe87578134e6a30f54d
treed4c2ee1d05664ad85ac8a8148f358a5250ac9526
parentf543202a16f52f5951a10b2ed6b67d2cd1f1dd17
refspec: treat 'fetch' as a Boolean value

Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we
have macros called REFSPEC_FETCH and REFSPEC_PUSH. This confusingly
suggests that we might introduce other modes in the future, which, while
possible, is highly unlikely.

But these values are treated as a Boolean, and stored in a struct field
called 'fetch'. So the following:

    if (refspec->fetch == REFSPEC_FETCH) { ... }

, and

    if (refspec->fetch) { ... }

are equivalent. Let's avoid renaming the Boolean values "true" and
"false" here and remove the two REFSPEC_ macros mentioned above.

Since this value is truly a Boolean and will only ever take on a value
of 0 or 1, we can declare it as a single bit unsigned field. In
practice this won't shrink the size of 'struct refspec', but it more
clearly indicates the intent.

Note that this introduces some awkwardness like:

    refspec_item_init_or_die(&spec, refspec, 1);

, where it's unclear what the final "1" does. This will be addressed in
the following commits.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pull.c
refspec.c
refspec.h
remote.c
transport-helper.c