Here's a small reroll that cleans up some wording in the first patch, and drops the accidental inclusion of a stray 'git-diff-pairs' binary that was sitting in my working tree at the time of writing the initial commit. Otherwise the series is unchanged, but a range-diff is attached nonetheless. Thanks for reviewing :-). Taylor Blau (4): refspec: treat 'fetch' as a Boolean value refspec: replace `refspec_init()` with fetch/push variants refspec: remove refspec_item_init_or_die() refspec: replace `refspec_item_init()` with fetch/push variants builtin/fetch.c | 2 +- builtin/pull.c | 3 ++- refspec.c | 38 +++++++++++++++++++++++++++----------- refspec.h | 18 +++++++----------- remote.c | 4 ++-- transport-helper.c | 2 +- 6 files changed, 40 insertions(+), 27 deletions(-) Range-diff against v1: 1: 7e662acb5a ! 1: 04e1ab8209 refspec: treat 'fetch' as a Boolean value @@ Commit message refspec: treat 'fetch' as a Boolean value Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we - have constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly - suggests that we might introduce other modes in the future. + 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: @@ Commit message if (refspec->fetch) { ... } are equivalent. Let's avoid renaming the Boolean values "true" and - "false" here and remove the two REFSPEC_ constants mentioned above. + "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 @@ builtin/pull.c: static const char *get_tracking_branch(const char *remote, const if (!*spec_src || !strcmp(spec_src, "HEAD")) spec_src = "HEAD"; - ## git-diff-pairs (new) ## - Binary files /dev/null and git-diff-pairs differ - ## refspec.c ## @@ refspec.c: void refspec_clear(struct refspec *rs) int valid_fetch_refspec(const char *fetch_refspec_str) 2: fd2354dade = 2: c3021b82ce refspec: replace `refspec_init()` with fetch/push variants 3: 49b470de61 = 3: 88f6a91c46 refspec: remove refspec_item_init_or_die() 4: 95783265fd = 4: f0c323988f refspec: replace `refspec_item_init()` with fetch/push variants base-commit: c702dd48567cfebca3d4a06b691de97da3f8dc4a -- 2.49.0.3.gbb7a4a684c.dirty