{"thread":{"id":"57344","subject":"[PATCH] refs.h: make all flags arguments unsigned","startedAt":"2022-01-31T20:15:43Z","lastAt":"2022-02-03T21:31:37Z","messageCount":17,"participants":["Han-Wen Nienhuys via GitGitGadget","Junio C Hamano","Han-Wen Nienhuys","Ævar Arnfjörð Bjarmason"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"447359","messageId":"pull.1210.git.git.1643660136530.gitgitgadget@gmail.com","threadId":"57344","inReplyTo":null,"subject":"[PATCH] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2022-01-31T20:15:35Z","receivedAt":"2022-01-31T20:15:43Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"From: Han-Wen Nienhuys <hanwen@google.com>\n\nAs discussed in\nhttps://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\nwant to treat the sign bit specially, so make all flags in refs.h\nunsigned.\n\nSigned-off-by: Han-Wen Nienhuys <hanwen@google.com>\n---\n    refs.h: make all flags arguments unsigned\n    \n    As discussed in https://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/\n    , we don't want to treat the sign bit specially, so make all flags in\n    refs.h unsigned.\n    \n    Signed-off-by: Han-Wen Nienhuys hanwen@google.com\n\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1210%2Fhanwen%2Funsigned-flags-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1210/hanwen/unsigned-flags-v1\nPull-Request: https://github.com/git/git/pull/1210\n\n bisect.c                    |  4 +--\n builtin/bisect--helper.c    |  7 ++---\n builtin/branch.c            |  4 +--\n builtin/checkout.c          |  9 ++++---\n builtin/describe.c          |  3 ++-\n builtin/fetch.c             | 10 +++----\n builtin/fsck.c              |  4 +--\n builtin/gc.c                |  5 ++--\n builtin/name-rev.c          |  3 ++-\n builtin/pack-objects.c      | 11 ++++----\n builtin/rebase.c            |  5 ++--\n builtin/receive-pack.c      |  4 +--\n builtin/reflog.c            |  5 ++--\n builtin/remote.c            | 13 ++++++----\n builtin/repack.c            |  4 +--\n builtin/replace.c           |  4 +--\n builtin/rev-parse.c         |  6 +++--\n builtin/show-branch.c       |  6 ++---\n builtin/show-ref.c          |  4 +--\n builtin/stash.c             |  2 +-\n builtin/submodule--helper.c |  4 +--\n builtin/symbolic-ref.c      |  2 +-\n bundle.c                    |  2 +-\n commit-graph.c              |  5 ++--\n config.c                    |  2 +-\n delta-islands.c             |  2 +-\n fetch-pack.c                |  7 ++---\n help.c                      |  2 +-\n http-backend.c              |  4 +--\n log-tree.c                  |  4 +--\n ls-refs.c                   |  4 +--\n midx.c                      |  5 ++--\n negotiator/default.c        |  2 +-\n negotiator/skipping.c       |  2 +-\n notes.c                     |  5 ++--\n object-name.c               |  2 +-\n reachable.c                 |  2 +-\n ref-filter.c                |  3 ++-\n refs.c                      | 52 ++++++++++++++++++-------------------\n refs.h                      | 38 ++++++++++++---------------\n refs/files-backend.c        | 17 ++++++------\n remote.c                    | 10 +++----\n replace-object.c            |  7 +++--\n revision.c                  |  8 +++---\n server-info.c               |  2 +-\n shallow.c                   |  4 +--\n submodule.c                 |  4 +--\n t/helper/test-ref-store.c   |  4 +--\n transport-helper.c          |  2 +-\n transport.c                 |  2 +-\n upload-pack.c               |  8 +++---\n walker.c                    |  2 +-\n worktree.c                  |  6 ++---\n 53 files changed, 171 insertions(+), 167 deletions(-)\n\ndiff --git a/bisect.c b/bisect.c\nindex 888949fba6b..264d60d8e3d 100644\n--- a/bisect.c\n+++ b/bisect.c\n@@ -441,7 +441,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,\n }\n \n static int register_ref(const char *refname, const struct object_id *oid,\n-\t\t\tint flags, void *cb_data)\n+\t\t\tunsigned int flags, void *cb_data)\n {\n \tstruct strbuf good_prefix = STRBUF_INIT;\n \tstrbuf_addstr(&good_prefix, term_good);\n@@ -1146,7 +1146,7 @@ int estimate_bisect_steps(int all)\n }\n \n static int mark_for_removal(const char *refname, const struct object_id *oid,\n-\t\t\t    int flag, void *cb_data)\n+\t\t\t    unsigned int flag, void *cb_data)\n {\n \tstruct string_list *refs = cb_data;\n \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\ndiff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c\nindex 28a2e6a5750..976196eb57c 100644\n--- a/builtin/bisect--helper.c\n+++ b/builtin/bisect--helper.c\n@@ -330,7 +330,7 @@ static int check_and_set_terms(struct bisect_terms *terms, const char *cmd)\n }\n \n static int mark_good(const char *refname, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int flag, void *cb_data)\n {\n \tint *m_good = (int *)cb_data;\n \t*m_good = 0;\n@@ -477,7 +477,7 @@ finish:\n }\n \n static int add_bisect_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  int flags, void *cb)\n+\t\t\t  unsigned int flags, void *cb)\n {\n \tstruct add_bisect_ref_data *data = cb;\n \n@@ -617,7 +617,8 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \tint no_checkout = 0;\n \tint first_parent_only = 0;\n \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n-\tint flags, pathspec_pos;\n+\tint pathspec_pos;\n+\tunsigned int flags;\n \tenum bisect_error res = BISECT_OK;\n \tstruct string_list revs = STRING_LIST_INIT_DUP;\n \tstruct string_list states = STRING_LIST_INIT_DUP;\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 4ce2a247542..542eb2e4d50 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -234,7 +234,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,\n \n \tfor (i = 0; i < argc; i++, strbuf_reset(&bname)) {\n \t\tchar *target = NULL;\n-\t\tint flags = 0;\n+\t\tunsigned int flags = 0;\n \n \t\tstrbuf_branchname(&bname, argv[i], allowed_interpret);\n \t\tfree(name);\n@@ -469,7 +469,7 @@ static void print_ref_list(struct ref_filter *filter, struct ref_sorting *sortin\n \n static void print_current_branch_name(void)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname = resolve_ref_unsafe(\"HEAD\", 0, NULL, &flags);\n \tconst char *shortname;\n \tif (!refname)\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex cc804ba8e1e..c6a2db4964d 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -968,7 +968,7 @@ static void update_refs_for_switch(const struct checkout_opts *opts,\n \n static int add_pending_uninteresting_ref(const char *refname,\n \t\t\t\t\t const struct object_id *oid,\n-\t\t\t\t\t int flags, void *cb_data)\n+\t\t\t\t\t unsigned int flags, void *cb_data)\n {\n \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n \treturn 0;\n@@ -1077,7 +1077,8 @@ static int switch_branches(const struct checkout_opts *opts,\n \tint ret = 0;\n \tstruct branch_info old_branch_info = { 0 };\n \tstruct object_id rev;\n-\tint flag, writeout_error = 0;\n+\tint writeout_error = 0;\n+\tunsigned int flag;\n \tint do_merge = 1;\n \n \ttrace2_cmd_mode(\"branch\");\n@@ -1503,7 +1504,7 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n \t    !opts->ignore_other_worktrees) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n \t\tif (head_ref &&\n \t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n@@ -1513,7 +1514,7 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (!new_branch_info->commit && opts->new_branch) {\n \t\tstruct object_id rev;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n \t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 42159cd26bd..5fa5b0bb424 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -140,7 +140,8 @@ static void add_to_known_names(const char *path,\n \t}\n }\n \n-static int get_name(const char *path, const struct object_id *oid, int flag, void *cb_data)\n+static int get_name(const char *path, const struct object_id *oid,\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tint is_tag = 0;\n \tstruct object_id peeled;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 5f06b21f8e9..08a240f2d33 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -323,9 +323,8 @@ static struct refname_hash_entry *refname_hash_add(struct hashmap *map,\n \treturn ent;\n }\n \n-static int add_one_refname(const char *refname,\n-\t\t\t   const struct object_id *oid,\n-\t\t\t   int flag, void *cbdata)\n+static int add_one_refname(const char *refname, const struct object_id *oid,\n+\t\t\t   unsigned int flag, void *cbdata)\n {\n \tstruct hashmap *refname_map = cbdata;\n \n@@ -1429,9 +1428,8 @@ static void set_option(struct transport *transport, const char *name, const char\n \t\t\tname, transport->url);\n }\n \n-\n-static int add_oid(const char *refname, const struct object_id *oid, int flags,\n-\t\t   void *cb_data)\n+static int add_oid(const char *refname, const struct object_id *oid,\n+\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct oid_array *oids = cb_data;\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 9e54892311d..8e3f773e3dd 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -502,7 +502,7 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid\n }\n \n static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct strbuf refname = STRBUF_INIT;\n \n@@ -513,7 +513,7 @@ static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n }\n \n static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int flag, void *cb_data)\n {\n \tstruct object *obj;\n \ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 8e60ef1eaba..2eae43a6bb1 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -768,9 +768,8 @@ struct cg_auto_data {\n \tint limit;\n };\n \n-static int dfs_on_ref(const char *refname,\n-\t\t      const struct object_id *oid, int flags,\n-\t\t      void *cb_data)\n+static int dfs_on_ref(const char *refname, const struct object_id *oid,\n+\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n \tint result = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 27f60153a6c..465652d5e37 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -305,7 +305,8 @@ static int cmp_by_tag_and_age(const void *a_, const void *b_)\n \treturn a->taggerdate != b->taggerdate;\n }\n \n-static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)\n+static int name_ref(const char *path, const struct object_id *oid,\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct object *o = parse_object(the_repository, oid);\n \tstruct name_ref_data *data = cb_data;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex ba2006f2212..16c47bb09ab 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -758,8 +758,8 @@ static enum write_one_status write_one(struct hashfile *f,\n \treturn WRITE_ONE_WRITTEN;\n }\n \n-static int mark_tagged(const char *path, const struct object_id *oid, int flag,\n-\t\t       void *cb_data)\n+static int mark_tagged(const char *path, const struct object_id *oid,\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n@@ -3012,7 +3012,8 @@ static void add_tag_chain(const struct object_id *oid)\n \t}\n }\n \n-static int add_ref_tag(const char *tag, const struct object_id *oid, int flag, void *cb_data)\n+static int add_ref_tag(const char *tag, const struct object_id *oid,\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object_id peeled;\n \n@@ -3684,8 +3685,8 @@ static void record_recent_commit(struct commit *commit, void *data)\n }\n \n static int mark_bitmap_preferred_tip(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int flags, void *_data)\n {\n \tstruct object_id peeled;\n \tstruct object *object;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 36490d06c8a..d92bd3b7175 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -999,7 +999,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\n-\tint ret, flags, total_argc, in_progress = 0;\n+\tint ret, total_argc, in_progress = 0;\n+\tunsigned int flags;\n \tint keep_base = 0;\n \tint ok_to_skip_pre_rebase = 0;\n \tstruct strbuf msg = STRBUF_INIT;\n@@ -1668,7 +1669,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n \t\t    &options.orig_head, &merge_base) &&\n \t    allow_preemptive_ff) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (!(options.flags & REBASE_FORCE)) {\n \t\t\t/* Lazily switch to the target branch if needed... */\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 9f4a0b816cf..82e4aae8113 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -291,7 +291,7 @@ static void show_ref(const char *path, const struct object_id *oid)\n }\n \n static int show_ref_cb(const char *path_full, const struct object_id *oid,\n-\t\t       int flag, void *data)\n+\t\t       unsigned int flag, void *data)\n {\n \tstruct oidset *seen = data;\n \tconst char *path = strip_namespace(path_full);\n@@ -1701,7 +1701,7 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tconst char *dst_name;\n-\tint flag;\n+\tunsigned int flag;\n \n \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n \tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex a4b1dd27e13..47464a7a7b9 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -343,7 +343,7 @@ static int should_expire_reflog_ent_verbose(struct object_id *ooid,\n }\n \n static int push_tip_to_list(const char *refname, const struct object_id *oid,\n-\t\t\t    int flags, void *cb_data)\n+\t\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct commit_list **list = cb_data;\n \tstruct commit *tip_commit;\n@@ -424,7 +424,8 @@ static void reflog_expiry_cleanup(void *cb_data)\n \t}\n }\n \n-static int collect_reflog(const char *ref, const struct object_id *oid, int unused, void *cb_data)\n+static int collect_reflog(const char *ref, const struct object_id *oid,\n+\t\t\t  unsigned int unused, void *cb_data)\n {\n \tstruct worktree_reflogs *cb = cb_data;\n \tstruct worktree *worktree = cb->worktree;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 299c466116d..4881d58c336 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -533,7 +533,8 @@ struct branches_for_remote {\n };\n \n static int add_branch_for_removal(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t  const struct object_id *oid,\n+\t\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct branches_for_remote *branches = cb_data;\n \tstruct refspec_item refspec;\n@@ -574,12 +575,13 @@ struct rename_info {\n };\n \n static int read_remote_branches(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\tconst struct object_id *oid, unsigned int flags,\n+\t\t\t\tvoid *cb_data)\n {\n \tstruct rename_info *rename = cb_data;\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct string_list_item *item;\n-\tint flag;\n+\tunsigned int flag;\n \tconst char *symref;\n \n \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n@@ -766,7 +768,7 @@ static int mv(int argc, const char **argv)\n \tfor_each_ref(read_remote_branches, &rename);\n \tfor (i = 0; i < remote_branches.nr; i++) {\n \t\tstruct string_list_item *item = remote_branches.items + i;\n-\t\tint flag = 0;\n+\t\tunsigned int flag = 0;\n \n \t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n \t\tif (!(flag & REF_ISSYMREF))\n@@ -923,7 +925,8 @@ static void free_remote_ref_states(struct ref_states *states)\n }\n \n static int append_ref_to_tracked_list(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t      const struct object_id *oid,\n+\t\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct ref_states *states = cb_data;\n \tstruct refspec_item refspec;\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex da1e364a756..ff6ddc0f357 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -464,8 +464,8 @@ struct midx_snapshot_ref_data {\n };\n \n static int midx_snapshot_ref_one(const char *refname,\n-\t\t\t\t const struct object_id *oid,\n-\t\t\t\t int flag, void *_data)\n+\t\t\t\t const struct object_id *oid, unsigned int flag,\n+\t\t\t\t void *_data)\n {\n \tstruct midx_snapshot_ref_data *data = _data;\n \tstruct object_id peeled;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 6ff1734d587..2fa39e73f0e 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -40,8 +40,8 @@ struct show_data {\n };\n \n static int show_reference(struct repository *r, const char *refname,\n-\t\t\t  const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  const struct object_id *oid, unsigned int flag,\n+\t\t\t  void *cb_data)\n {\n \tstruct show_data *data = cb_data;\n \ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 8480a59f573..b842c958f20 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -195,7 +195,8 @@ static int show_default(void)\n \treturn 0;\n }\n \n-static int show_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int show_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tif (ref_excluded(ref_excludes, refname))\n \t\treturn 0;\n@@ -203,7 +204,8 @@ static int show_reference(const char *refname, const struct object_id *oid, int\n \treturn 0;\n }\n \n-static int anti_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int anti_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tshow_rev(REVERSED, oid, refname);\n \treturn 0;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex e12c5e80e3e..625ba0c28ce 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -403,7 +403,7 @@ static int append_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int flag, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 11;\n@@ -418,7 +418,7 @@ static int append_head_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_remote_ref(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int flag, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 13;\n@@ -444,7 +444,7 @@ static const char *match_ref_pattern = NULL;\n static int match_ref_slash = 0;\n \n static int append_matching_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flag, void *cb_data)\n+\t\t\t       unsigned int flag, void *cb_data)\n {\n \t/* we want to allow pattern hold/<asterisk> to show all\n \t * branches under refs/heads/hold/, and v0.99.9? to show\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 7f8a5332f83..09b708daf5b 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -47,7 +47,7 @@ static void show_one(const char *refname, const struct object_id *oid)\n }\n \n static int show_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cbdata)\n+\t\t    unsigned int flag, void *cbdata)\n {\n \tif (show_head && !strcmp(refname, \"HEAD\"))\n \t\tgoto match;\n@@ -86,7 +86,7 @@ match:\n }\n \n static int add_existing(const char *refname, const struct object_id *oid,\n-\t\t\tint flag, void *cbdata)\n+\t\t\tunsigned int flag, void *cbdata)\n {\n \tstruct string_list *list = (struct string_list *)cbdata;\n \tstring_list_insert(list, refname);\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex 86cd0b456e7..c02e014acb7 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1296,7 +1296,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b\n \t\t\t   int quiet)\n {\n \tint ret = 0;\n-\tint flags = 0;\n+\tunsigned int flags = 0;\n \tint untracked_commit_option = 0;\n \tconst char *head_short_sha1 = NULL;\n \tconst char *branch_ref = NULL;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex c5d3fc3817f..3ffee0699a6 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -738,8 +738,8 @@ static void print_status(unsigned int flags, char state, const char *path,\n }\n \n static int handle_submodule_head_ref(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *cb_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int flags, void *cb_data)\n {\n \tstruct object_id *output = cb_data;\n \tif (oid)\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex e547a08d6c7..1ad2997e979 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -12,7 +12,7 @@ static const char * const git_symbolic_ref_usage[] = {\n \n static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n {\n-\tint flag;\n+\tunsigned int flag;\n \tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n \n \tif (!refname)\ndiff --git a/bundle.c b/bundle.c\nindex a0bb687b0f4..da4442d4f1a 100644\n--- a/bundle.c\n+++ b/bundle.c\n@@ -371,7 +371,7 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n \t\tstruct object_id oid;\n \t\tchar *ref;\n \t\tconst char *display_ref;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (e->item->flags & UNINTERESTING)\n \t\t\tcontinue;\ndiff --git a/commit-graph.c b/commit-graph.c\nindex 265c010122e..1a7d1bb154d 100644\n--- a/commit-graph.c\n+++ b/commit-graph.c\n@@ -1636,9 +1636,8 @@ struct refs_cb_data {\n \tstruct progress *progress;\n };\n \n-static int add_ref_to_set(const char *refname,\n-\t\t\t  const struct object_id *oid,\n-\t\t\t  int flags, void *cb_data)\n+static int add_ref_to_set(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct refs_cb_data *data = (struct refs_cb_data *)cb_data;\ndiff --git a/config.c b/config.c\nindex 2bffa8d4a01..a4f9cf339f7 100644\n--- a/config.c\n+++ b/config.c\n@@ -276,7 +276,7 @@ done:\n \n static int include_by_branch(const char *cond, size_t cond_len)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tint ret;\n \tstruct strbuf pattern = STRBUF_INIT;\n \tconst char *refname = !the_repository->gitdir ?\ndiff --git a/delta-islands.c b/delta-islands.c\nindex aa98b2e5414..dba5454ba01 100644\n--- a/delta-islands.c\n+++ b/delta-islands.c\n@@ -365,7 +365,7 @@ static void add_ref_to_island(const char *island_name, const struct object_id *o\n }\n \n static int find_island_for_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int flags, void *data)\n {\n \t/*\n \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\ndiff --git a/fetch-pack.c b/fetch-pack.c\nindex dd6ec449f2d..3fb3e0cbd18 100644\n--- a/fetch-pack.c\n+++ b/fetch-pack.c\n@@ -164,8 +164,9 @@ static int rev_list_insert_ref(struct fetch_negotiator *negotiator,\n \treturn 0;\n }\n \n-static int rev_list_insert_ref_oid(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb_data)\n+static int rev_list_insert_ref_oid(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flag, void *cb_data)\n {\n \treturn rev_list_insert_ref(cb_data, oid);\n }\n@@ -548,7 +549,7 @@ static int mark_complete(const struct object_id *oid)\n }\n \n static int mark_complete_oid(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int flag, void *cb_data)\n {\n \treturn mark_complete(oid);\n }\ndiff --git a/help.c b/help.c\nindex 71444906ddf..38e3def7cb6 100644\n--- a/help.c\n+++ b/help.c\n@@ -728,7 +728,7 @@ struct similar_ref_cb {\n };\n \n static int append_similar_ref(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct similar_ref_cb *cb = (struct similar_ref_cb *)(cb_data);\n \tchar *branch = strrchr(refname, '/') + 1;\ndiff --git a/http-backend.c b/http-backend.c\nindex 807fb8839e7..c8757e601d1 100644\n--- a/http-backend.c\n+++ b/http-backend.c\n@@ -504,7 +504,7 @@ static void run_service(const char **argv, int buffer_input)\n }\n \n static int show_text_ref(const char *name, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tconst char *name_nons = strip_namespace(name);\n \tstruct strbuf *buf = cb_data;\n@@ -559,7 +559,7 @@ static void get_info_refs(struct strbuf *hdr, char *arg)\n }\n \n static int show_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct strbuf *buf = cb_data;\n \ndiff --git a/log-tree.c b/log-tree.c\nindex d3e7a40b648..189fff841de 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -131,7 +131,7 @@ static int ref_filter_match(const char *refname,\n }\n \n static int add_ref_decoration(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct object *obj;\n \tenum object_type objtype;\n@@ -241,7 +241,7 @@ static const struct name_decoration *current_pointed_by_HEAD(const struct name_d\n {\n \tconst struct name_decoration *list, *head = NULL;\n \tconst char *branch_name = NULL;\n-\tint rru_flags;\n+\tunsigned int rru_flags;\n \n \t/* First find HEAD */\n \tfor (list = decoration; list; list = list->next)\ndiff --git a/ls-refs.c b/ls-refs.c\nindex 54078323dcb..eaa43748ba5 100644\n--- a/ls-refs.c\n+++ b/ls-refs.c\n@@ -76,7 +76,7 @@ struct ls_refs_data {\n };\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tstruct ls_refs_data *data = cb_data;\n \tconst char *refname_nons = strip_namespace(refname);\n@@ -122,7 +122,7 @@ static void send_possibly_unborn_head(struct ls_refs_data *data)\n {\n \tstruct strbuf namespaced = STRBUF_INIT;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \tint oid_is_null;\n \n \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\ndiff --git a/midx.c b/midx.c\nindex 837b46b2af5..3d3136089f9 100644\n--- a/midx.c\n+++ b/midx.c\n@@ -922,9 +922,8 @@ static void prepare_midx_packing_data(struct packing_data *pdata,\n \t}\n }\n \n-static int add_ref_to_pending(const char *refname,\n-\t\t\t      const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info*)cb_data;\n \tstruct object *object;\ndiff --git a/negotiator/default.c b/negotiator/default.c\nindex 434189ae5dc..3f911f6b633 100644\n--- a/negotiator/default.c\n+++ b/negotiator/default.c\n@@ -36,7 +36,7 @@ static void rev_list_push(struct negotiation_state *ns,\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/negotiator/skipping.c b/negotiator/skipping.c\nindex 1236e792248..0e6f72987c1 100644\n--- a/negotiator/skipping.c\n+++ b/negotiator/skipping.c\n@@ -72,7 +72,7 @@ static struct entry *rev_list_push(struct data *data, struct commit *commit, int\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/notes.c b/notes.c\nindex f87dac40684..17b4d0edb83 100644\n--- a/notes.c\n+++ b/notes.c\n@@ -924,8 +924,9 @@ out:\n \treturn ret;\n }\n \n-static int string_list_add_one_ref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb)\n+static int string_list_add_one_ref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flag, void *cb)\n {\n \tstruct string_list *refs = cb;\n \tif (!unsorted_string_list_has_string(refs, refname))\ndiff --git a/object-name.c b/object-name.c\nindex fdff4601b2c..b14ec59cce8 100644\n--- a/object-name.c\n+++ b/object-name.c\n@@ -1208,7 +1208,7 @@ struct handle_one_ref_cb {\n };\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tstruct handle_one_ref_cb *cb = cb_data;\n \tstruct commit_list **list = cb->list;\ndiff --git a/reachable.c b/reachable.c\nindex 84e3d0d75ed..74e8ee81bbe 100644\n--- a/reachable.c\n+++ b/reachable.c\n@@ -27,7 +27,7 @@ static void update_progress(struct connectivity_progress *cp)\n }\n \n static int add_one_ref(const char *path, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info *)cb_data;\n \tstruct object *object;\ndiff --git a/ref-filter.c b/ref-filter.c\nindex f7a2f17bfd9..f51779bd725 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -2233,7 +2233,8 @@ struct ref_filter_cbdata {\n  * A call-back given to for_each_ref().  Filter refs and keep them for\n  * later object processing.\n  */\n-static int ref_filter_handler(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int ref_filter_handler(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n \tstruct ref_filter *filter = ref_cbdata->filter;\ndiff --git a/refs.c b/refs.c\nindex addb26293b4..5f29775def1 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -74,7 +74,7 @@ static unsigned char refname_disposition[256] = {\n  * as an error, try to come up with a usable replacement for the input\n  * refname in it.\n  */\n-static int check_refname_component(const char *refname, int *flags,\n+static int check_refname_component(const char *refname, unsigned int *flags,\n \t\t\t\t   struct strbuf *sanitized)\n {\n \tconst char *cp;\n@@ -158,7 +158,7 @@ out:\n \treturn cp - refname;\n }\n \n-static int check_or_sanitize_refname(const char *refname, int flags,\n+static int check_or_sanitize_refname(const char *refname, unsigned int flags,\n \t\t\t\t     struct strbuf *sanitized)\n {\n \tint component_len, component_count = 0;\n@@ -202,7 +202,7 @@ static int check_or_sanitize_refname(const char *refname, int flags,\n \treturn 0;\n }\n \n-int check_refname_format(const char *refname, int flags)\n+int check_refname_format(const char *refname, unsigned int flags)\n {\n \treturn check_or_sanitize_refname(refname, flags, NULL);\n }\n@@ -264,9 +264,9 @@ int ref_resolves_to_object(const char *refname,\n \treturn 1;\n }\n \n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags)\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags)\n {\n \tconst char *result;\n \tint ignore_errno;\n@@ -276,8 +276,8 @@ char *refs_resolve_refdup(struct ref_store *refs,\n \treturn xstrdup_or_null(result);\n }\n \n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags)\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags)\n {\n \treturn refs_resolve_refdup(get_main_ref_store(the_repository),\n \t\t\t\t   refname, resolve_flags,\n@@ -292,7 +292,8 @@ struct ref_filter {\n \tvoid *cb_data;\n };\n \n-int read_ref_full(const char *refname, int resolve_flags, struct object_id *oid, int *flags)\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags)\n {\n \tint ignore_errno;\n \tstruct ref_store *refs = get_main_ref_store(the_repository);\n@@ -321,7 +322,7 @@ int ref_exists(const char *refname)\n }\n \n static int filter_refs(const char *refname, const struct object_id *oid,\n-\t\t\t   int flags, void *data)\n+\t\t       unsigned int flags, void *data)\n {\n \tstruct ref_filter *filter = (struct ref_filter *)data;\n \n@@ -360,8 +361,9 @@ struct warn_if_dangling_data {\n \tconst char *msg_fmt;\n };\n \n-static int warn_if_dangling_symref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flags, void *cb_data)\n+static int warn_if_dangling_symref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct warn_if_dangling_data *d = cb_data;\n \tconst char *resolves_to;\n@@ -439,7 +441,7 @@ int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n \tstruct strbuf buf = STRBUF_INIT;\n \tint ret = 0;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \n \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n \tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n@@ -654,7 +656,7 @@ int expand_ref(struct repository *repo, const char *str, int len,\n \tfor (p = ref_rev_parse_rules; *p; p++) {\n \t\tstruct object_id oid_from_ref;\n \t\tstruct object_id *this_result;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \t\tstruct ref_store *refs = get_main_ref_store(repo);\n \t\tint ignore_errno;\n \n@@ -1389,7 +1391,7 @@ const char *find_descendant_ref(const char *dirname,\n int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n {\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \tint ignore_errno;\n \n \tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n@@ -1467,11 +1469,9 @@ struct do_for_each_ref_help {\n \tvoid *cb_data;\n };\n \n-static int do_for_each_ref_helper(struct repository *r,\n-\t\t\t\t  const char *refname,\n+static int do_for_each_ref_helper(struct repository *r, const char *refname,\n \t\t\t\t  const struct object_id *oid,\n-\t\t\t\t  int flags,\n-\t\t\t\t  void *cb_data)\n+\t\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct do_for_each_ref_help *hp = cb_data;\n \n@@ -1678,15 +1678,13 @@ int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n \t\t\t\t\t   type, failure_errno);\n }\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags, int *failure_errno)\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    int resolve_flags, struct object_id *oid,\n+\t\t\t\t    unsigned int *flags, int *failure_errno)\n {\n \tstatic struct strbuf sb_refname = STRBUF_INIT;\n \tstruct object_id unused_oid;\n-\tint unused_flags;\n+\tunsigned int unused_flags;\n \tint symref_count;\n \n \tassert(failure_errno);\n@@ -1782,7 +1780,7 @@ int refs_init_db(struct strbuf *err)\n }\n \n const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags)\n+\t\t\t       struct object_id *oid, unsigned int *flags)\n {\n \tint ignore_errno;\n \n@@ -1794,7 +1792,7 @@ int resolve_gitlink_ref(const char *submodule, const char *refname,\n \t\t\tstruct object_id *oid)\n {\n \tstruct ref_store *refs;\n-\tint flags;\n+\tunsigned int flags;\n \tint ignore_errno;\n \n \trefs = get_submodule_ref_store(submodule);\ndiff --git a/refs.h b/refs.h\nindex 8f91a7f9ff2..c5462b75807 100644\n--- a/refs.h\n+++ b/refs.h\n@@ -68,23 +68,21 @@ struct worktree;\n #define RESOLVE_REF_NO_RECURSE 0x02\n #define RESOLVE_REF_ALLOW_BAD_NAME 0x04\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags, int *failure_errno);\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    int resolve_flags, struct object_id *oid,\n+\t\t\t\t    unsigned int *flags, int *failure_errno);\n \n const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags);\n+\t\t\t       struct object_id *oid, unsigned int *flags);\n \n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags);\n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags);\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags);\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags);\n \n-int read_ref_full(const char *refname, int resolve_flags,\n-\t\t  struct object_id *oid, int *flags);\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags);\n int read_ref(const char *refname, struct object_id *oid);\n \n /*\n@@ -298,17 +296,15 @@ struct ref_transaction;\n  * arguments is only guaranteed to be valid for the duration of a\n  * single callback invocation.\n  */\n-typedef int each_ref_fn(const char *refname,\n-\t\t\tconst struct object_id *oid, int flags, void *cb_data);\n+typedef int each_ref_fn(const char *refname, const struct object_id *oid,\n+\t\t\tunsigned int flags, void *cb_data);\n \n /*\n  * The same as each_ref_fn, but also with a repository argument that\n  * contains the repository associated with the callback.\n  */\n-typedef int each_repo_ref_fn(struct repository *r,\n-\t\t\t     const char *refname,\n-\t\t\t     const struct object_id *oid,\n-\t\t\t     int flags,\n+typedef int each_repo_ref_fn(struct repository *r, const char *refname,\n+\t\t\t     const struct object_id *oid, unsigned int flags,\n \t\t\t     void *cb_data);\n \n /*\n@@ -532,7 +528,7 @@ int for_each_reflog(each_ref_fn fn, void *cb_data);\n  * allow a single \"*\" wildcard character in the refspec. No leading or\n  * repeated slashes are accepted.\n  */\n-int check_refname_format(const char *refname, int flags);\n+int check_refname_format(const char *refname, unsigned int flags);\n \n /*\n  * Apply the rules from check_refname_format, but mutate the result until it\n@@ -896,7 +892,7 @@ struct ref_store *get_main_ref_store(struct repository *r);\n  *\n  * ----\n  * static int handle_remote_ref(const char *refname,\n- * \t\tconst unsigned char *sha1, int flags, void *cb_data)\n+ * \t\tconst unsigned char *sha1, unsigned int flags, void *cb_data)\n  * {\n  * \tstruct strbuf *output = cb_data;\n  * \tstrbuf_addf(output, \"%s\\n\", refname);\ndiff --git a/refs/files-backend.c b/refs/files-backend.c\nindex 43a3b882d7c..181998a65bf 100644\n--- a/refs/files-backend.c\n+++ b/refs/files-backend.c\n@@ -261,7 +261,7 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \twhile ((de = readdir(d)) != NULL) {\n \t\tstruct object_id oid;\n \t\tstruct stat st;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (de->d_name[0] == '.')\n \t\t\tcontinue;\n@@ -1391,7 +1391,8 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \tstruct files_ref_store *refs =\n \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n \tstruct object_id orig_oid;\n-\tint flag = 0, logmoved = 0;\n+\tint logmoved = 0;\n+\tunsigned int flag = 0;\n \tstruct ref_lock *lock;\n \tstruct stat loginfo;\n \tstruct strbuf sb_oldref = STRBUF_INIT;\n@@ -1826,7 +1827,7 @@ static int commit_ref_update(struct files_ref_store *refs,\n \t\t * check with HEAD only which should cover 99% of all usage\n \t\t * scenarios (even 100% of the default ones).\n \t\t */\n-\t\tint head_flag;\n+\t\tunsigned int head_flag;\n \t\tconst char *head_ref;\n \t\tint ignore_errno;\n \n@@ -2159,7 +2160,7 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)\n \tint ignore_errno;\n \n \twhile ((ok = dir_iterator_advance(diter)) == ITER_OK) {\n-\t\tint flags;\n+\t\tunsigned int flags;\n \n \t\tif (!S_ISREG(diter->st.st_mode))\n \t\t\tcontinue;\n@@ -2669,7 +2670,7 @@ static int files_transaction_prepare(struct ref_store *ref_store,\n \tint ret = 0;\n \tstruct string_list affected_refnames = STRING_LIST_INIT_NODUP;\n \tchar *head_ref = NULL;\n-\tint head_type;\n+\tunsigned int head_type;\n \tstruct files_transaction_backend_data *backend_data;\n \tstruct ref_transaction *packed_transaction = NULL;\n \n@@ -2982,8 +2983,8 @@ static int files_transaction_abort(struct ref_store *ref_store,\n \treturn 0;\n }\n \n-static int ref_present(const char *refname,\n-\t\t       const struct object_id *oid, int flags, void *cb_data)\n+static int ref_present(const char *refname, const struct object_id *oid,\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tstruct string_list *affected_refnames = cb_data;\n \n@@ -3209,7 +3210,7 @@ static int files_reflog_expire(struct ref_store *ref_store,\n \t\tif ((expire_flags & EXPIRE_REFLOGS_UPDATE_REF) &&\n \t\t    !is_null_oid(&cb.last_kept_oid)) {\n \t\t\tint ignore_errno;\n-\t\t\tint type;\n+\t\t\tunsigned int type;\n \t\t\tconst char *ref;\n \n \t\t\tref = refs_resolve_ref_unsafe(&refs->base, refname,\ndiff --git a/remote.c b/remote.c\nindex a6d8ec6c1ac..9fc370b7543 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -500,7 +500,7 @@ static void alias_all_urls(struct remote_state *remote_state)\n \n static void read_config(struct repository *repo)\n {\n-\tint flag;\n+\tunsigned int flag;\n \n \tif (repo->remote_state->initialized)\n \t\treturn;\n@@ -1272,7 +1272,7 @@ static int match_explicit(struct ref *src, struct ref *dst,\n \t\treturn -1;\n \n \tif (!dst_value) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tdst_value = resolve_ref_unsafe(matched_src->name,\n \t\t\t\t\t       RESOLVE_REF_READING,\n@@ -1948,7 +1948,7 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)\n \n static int ignore_symref_update(const char *refname)\n {\n-\tint flag;\n+\tunsigned int flag;\n \n \tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n \t\treturn 0; /* non-existing refs are OK */\n@@ -2288,7 +2288,7 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,\n }\n \n static int one_local_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct ref ***local_tail = cb_data;\n \tstruct ref *ref;\n@@ -2369,7 +2369,7 @@ struct stale_heads_info {\n };\n \n static int get_stale_heads_cb(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct stale_heads_info *info = cb_data;\n \tstruct string_list matches = STRING_LIST_INIT_DUP;\ndiff --git a/replace-object.c b/replace-object.c\nindex 7bd9aba6ee6..1a9ed348661 100644\n--- a/replace-object.c\n+++ b/replace-object.c\n@@ -6,10 +6,9 @@\n #include \"repository.h\"\n #include \"commit.h\"\n \n-static int register_replace_ref(struct repository *r,\n-\t\t\t\tconst char *refname,\n-\t\t\t\tconst struct object_id *oid,\n-\t\t\t\tint flag, void *cb_data)\n+static int register_replace_ref(struct repository *r, const char *refname,\n+\t\t\t\tconst struct object_id *oid, unsigned int flag,\n+\t\t\t\tvoid *cb_data)\n {\n \t/* Get sha1 from refname */\n \tconst char *slash = strrchr(refname, '/');\ndiff --git a/revision.c b/revision.c\nindex ad4286fbdde..37bdd43f9ee 100644\n--- a/revision.c\n+++ b/revision.c\n@@ -1527,7 +1527,7 @@ int ref_excluded(struct string_list *ref_excludes, const char *path)\n }\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct object *object;\n@@ -1611,8 +1611,8 @@ static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n }\n \n static int handle_one_reflog(const char *refname_in_wt,\n-\t\t\t     const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     const struct object_id *oid, unsigned int flag,\n+\t\t\t     void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct strbuf refname = STRBUF_INIT;\n@@ -2678,7 +2678,7 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,\n \n static void NORETURN diagnose_missing_default(const char *def)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname;\n \n \trefname = resolve_ref_unsafe(def, 0, NULL, &flags);\ndiff --git a/server-info.c b/server-info.c\nindex 7701d7c20a1..78119897d30 100644\n--- a/server-info.c\n+++ b/server-info.c\n@@ -147,7 +147,7 @@ out:\n }\n \n static int add_info_ref(const char *path, const struct object_id *oid,\n-\t\t\tint flag, void *cb_data)\n+\t\t\tunsigned int flag, void *cb_data)\n {\n \tstruct update_info_ctx *uic = cb_data;\n \tstruct object *o = parse_object(the_repository, oid);\ndiff --git a/shallow.c b/shallow.c\nindex 9ed18eb8849..eebb66961a8 100644\n--- a/shallow.c\n+++ b/shallow.c\n@@ -596,7 +596,7 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,\n }\n \n static int mark_uninteresting(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\n@@ -707,7 +707,7 @@ struct commit_array {\n };\n \n static int add_ref(const char *refname, const struct object_id *oid,\n-\t\t   int flags, void *cb_data)\n+\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct commit_array *ca = cb_data;\n \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\ndiff --git a/submodule.c b/submodule.c\nindex c6890705241..47227b3cae4 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -909,7 +909,7 @@ static void free_submodules_oids(struct string_list *submodules)\n }\n \n static int has_remote(const char *refname, const struct object_id *oid,\n-\t\t      int flags, void *cb_data)\n+\t\t      unsigned int flags, void *cb_data)\n {\n \treturn 1;\n }\n@@ -1216,7 +1216,7 @@ int push_unpushed_submodules(struct repository *r,\n }\n \n static int append_oid_to_array(const char *ref, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int flags, void *data)\n {\n \tstruct oid_array *array = data;\n \toid_array_append(array, oid);\ndiff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c\nindex 3e4ddaee705..5054600e3a9 100644\n--- a/t/helper/test-ref-store.c\n+++ b/t/helper/test-ref-store.c\n@@ -160,7 +160,7 @@ static int cmd_rename_ref(struct ref_store *refs, const char **argv)\n }\n \n static int each_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flags, void *cb_data)\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tprintf(\"%s %s 0x%x\\n\", oid_to_hex(oid), refname, flags);\n \treturn 0;\n@@ -178,7 +178,7 @@ static int cmd_resolve_ref(struct ref_store *refs, const char **argv)\n \tstruct object_id oid = *null_oid();\n \tconst char *refname = notnull(*argv++, \"refname\");\n \tint resolve_flags = arg_flags(*argv++, \"resolve-flags\", empty_flags);\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *ref;\n \tint ignore_errno;\n \ndiff --git a/transport-helper.c b/transport-helper.c\nindex a0297b0986c..c207103aaff 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -1090,7 +1090,7 @@ static int push_refs_with_export(struct transport *transport,\n \t\t\tif (strcmp(ref->name, ref->peer_ref->name)) {\n \t\t\t\tif (!ref->deletion) {\n \t\t\t\t\tconst char *name;\n-\t\t\t\t\tint flag;\n+\t\t\t\t\tunsigned int flag;\n \n \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n \t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\ndiff --git a/transport.c b/transport.c\nindex 2a3e3241545..5b6d5d29388 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -80,7 +80,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\tconst char *localname;\n \t\tconst char *tmp;\n \t\tconst char *remotename;\n-\t\tint flag = 0;\n+\t\tunsigned int flag = 0;\n \t\t/*\n \t\t * Check suitability for tracking. Must be successful /\n \t\t * already up-to-date ref create/modify (not delete).\ndiff --git a/upload-pack.c b/upload-pack.c\nindex 8acc98741bb..cb652db4f78 100644\n--- a/upload-pack.c\n+++ b/upload-pack.c\n@@ -822,7 +822,7 @@ static void send_unshallow(struct upload_pack_data *data)\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data);\n+\t\t     unsigned int flag, void *cb_data);\n static void deepen(struct upload_pack_data *data, int depth)\n {\n \tif (depth == INFINITE_DEPTH && !is_repository_shallow(the_repository)) {\n@@ -1169,7 +1169,7 @@ static int mark_our_ref(const char *refname, const char *refname_full,\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int flag, void *cb_data)\n {\n \tconst char *refname = strip_namespace(refname_full);\n \n@@ -1193,7 +1193,7 @@ static void format_session_id(struct strbuf *buf, struct upload_pack_data *d) {\n }\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n@@ -1236,7 +1236,7 @@ static int send_ref(const char *refname, const struct object_id *oid,\n }\n \n static int find_symref(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tconst char *symref_target;\n \tstruct string_list_item *item;\ndiff --git a/walker.c b/walker.c\nindex c5e29219795..c1b82504f51 100644\n--- a/walker.c\n+++ b/walker.c\n@@ -216,7 +216,7 @@ static int interpret_target(struct walker *walker, char *target, struct object_i\n }\n \n static int mark_complete(const char *path, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\ndiff --git a/worktree.c b/worktree.c\nindex 6f598dcfcdf..0fecabed3b4 100644\n--- a/worktree.c\n+++ b/worktree.c\n@@ -26,7 +26,7 @@ void free_worktrees(struct worktree **worktrees)\n  */\n static void add_head_info(struct worktree *wt)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *target;\n \tint ignore_errno;\n \n@@ -415,7 +415,7 @@ const struct worktree *find_shared_symref(struct worktree **worktrees,\n \t\tstruct worktree *wt = worktrees[i];\n \t\tconst char *symref_target;\n \t\tstruct ref_store *refs;\n-\t\tint flags;\n+\t\tunsigned int flags;\n \t\tint ignore_errno;\n \n \t\tif (wt->is_bare)\n@@ -562,7 +562,7 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \tfor (p = worktrees; *p; p++) {\n \t\tstruct worktree *wt = *p;\n \t\tstruct object_id oid;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \t\tint ignore_errno;\n \n \t\tif (wt->is_current)\n\nbase-commit: 5d01301f2b865aa8dba1654d3f447ce9d21db0b5\n-- \ngitgitgadget\n"},{"id":"447388","messageId":"xmqqa6fbgx85.fsf@gitster.g","threadId":"57344","inReplyTo":"pull.1210.git.git.1643660136530.gitgitgadget@gmail.com","subject":"Re: [PATCH] refs.h: make all flags arguments unsigned","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-02-01T02:02:50Z","receivedAt":"2022-02-01T02:03:30Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Han-Wen Nienhuys via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: Han-Wen Nienhuys <hanwen@google.com>\n>\n> As discussed in\n> https://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\n> want to treat the sign bit specially, so make all flags in refs.h\n> unsigned.\n\nIt may be true that we do not want to, but are we sure there is no\ncode that already uses some cleverness to make the topmost bit\nspecial by e.g. doing ugly things like \"if (flags < 0)\" ;-)?\n\nIOW, what we want or do not want does not matter as much as what the\ncode paths that use these declarations want to do (and we need to fix\nthem before we can do this conversion).\n\nI haven't had energy to vet the entire codebase for all flag words\nand that is why I've never produced a patch like this one myself.\n\nThanks for carefully vetting after creating this (presumably\nmechanically prepared) patch---producing is the easy part, but\nmaking sure it does not break unexpectedly is much harder.\n\nSomebody other than the author needs to double check the result,\nthough.\n\nThanks.\n\n>  bisect.c                    |  4 +--\n>  builtin/bisect--helper.c    |  7 ++---\n>  builtin/branch.c            |  4 +--\n>  builtin/checkout.c          |  9 ++++---\n>  builtin/describe.c          |  3 ++-\n>  builtin/fetch.c             | 10 +++----\n>  builtin/fsck.c              |  4 +--\n>  builtin/gc.c                |  5 ++--\n>  builtin/name-rev.c          |  3 ++-\n>  builtin/pack-objects.c      | 11 ++++----\n>  builtin/rebase.c            |  5 ++--\n>  builtin/receive-pack.c      |  4 +--\n>  builtin/reflog.c            |  5 ++--\n>  builtin/remote.c            | 13 ++++++----\n>  builtin/repack.c            |  4 +--\n>  builtin/replace.c           |  4 +--\n>  builtin/rev-parse.c         |  6 +++--\n>  builtin/show-branch.c       |  6 ++---\n>  builtin/show-ref.c          |  4 +--\n>  builtin/stash.c             |  2 +-\n>  builtin/submodule--helper.c |  4 +--\n>  builtin/symbolic-ref.c      |  2 +-\n>  bundle.c                    |  2 +-\n>  commit-graph.c              |  5 ++--\n>  config.c                    |  2 +-\n>  delta-islands.c             |  2 +-\n>  fetch-pack.c                |  7 ++---\n>  help.c                      |  2 +-\n>  http-backend.c              |  4 +--\n>  log-tree.c                  |  4 +--\n>  ls-refs.c                   |  4 +--\n>  midx.c                      |  5 ++--\n>  negotiator/default.c        |  2 +-\n>  negotiator/skipping.c       |  2 +-\n>  notes.c                     |  5 ++--\n>  object-name.c               |  2 +-\n>  reachable.c                 |  2 +-\n>  ref-filter.c                |  3 ++-\n>  refs.c                      | 52 ++++++++++++++++++-------------------\n>  refs.h                      | 38 ++++++++++++---------------\n>  refs/files-backend.c        | 17 ++++++------\n>  remote.c                    | 10 +++----\n>  replace-object.c            |  7 +++--\n>  revision.c                  |  8 +++---\n>  server-info.c               |  2 +-\n>  shallow.c                   |  4 +--\n>  submodule.c                 |  4 +--\n>  t/helper/test-ref-store.c   |  4 +--\n>  transport-helper.c          |  2 +-\n>  transport.c                 |  2 +-\n>  upload-pack.c               |  8 +++---\n>  walker.c                    |  2 +-\n>  worktree.c                  |  6 ++---\n>  53 files changed, 171 insertions(+), 167 deletions(-)\n"},{"id":"447404","messageId":"CAFQ2z_PtNsrSXdCG_5vr99Fz63GDMpC6j7rzLqOn+cZufi+xfQ@mail.gmail.com","threadId":"57344","inReplyTo":"xmqqa6fbgx85.fsf@gitster.g","subject":"Re: [PATCH] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@google.com","sentAt":"2022-02-01T11:47:11Z","receivedAt":"2022-02-01T11:47:26Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"On Tue, Feb 1, 2022 at 3:02 AM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> \"Han-Wen Nienhuys via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n>\n> > From: Han-Wen Nienhuys <hanwen@google.com>\n> >\n> > As discussed in\n> > https://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\n> > want to treat the sign bit specially, so make all flags in refs.h\n> > unsigned.\n>\n> It may be true that we do not want to, but are we sure there is no\n> code that already uses some cleverness to make the topmost bit\n> special by e.g. doing ugly things like \"if (flags < 0)\" ;-)?\n\nIn refs.h, we don't have any bitmasks that accept 32 different bit\nvalues, so it's hard to see how we would stumble into a case like\nthat.\n\n> I haven't had energy to vet the entire codebase for all flag words\n> and that is why I've never produced a patch like this one myself.\n>\n> Thanks for carefully vetting after creating this (presumably\n> mechanically prepared) patch---producing is the easy part, but\n> making sure it does not break unexpectedly is much harder.\n\nI went over the changes once more, uniformizing the naming. I didn't\nsee any shenanigans.\n\n-- \nHan-Wen Nienhuys - Google Munich\nI work 80%. Don't expect answers from me on Fridays.\n--\n\nGoogle Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich\n\nRegistergericht und -nummer: Hamburg, HRB 86891\n\nSitz der Gesellschaft: Hamburg\n\nGeschäftsführer: Paul Manicle, Halimah DeLaine Prado\n"},{"id":"447405","messageId":"pull.1210.v2.git.git.1643719616840.gitgitgadget@gmail.com","threadId":"57344","inReplyTo":"pull.1210.git.git.1643660136530.gitgitgadget@gmail.com","subject":"[PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2022-02-01T12:46:56Z","receivedAt":"2022-02-01T12:47:04Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"From: Han-Wen Nienhuys <hanwen@google.com>\n\nAs discussed in\nhttps://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\nwant to treat the sign bit specially, so make all flags in refs.h\nunsigned.\n\nFor uniformity, rename all variables to `flags` or `unused_flags`,\nfrom `flag`. In a couple of shadowing cases, use `ref_flags` for\nclarity.\n\nSigned-off-by: Han-Wen Nienhuys <hanwen@google.com>\n---\n    refs.h: make all flags arguments unsigned\n    \n    v2:\n    \n     * vet call sites.\n     * uniform naming.\n     * make resolve_flags unsigned too\n    \n    Signed-off-by: Han-Wen Nienhuys hanwen@google.com\n\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1210%2Fhanwen%2Funsigned-flags-v2\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1210/hanwen/unsigned-flags-v2\nPull-Request: https://github.com/git/git/pull/1210\n\nRange-diff vs v1:\n\n 1:  c1dc792bd0d ! 1:  216006057b7 refs.h: make all flags arguments unsigned\n     @@ Commit message\n          want to treat the sign bit specially, so make all flags in refs.h\n          unsigned.\n      \n     +    For uniformity, rename all variables to `flags` or `unused_flags`,\n     +    from `flag`. In a couple of shadowing cases, use `ref_flags` for\n     +    clarity.\n     +\n          Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>\n      \n       ## bisect.c ##\n     @@ bisect.c: void find_bisection(struct commit_list **commit_list, int *reaches,\n       \n       static int register_ref(const char *refname, const struct object_id *oid,\n      -\t\t\tint flags, void *cb_data)\n     -+\t\t\tunsigned int flags, void *cb_data)\n     ++\t\t\tunsigned int unused_flags, void *cb_data)\n       {\n       \tstruct strbuf good_prefix = STRBUF_INIT;\n       \tstrbuf_addstr(&good_prefix, term_good);\n     @@ bisect.c: int estimate_bisect_steps(int all)\n       \n       static int mark_for_removal(const char *refname, const struct object_id *oid,\n      -\t\t\t    int flag, void *cb_data)\n     -+\t\t\t    unsigned int flag, void *cb_data)\n     ++\t\t\t    unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct string_list *refs = cb_data;\n       \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\n     @@ builtin/bisect--helper.c: static int check_and_set_terms(struct bisect_terms *te\n       \n       static int mark_good(const char *refname, const struct object_id *oid,\n      -\t\t     int flag, void *cb_data)\n     -+\t\t     unsigned int flag, void *cb_data)\n     ++\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \tint *m_good = (int *)cb_data;\n       \t*m_good = 0;\n     @@ builtin/bisect--helper.c: finish:\n       \n       static int add_bisect_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t  int flags, void *cb)\n     -+\t\t\t  unsigned int flags, void *cb)\n     ++\t\t\t  unsigned int unused_flags, void *cb)\n       {\n       \tstruct add_bisect_ref_data *data = cb;\n       \n     @@ builtin/bisect--helper.c: static enum bisect_error bisect_start(struct bisect_te\n       \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n      -\tint flags, pathspec_pos;\n      +\tint pathspec_pos;\n     -+\tunsigned int flags;\n     ++\tunsigned int unused_flags;\n       \tenum bisect_error res = BISECT_OK;\n       \tstruct string_list revs = STRING_LIST_INIT_DUP;\n       \tstruct string_list states = STRING_LIST_INIT_DUP;\n     +@@ builtin/bisect--helper.c: static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n     + \t/*\n     + \t * Verify HEAD\n     + \t */\n     +-\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &flags);\n     ++\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &unused_flags);\n     + \tif (!head)\n     + \t\tif (get_oid(\"HEAD\", &head_oid))\n     + \t\t\treturn error(_(\"bad HEAD - I need a HEAD\"));\n      \n       ## builtin/branch.c ##\n      @@ builtin/branch.c: static int delete_branches(int argc, const char **argv, int force, int kinds,\n     @@ builtin/checkout.c: static void update_refs_for_switch(const struct checkout_opt\n       static int add_pending_uninteresting_ref(const char *refname,\n       \t\t\t\t\t const struct object_id *oid,\n      -\t\t\t\t\t int flags, void *cb_data)\n     -+\t\t\t\t\t unsigned int flags, void *cb_data)\n     ++\t\t\t\t\t unsigned int unused_flags,\n     ++\t\t\t\t\t void *cb_data)\n       {\n       \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n       \treturn 0;\n     @@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,\n       \tstruct object_id rev;\n      -\tint flag, writeout_error = 0;\n      +\tint writeout_error = 0;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \tint do_merge = 1;\n       \n       \ttrace2_cmd_mode(\"branch\");\n     + \n     + \tmemset(&old_branch_info, 0, sizeof(old_branch_info));\n     +-\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flag);\n     ++\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flags);\n     + \tif (old_branch_info.path)\n     + \t\told_branch_info.commit = lookup_commit_reference_gently(the_repository, &rev, 1);\n     +-\tif (!(flag & REF_ISSYMREF))\n     ++\tif (!(flags & REF_ISSYMREF))\n     + \t\tFREE_AND_NULL(old_branch_info.path);\n     + \n     + \tif (old_branch_info.path) {\n      @@ builtin/checkout.c: static int checkout_branch(struct checkout_opts *opts,\n       \n       \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n       \t    !opts->ignore_other_worktrees) {\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     - \t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n     - \t\tif (head_ref &&\n     - \t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n     -@@ builtin/checkout.c: static int checkout_branch(struct checkout_opts *opts,\n     +-\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n     +-\t\tif (head_ref &&\n     +-\t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n     ++\t\tunsigned int flags;\n     ++\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flags);\n     ++\t\tif (head_ref && (!(flags & REF_ISSYMREF) ||\n     ++\t\t\t\t strcmp(head_ref, new_branch_info->path)))\n     + \t\t\tdie_if_checked_out(new_branch_info->path, 1);\n     + \t\tfree(head_ref);\n     + \t}\n       \n       \tif (!new_branch_info->commit && opts->new_branch) {\n       \t\tstruct object_id rev;\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     ++\t\tunsigned int flags;\n       \n     - \t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n     - \t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n     +-\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n     +-\t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n     ++\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flags) &&\n     ++\t\t    (flags & REF_ISSYMREF) && is_null_oid(&rev))\n     + \t\t\treturn switch_unborn_to_new_branch(opts);\n     + \t}\n     + \treturn switch_branches(opts, new_branch_info);\n      \n       ## builtin/describe.c ##\n      @@ builtin/describe.c: static void add_to_known_names(const char *path,\n     @@ builtin/describe.c: static void add_to_known_names(const char *path,\n       \n      -static int get_name(const char *path, const struct object_id *oid, int flag, void *cb_data)\n      +static int get_name(const char *path, const struct object_id *oid,\n     -+\t\t    unsigned int flag, void *cb_data)\n     ++\t\t    unsigned int unused_flags, void *cb_data)\n       {\n       \tint is_tag = 0;\n       \tstruct object_id peeled;\n     @@ builtin/fetch.c: static struct refname_hash_entry *refname_hash_add(struct hashm\n      -\t\t\t   const struct object_id *oid,\n      -\t\t\t   int flag, void *cbdata)\n      +static int add_one_refname(const char *refname, const struct object_id *oid,\n     -+\t\t\t   unsigned int flag, void *cbdata)\n     ++\t\t\t   unsigned int unused_flags, void *cbdata)\n       {\n       \tstruct hashmap *refname_map = cbdata;\n       \n     @@ builtin/fetch.c: static void set_option(struct transport *transport, const char\n      -static int add_oid(const char *refname, const struct object_id *oid, int flags,\n      -\t\t   void *cb_data)\n      +static int add_oid(const char *refname, const struct object_id *oid,\n     -+\t\t   unsigned int flags, void *cb_data)\n     ++\t\t   unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct oid_array *oids = cb_data;\n       \n     @@ builtin/fsck.c: static int fsck_handle_reflog_ent(struct object_id *ooid, struct\n       \n       static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n      -\t\t\t      int flag, void *cb_data)\n     -+\t\t\t      unsigned int flag, void *cb_data)\n     ++\t\t\t      unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct strbuf refname = STRBUF_INIT;\n       \n     @@ builtin/fsck.c: static int fsck_handle_reflog(const char *logname, const struct\n       \n       static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t   int flag, void *cb_data)\n     -+\t\t\t   unsigned int flag, void *cb_data)\n     ++\t\t\t   unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object *obj;\n       \n     @@ builtin/gc.c: struct cg_auto_data {\n      -\t\t      const struct object_id *oid, int flags,\n      -\t\t      void *cb_data)\n      +static int dfs_on_ref(const char *refname, const struct object_id *oid,\n     -+\t\t      unsigned int flags, void *cb_data)\n     ++\t\t      unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n       \tint result = 0;\n     @@ builtin/name-rev.c: static int cmp_by_tag_and_age(const void *a_, const void *b_\n       \n      -static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)\n      +static int name_ref(const char *path, const struct object_id *oid,\n     -+\t\t    unsigned int flags, void *cb_data)\n     ++\t\t    unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object *o = parse_object(the_repository, oid);\n       \tstruct name_ref_data *data = cb_data;\n     @@ builtin/pack-objects.c: static enum write_one_status write_one(struct hashfile *\n      -static int mark_tagged(const char *path, const struct object_id *oid, int flag,\n      -\t\t       void *cb_data)\n      +static int mark_tagged(const char *path, const struct object_id *oid,\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object_id peeled;\n       \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n     @@ builtin/pack-objects.c: static void add_tag_chain(const struct object_id *oid)\n       \n      -static int add_ref_tag(const char *tag, const struct object_id *oid, int flag, void *cb_data)\n      +static int add_ref_tag(const char *tag, const struct object_id *oid,\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object_id peeled;\n       \n     @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix\n       \tconst char *branch_name;\n      -\tint ret, flags, total_argc, in_progress = 0;\n      +\tint ret, total_argc, in_progress = 0;\n     -+\tunsigned int flags;\n       \tint keep_base = 0;\n       \tint ok_to_skip_pre_rebase = 0;\n       \tstruct strbuf msg = STRBUF_INIT;\n     +@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     + \t\t}\n     + \t} else if (argc == 0) {\n     + \t\t/* Do not need to switch branches, we are already on it. */\n     ++\t\tunsigned int flags;\n     + \t\toptions.head_name =\n     + \t\t\txstrdup_or_null(resolve_ref_unsafe(\"HEAD\", 0, NULL,\n     + \t\t\t\t\t &flags));\n      @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n       \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n       \t\t    &options.orig_head, &merge_base) &&\n       \t    allow_preemptive_ff) {\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     ++\t\tunsigned int unused_flags;\n       \n       \t\tif (!(options.flags & REBASE_FORCE)) {\n       \t\t\t/* Lazily switch to the target branch if needed... */\n     +@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     + \t\t\tif (!(options.flags & REBASE_NO_QUIET))\n     + \t\t\t\t; /* be quiet */\n     + \t\t\telse if (!strcmp(branch_name, \"HEAD\") &&\n     +-\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n     ++\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL,\n     ++\t\t\t\t\t\t    &unused_flags))\n     + \t\t\t\tputs(_(\"HEAD is up to date.\"));\n     + \t\t\telse\n     + \t\t\t\tprintf(_(\"Current branch %s is up to date.\\n\"),\n     +@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     + \t\t} else if (!(options.flags & REBASE_NO_QUIET))\n     + \t\t\t; /* be quiet */\n     + \t\telse if (!strcmp(branch_name, \"HEAD\") &&\n     +-\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n     ++\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &unused_flags))\n     + \t\t\tputs(_(\"HEAD is up to date, rebase forced.\"));\n     + \t\telse\n     + \t\t\tprintf(_(\"Current branch %s is up to date, rebase \"\n      \n       ## builtin/receive-pack.c ##\n      @@ builtin/receive-pack.c: static void show_ref(const char *path, const struct object_id *oid)\n     @@ builtin/receive-pack.c: static void show_ref(const char *path, const struct obje\n       \n       static int show_ref_cb(const char *path_full, const struct object_id *oid,\n      -\t\t       int flag, void *data)\n     -+\t\t       unsigned int flag, void *data)\n     ++\t\t       unsigned int unused_flags, void *data)\n       {\n       \tstruct oidset *seen = data;\n       \tconst char *path = strip_namespace(path_full);\n     +@@ builtin/receive-pack.c: static void run_update_post_hook(struct command *commands)\n     + \n     + static void check_aliased_update_internal(struct command *cmd,\n     + \t\t\t\t\t  struct string_list *list,\n     +-\t\t\t\t\t  const char *dst_name, int flag)\n     ++\t\t\t\t\t  const char *dst_name,\n     ++\t\t\t\t\t  unsigned int flags)\n     + {\n     + \tstruct string_list_item *item;\n     + \tstruct command *dst_cmd;\n     + \n     +-\tif (!(flag & REF_ISSYMREF))\n     ++\tif (!(flags & REF_ISSYMREF))\n     + \t\treturn;\n     + \n     + \tif (!dst_name) {\n      @@ builtin/receive-pack.c: static void check_aliased_update(struct command *cmd, struct string_list *list)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tconst char *dst_name;\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \n       \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n     - \tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n     +-\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n     +-\tcheck_aliased_update_internal(cmd, list, dst_name, flag);\n     ++\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flags);\n     ++\tcheck_aliased_update_internal(cmd, list, dst_name, flags);\n     + \tstrbuf_release(&buf);\n     + }\n     + \n      \n       ## builtin/reflog.c ##\n      @@ builtin/reflog.c: static int should_expire_reflog_ent_verbose(struct object_id *ooid,\n     @@ builtin/reflog.c: static void reflog_expiry_cleanup(void *cb_data)\n       \n      -static int collect_reflog(const char *ref, const struct object_id *oid, int unused, void *cb_data)\n      +static int collect_reflog(const char *ref, const struct object_id *oid,\n     -+\t\t\t  unsigned int unused, void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct worktree_reflogs *cb = cb_data;\n       \tstruct worktree *worktree = cb->worktree;\n     @@ builtin/remote.c: struct branches_for_remote {\n       static int add_branch_for_removal(const char *refname,\n      -\tconst struct object_id *oid, int flags, void *cb_data)\n      +\t\t\t\t  const struct object_id *oid,\n     -+\t\t\t\t  unsigned int flags, void *cb_data)\n     ++\t\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct branches_for_remote *branches = cb_data;\n       \tstruct refspec_item refspec;\n     @@ builtin/remote.c: struct rename_info {\n       \n       static int read_remote_branches(const char *refname,\n      -\tconst struct object_id *oid, int flags, void *cb_data)\n     -+\t\t\t\tconst struct object_id *oid, unsigned int flags,\n     -+\t\t\t\tvoid *cb_data)\n     ++\t\t\t\tconst struct object_id *oid,\n     ++\t\t\t\tunsigned int unused_flags, void *cb_data)\n       {\n       \tstruct rename_info *rename = cb_data;\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tstruct string_list_item *item;\n      -\tint flag;\n     -+\tunsigned int flag;\n       \tconst char *symref;\n       \n       \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n     + \tif (starts_with(refname, buf.buf)) {\n     ++\t\tunsigned int flags;\n     + \t\titem = string_list_append(rename->remote_branches, refname);\n     +-\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,\n     +-\t\t\t\t\t    NULL, &flag);\n     +-\t\tif (symref && (flag & REF_ISSYMREF))\n     ++\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING, NULL,\n     ++\t\t\t\t\t    &flags);\n     ++\t\tif (symref && (flags & REF_ISSYMREF))\n     + \t\t\titem->util = xstrdup(symref);\n     + \t\telse\n     + \t\t\titem->util = NULL;\n      @@ builtin/remote.c: static int mv(int argc, const char **argv)\n       \tfor_each_ref(read_remote_branches, &rename);\n       \tfor (i = 0; i < remote_branches.nr; i++) {\n       \t\tstruct string_list_item *item = remote_branches.items + i;\n      -\t\tint flag = 0;\n     -+\t\tunsigned int flag = 0;\n     ++\t\tunsigned int flags = 0;\n       \n     - \t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n     - \t\tif (!(flag & REF_ISSYMREF))\n     +-\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n     +-\t\tif (!(flag & REF_ISSYMREF))\n     ++\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flags);\n     ++\t\tif (!(flags & REF_ISSYMREF))\n     + \t\t\tcontinue;\n     + \t\tif (delete_ref(NULL, item->string, NULL, REF_NO_DEREF))\n     + \t\t\tdie(_(\"deleting '%s' failed\"), item->string);\n      @@ builtin/remote.c: static void free_remote_ref_states(struct ref_states *states)\n       }\n       \n     @@ builtin/remote.c: static void free_remote_ref_states(struct ref_states *states)\n      \n       ## builtin/repack.c ##\n      @@ builtin/repack.c: struct midx_snapshot_ref_data {\n     - };\n       \n       static int midx_snapshot_ref_one(const char *refname,\n     --\t\t\t\t const struct object_id *oid,\n     + \t\t\t\t const struct object_id *oid,\n      -\t\t\t\t int flag, void *_data)\n     -+\t\t\t\t const struct object_id *oid, unsigned int flag,\n     -+\t\t\t\t void *_data)\n     ++\t\t\t\t unsigned int unused_flag, void *_data)\n       {\n       \tstruct midx_snapshot_ref_data *data = _data;\n       \tstruct object_id peeled;\n      \n       ## builtin/replace.c ##\n      @@ builtin/replace.c: struct show_data {\n     - };\n       \n       static int show_reference(struct repository *r, const char *refname,\n     --\t\t\t  const struct object_id *oid,\n     + \t\t\t  const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  const struct object_id *oid, unsigned int flag,\n     -+\t\t\t  void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct show_data *data = cb_data;\n       \n     @@ builtin/rev-parse.c: static int show_default(void)\n       \n      -static int show_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int show_reference(const char *refname, const struct object_id *oid,\n     -+\t\t\t  unsigned int flag, void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tif (ref_excluded(ref_excludes, refname))\n       \t\treturn 0;\n     @@ builtin/rev-parse.c: static int show_reference(const char *refname, const struct\n       \n      -static int anti_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int anti_reference(const char *refname, const struct object_id *oid,\n     -+\t\t\t  unsigned int flag, void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tshow_rev(REVERSED, oid, refname);\n       \treturn 0;\n     @@ builtin/show-branch.c: static int append_ref(const char *refname, const struct o\n       \n       static int append_head_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t   int flag, void *cb_data)\n     -+\t\t\t   unsigned int flag, void *cb_data)\n     ++\t\t\t   unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object_id tmp;\n       \tint ofs = 11;\n     @@ builtin/show-branch.c: static int append_head_ref(const char *refname, const str\n       \n       static int append_remote_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     unsigned int flag, void *cb_data)\n     ++\t\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object_id tmp;\n       \tint ofs = 13;\n     +@@ builtin/show-branch.c: static int append_remote_ref(const char *refname, const struct object_id *oid,\n     + }\n     + \n     + static int append_tag_ref(const char *refname, const struct object_id *oid,\n     +-\t\t\t  int flag, void *cb_data)\n     ++\t\t\t  int unused_flags, void *cb_data)\n     + {\n     + \tif (!starts_with(refname, \"refs/tags/\"))\n     + \t\treturn 0;\n      @@ builtin/show-branch.c: static const char *match_ref_pattern = NULL;\n       static int match_ref_slash = 0;\n       \n       static int append_matching_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t       int flag, void *cb_data)\n     -+\t\t\t       unsigned int flag, void *cb_data)\n     ++\t\t\t       unsigned int flags, void *cb_data)\n       {\n       \t/* we want to allow pattern hold/<asterisk> to show all\n       \t * branches under refs/heads/hold/, and v0.99.9? to show\n     +@@ builtin/show-branch.c: static int append_matching_ref(const char *refname, const struct object_id *oid,\n     + \tif (wildmatch(match_ref_pattern, tail, 0))\n     + \t\treturn 0;\n     + \tif (starts_with(refname, \"refs/heads/\"))\n     +-\t\treturn append_head_ref(refname, oid, flag, cb_data);\n     ++\t\treturn append_head_ref(refname, oid, flags, cb_data);\n     + \tif (starts_with(refname, \"refs/tags/\"))\n     +-\t\treturn append_tag_ref(refname, oid, flag, cb_data);\n     ++\t\treturn append_tag_ref(refname, oid, flags, cb_data);\n     + \treturn append_ref(refname, oid, 0);\n     + }\n     + \n      \n       ## builtin/show-ref.c ##\n      @@ builtin/show-ref.c: static void show_one(const char *refname, const struct object_id *oid)\n     @@ builtin/show-ref.c: match:\n       \n       static int add_existing(const char *refname, const struct object_id *oid,\n      -\t\t\tint flag, void *cbdata)\n     -+\t\t\tunsigned int flag, void *cbdata)\n     ++\t\t\tunsigned int unused_flags, void *cbdata)\n       {\n       \tstruct string_list *list = (struct string_list *)cbdata;\n       \tstring_list_insert(list, refname);\n     @@ builtin/submodule--helper.c: static void print_status(unsigned int flags, char s\n      -\t\t\t\t     const struct object_id *oid, int flags,\n      -\t\t\t\t     void *cb_data)\n      +\t\t\t\t     const struct object_id *oid,\n     -+\t\t\t\t     unsigned int flags, void *cb_data)\n     ++\t\t\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object_id *output = cb_data;\n       \tif (oid)\n     @@ builtin/symbolic-ref.c: static const char * const git_symbolic_ref_usage[] = {\n       static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n       {\n      -\tint flag;\n     -+\tunsigned int flag;\n     - \tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n     +-\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n     ++\tunsigned int flags;\n     ++\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flags);\n       \n       \tif (!refname)\n     + \t\tdie(\"No such ref: %s\", HEAD);\n     +-\telse if (!(flag & REF_ISSYMREF)) {\n     ++\telse if (!(flags & REF_ISSYMREF)) {\n     + \t\tif (!quiet)\n     + \t\t\tdie(\"ref %s is not a symbolic ref\", HEAD);\n     + \t\telse\n      \n       ## bundle.c ##\n      @@ bundle.c: static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n     @@ bundle.c: static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n       \t\tchar *ref;\n       \t\tconst char *display_ref;\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     ++\t\tunsigned int flags;\n       \n       \t\tif (e->item->flags & UNINTERESTING)\n       \t\t\tcontinue;\n     + \t\tif (dwim_ref(e->name, strlen(e->name), &oid, &ref, 0) != 1)\n     + \t\t\tgoto skip_write_ref;\n     +-\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flag))\n     +-\t\t\tflag = 0;\n     +-\t\tdisplay_ref = (flag & REF_ISSYMREF) ? e->name : ref;\n     ++\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flags))\n     ++\t\t\tflags = 0;\n     ++\t\tdisplay_ref = (flags & REF_ISSYMREF) ? e->name : ref;\n     + \n     + \t\tif (e->item->type == OBJ_TAG &&\n     + \t\t\t\t!is_tag_in_date_range(e->item, revs)) {\n      \n       ## commit-graph.c ##\n      @@ commit-graph.c: struct refs_cb_data {\n     @@ delta-islands.c: static void add_ref_to_island(const char *island_name, const st\n       \n       static int find_island_for_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t       int flags, void *data)\n     -+\t\t\t       unsigned int flags, void *data)\n     ++\t\t\t       unsigned int unused_flags, void *data)\n       {\n       \t/*\n       \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\n     @@ fetch-pack.c: static int rev_list_insert_ref(struct fetch_negotiator *negotiator\n      -\t\t\t\t   int flag, void *cb_data)\n      +static int rev_list_insert_ref_oid(const char *refname,\n      +\t\t\t\t   const struct object_id *oid,\n     -+\t\t\t\t   unsigned int flag, void *cb_data)\n     ++\t\t\t\t   unsigned int unused_flags, void *cb_data)\n       {\n       \treturn rev_list_insert_ref(cb_data, oid);\n       }\n     @@ fetch-pack.c: static int mark_complete(const struct object_id *oid)\n       \n       static int mark_complete_oid(const char *refname, const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     unsigned int flag, void *cb_data)\n     ++\t\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \treturn mark_complete(oid);\n       }\n     @@ http-backend.c: static void get_info_refs(struct strbuf *hdr, char *arg)\n       \n       static int show_head_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t int flag, void *cb_data)\n     -+\t\t\t unsigned int flag, void *cb_data)\n     ++\t\t\t unsigned int flags, void *cb_data)\n       {\n       \tstruct strbuf *buf = cb_data;\n       \n     +-\tif (flag & REF_ISSYMREF) {\n     ++\tif (flags & REF_ISSYMREF) {\n     + \t\tconst char *target = resolve_ref_unsafe(refname,\n     + \t\t\t\t\t\t\tRESOLVE_REF_READING,\n     + \t\t\t\t\t\t\tNULL, NULL);\n      \n       ## log-tree.c ##\n      @@ log-tree.c: static int ref_filter_match(const char *refname,\n     @@ log-tree.c: static int ref_filter_match(const char *refname,\n       \n       static int add_ref_decoration(const char *refname, const struct object_id *oid,\n      -\t\t\t      int flags, void *cb_data)\n     -+\t\t\t      unsigned int flags, void *cb_data)\n     ++\t\t\t      unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object *obj;\n       \tenum object_type objtype;\n     @@ ls-refs.c: struct ls_refs_data {\n       \n       static int send_ref(const char *refname, const struct object_id *oid,\n      -\t\t    int flag, void *cb_data)\n     -+\t\t    unsigned int flag, void *cb_data)\n     ++\t\t    unsigned int flags, void *cb_data)\n       {\n       \tstruct ls_refs_data *data = cb_data;\n       \tconst char *refname_nons = strip_namespace(refname);\n     +@@ ls-refs.c: static int send_ref(const char *refname, const struct object_id *oid,\n     + \t\tstrbuf_addf(&data->buf, \"%s %s\", oid_to_hex(oid), refname_nons);\n     + \telse\n     + \t\tstrbuf_addf(&data->buf, \"unborn %s\", refname_nons);\n     +-\tif (data->symrefs && flag & REF_ISSYMREF) {\n     ++\tif (data->symrefs && flags & REF_ISSYMREF) {\n     + \t\tstruct object_id unused;\n     +-\t\tconst char *symref_target = resolve_ref_unsafe(refname, 0,\n     +-\t\t\t\t\t\t\t       &unused,\n     +-\t\t\t\t\t\t\t       &flag);\n     ++\t\tconst char *symref_target =\n     ++\t\t\tresolve_ref_unsafe(refname, 0, &unused, &flags);\n     + \n     + \t\tif (!symref_target)\n     + \t\t\tdie(\"'%s' is a symref but it is not?\", refname);\n      @@ ls-refs.c: static void send_possibly_unborn_head(struct ls_refs_data *data)\n       {\n       \tstruct strbuf namespaced = STRBUF_INIT;\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \tint oid_is_null;\n       \n       \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\n     +-\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flag))\n     ++\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flags))\n     + \t\treturn; /* bad ref */\n     + \toid_is_null = is_null_oid(&oid);\n     + \tif (!oid_is_null ||\n     +-\t    (data->unborn && data->symrefs && (flag & REF_ISSYMREF)))\n     +-\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flag, data);\n     ++\t    (data->unborn && data->symrefs && (flags & REF_ISSYMREF)))\n     ++\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flags,\n     ++\t\t\t data);\n     + \tstrbuf_release(&namespaced);\n     + }\n     + \n      \n       ## midx.c ##\n      @@ midx.c: static void prepare_midx_packing_data(struct packing_data *pdata,\n     @@ midx.c: static void prepare_midx_packing_data(struct packing_data *pdata,\n      -\t\t\t      const struct object_id *oid,\n      -\t\t\t      int flag, void *cb_data)\n      +static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n     -+\t\t\t      unsigned int flag, void *cb_data)\n     ++\t\t\t      unsigned int flags, void *cb_data)\n       {\n       \tstruct rev_info *revs = (struct rev_info*)cb_data;\n       \tstruct object *object;\n     + \n     +-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n     ++\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n     + \t\twarning(\"symbolic ref is dangling: %s\", refname);\n     + \t\treturn 0;\n     + \t}\n      \n       ## negotiator/default.c ##\n      @@ negotiator/default.c: static void rev_list_push(struct negotiation_state *ns,\n     @@ negotiator/default.c: static void rev_list_push(struct negotiation_state *ns,\n       \n       static int clear_marks(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n       \n     @@ negotiator/skipping.c: static struct entry *rev_list_push(struct data *data, str\n       \n       static int clear_marks(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n       \n     @@ notes.c: out:\n      -\t\t\t\t   int flag, void *cb)\n      +static int string_list_add_one_ref(const char *refname,\n      +\t\t\t\t   const struct object_id *oid,\n     -+\t\t\t\t   unsigned int flag, void *cb)\n     ++\t\t\t\t   unsigned int unused_flags, void *cb)\n       {\n       \tstruct string_list *refs = cb;\n       \tif (!unsorted_string_list_has_string(refs, refname))\n     @@ object-name.c: struct handle_one_ref_cb {\n       \n       static int handle_one_ref(const char *path, const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  unsigned int flag, void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct handle_one_ref_cb *cb = cb_data;\n       \tstruct commit_list **list = cb->list;\n     @@ reachable.c: static void update_progress(struct connectivity_progress *cp)\n       \n       static int add_one_ref(const char *path, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int flags, void *cb_data)\n       {\n       \tstruct rev_info *revs = (struct rev_info *)cb_data;\n       \tstruct object *object;\n     + \n     +-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n     ++\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n     + \t\twarning(\"symbolic ref is dangling: %s\", path);\n     + \t\treturn 0;\n     + \t}\n      \n       ## ref-filter.c ##\n      @@ ref-filter.c: struct ref_filter_cbdata {\n     @@ ref-filter.c: struct ref_filter_cbdata {\n        */\n      -static int ref_filter_handler(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     -+\t\t\t      unsigned int flag, void *cb_data)\n     ++\t\t\t      unsigned int flags, void *cb_data)\n       {\n       \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n       \tstruct ref_filter *filter = ref_cbdata->filter;\n     +@@ ref-filter.c: static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     + \tstruct commit *commit = NULL;\n     + \tunsigned int kind;\n     + \n     +-\tif (flag & REF_BAD_NAME) {\n     ++\tif (flags & REF_BAD_NAME) {\n     + \t\twarning(_(\"ignoring ref with broken name %s\"), refname);\n     + \t\treturn 0;\n     + \t}\n     + \n     +-\tif (flag & REF_ISBROKEN) {\n     ++\tif (flags & REF_ISBROKEN) {\n     + \t\twarning(_(\"ignoring broken ref %s\"), refname);\n     + \t\treturn 0;\n     + \t}\n     +@@ ref-filter.c: static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     + \t */\n     + \tref = ref_array_push(ref_cbdata->array, refname, oid);\n     + \tref->commit = commit;\n     +-\tref->flag = flag;\n     ++\tref->flag = flags;\n     + \tref->kind = kind;\n     + \n     + \treturn 0;\n      \n       ## refs.c ##\n      @@ refs.c: static unsigned char refname_disposition[256] = {\n     @@ refs.c: int ref_resolves_to_object(const char *refname,\n      -\t\t\t  const char *refname, int resolve_flags,\n      -\t\t\t  struct object_id *oid, int *flags)\n      +char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n     -+\t\t\t  int resolve_flags, struct object_id *oid,\n     ++\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n      +\t\t\t  unsigned int *flags)\n       {\n       \tconst char *result;\n     @@ refs.c: int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n       \tint ret = 0;\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \n       \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n     - \tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n     +-\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n     +-\t\tret = fn(buf.buf, &oid, flag, cb_data);\n     ++\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flags))\n     ++\t\tret = fn(buf.buf, &oid, flags, cb_data);\n     + \tstrbuf_release(&buf);\n     + \n     + \treturn ret;\n      @@ refs.c: int expand_ref(struct repository *repo, const char *str, int len,\n       \tfor (p = ref_rev_parse_rules; *p; p++) {\n       \t\tstruct object_id oid_from_ref;\n       \t\tstruct object_id *this_result;\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     ++\t\tunsigned int flags;\n       \t\tstruct ref_store *refs = get_main_ref_store(repo);\n       \t\tint ignore_errno;\n       \n     +@@ refs.c: int expand_ref(struct repository *repo, const char *str, int len,\n     + \t\tstrbuf_reset(&fullref);\n     + \t\tstrbuf_addf(&fullref, *p, len, str);\n     + \t\tr = refs_resolve_ref_unsafe(refs, fullref.buf,\n     +-\t\t\t\t\t    RESOLVE_REF_READING,\n     +-\t\t\t\t\t    this_result, &flag,\n     +-\t\t\t\t\t    &ignore_errno);\n     ++\t\t\t\t\t    RESOLVE_REF_READING, this_result,\n     ++\t\t\t\t\t    &flags, &ignore_errno);\n     + \t\tif (r) {\n     + \t\t\tif (!refs_found++)\n     + \t\t\t\t*ref = xstrdup(r);\n     + \t\t\tif (!warn_ambiguous_refs)\n     + \t\t\t\tbreak;\n     +-\t\t} else if ((flag & REF_ISSYMREF) && strcmp(fullref.buf, \"HEAD\")) {\n     ++\t\t} else if ((flags & REF_ISSYMREF) &&\n     ++\t\t\t   strcmp(fullref.buf, \"HEAD\")) {\n     + \t\t\twarning(_(\"ignoring dangling symref %s\"), fullref.buf);\n     +-\t\t} else if ((flag & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n     ++\t\t} else if ((flags & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n     + \t\t\twarning(_(\"ignoring broken ref %s\"), fullref.buf);\n     + \t\t}\n     + \t}\n      @@ refs.c: const char *find_descendant_ref(const char *dirname,\n       int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n       {\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \tint ignore_errno;\n       \n     - \tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n     +-\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n     +-\t\t\t\t    &oid, &flag, &ignore_errno))\n     +-\t\treturn fn(\"HEAD\", &oid, flag, cb_data);\n     ++\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING, &oid,\n     ++\t\t\t\t    &flags, &ignore_errno))\n     ++\t\treturn fn(\"HEAD\", &oid, flags, cb_data);\n     + \n     + \treturn 0;\n     + }\n      @@ refs.c: struct do_for_each_ref_help {\n       \tvoid *cb_data;\n       };\n     @@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n      -\t\t\t\t    struct object_id *oid,\n      -\t\t\t\t    int *flags, int *failure_errno)\n      +const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n     -+\t\t\t\t    int resolve_flags, struct object_id *oid,\n     -+\t\t\t\t    unsigned int *flags, int *failure_errno)\n     ++\t\t\t\t    unsigned int resolve_flags,\n     ++\t\t\t\t    struct object_id *oid, unsigned int *flags,\n     ++\t\t\t\t    int *failure_errno)\n       {\n       \tstatic struct strbuf sb_refname = STRBUF_INIT;\n       \tstruct object_id unused_oid;\n     @@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n       \n       \tassert(failure_errno);\n      @@ refs.c: int refs_init_db(struct strbuf *err)\n     + \treturn refs->be->init_db(refs, err);\n       }\n       \n     - const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n     +-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n      -\t\t\t       struct object_id *oid, int *flags)\n     ++const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n      +\t\t\t       struct object_id *oid, unsigned int *flags)\n       {\n       \tint ignore_errno;\n     @@ refs.c: int resolve_gitlink_ref(const char *submodule, const char *refname,\n       {\n       \tstruct ref_store *refs;\n      -\tint flags;\n     -+\tunsigned int flags;\n     ++\tunsigned int unused_flags;\n       \tint ignore_errno;\n       \n       \trefs = get_submodule_ref_store(submodule);\n     +@@ refs.c: int resolve_gitlink_ref(const char *submodule, const char *refname,\n     + \tif (!refs)\n     + \t\treturn -1;\n     + \n     +-\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &flags,\n     +-\t\t\t\t     &ignore_errno) || is_null_oid(oid))\n     ++\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &unused_flags,\n     ++\t\t\t\t     &ignore_errno) ||\n     ++\t    is_null_oid(oid))\n     + \t\treturn -1;\n     + \treturn 0;\n     + }\n      \n       ## refs.h ##\n      @@ refs.h: struct worktree;\n     @@ refs.h: struct worktree;\n      -\t\t\t\t    int resolve_flags,\n      -\t\t\t\t    struct object_id *oid,\n      -\t\t\t\t    int *flags, int *failure_errno);\n     -+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n     -+\t\t\t\t    int resolve_flags, struct object_id *oid,\n     -+\t\t\t\t    unsigned int *flags, int *failure_errno);\n     - \n     - const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n     +-\n     +-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n      -\t\t\t       struct object_id *oid, int *flags);\n     -+\t\t\t       struct object_id *oid, unsigned int *flags);\n     - \n     +-\n      -char *refs_resolve_refdup(struct ref_store *refs,\n      -\t\t\t  const char *refname, int resolve_flags,\n      -\t\t\t  struct object_id *oid, int *flags);\n      -char *resolve_refdup(const char *refname, int resolve_flags,\n      -\t\t     struct object_id *oid, int *flags);\n     +-\n     +-int read_ref_full(const char *refname, int resolve_flags,\n     +-\t\t  struct object_id *oid, int *flags);\n     ++const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n     ++\t\t\t\t    unsigned int resolve_flags,\n     ++\t\t\t\t    struct object_id *oid, unsigned int *flags,\n     ++\t\t\t\t    int *failure_errno);\n     ++\n     ++const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n     ++\t\t\t       struct object_id *oid, unsigned int *flags);\n     ++\n      +char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n     -+\t\t\t  int resolve_flags, struct object_id *oid,\n     ++\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n      +\t\t\t  unsigned int *flags);\n      +char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n      +\t\t     struct object_id *oid, unsigned int *flags);\n     - \n     --int read_ref_full(const char *refname, int resolve_flags,\n     --\t\t  struct object_id *oid, int *flags);\n     ++\n      +int read_ref_full(const char *refname, unsigned int resolve_flags,\n      +\t\t  struct object_id *oid, unsigned int *flags);\n       int read_ref(const char *refname, struct object_id *oid);\n     @@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store\n       \t\tstruct object_id oid;\n       \t\tstruct stat st;\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n       \n       \t\tif (de->d_name[0] == '.')\n       \t\t\tcontinue;\n     +@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     + \t\t\t\t\t\t\t  refname.len));\n     + \t\t} else {\n     + \t\t\tint ignore_errno;\n     +-\t\t\tif (!refs_resolve_ref_unsafe(&refs->base,\n     +-\t\t\t\t\t\t     refname.buf,\n     +-\t\t\t\t\t\t     RESOLVE_REF_READING,\n     +-\t\t\t\t\t\t     &oid, &flag, &ignore_errno)) {\n     ++\t\t\tunsigned int flags;\n     ++\t\t\tif (!refs_resolve_ref_unsafe(&refs->base, refname.buf,\n     ++\t\t\t\t\t\t     RESOLVE_REF_READING, &oid,\n     ++\t\t\t\t\t\t     &flags, &ignore_errno)) {\n     + \t\t\t\toidclr(&oid);\n     +-\t\t\t\tflag |= REF_ISBROKEN;\n     ++\t\t\t\tflags |= REF_ISBROKEN;\n     + \t\t\t} else if (is_null_oid(&oid)) {\n     + \t\t\t\t/*\n     + \t\t\t\t * It is so astronomically unlikely\n     +@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     + \t\t\t\t * file to be repo corruption\n     + \t\t\t\t * (probably due to a software bug).\n     + \t\t\t\t */\n     +-\t\t\t\tflag |= REF_ISBROKEN;\n     ++\t\t\t\tflags |= REF_ISBROKEN;\n     + \t\t\t}\n     + \n     + \t\t\tif (check_refname_format(refname.buf,\n     +@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     + \t\t\t\tif (!refname_is_safe(refname.buf))\n     + \t\t\t\t\tdie(\"loose refname is dangerous: %s\", refname.buf);\n     + \t\t\t\toidclr(&oid);\n     +-\t\t\t\tflag |= REF_BAD_NAME | REF_ISBROKEN;\n     ++\t\t\t\tflags |= REF_BAD_NAME | REF_ISBROKEN;\n     + \t\t\t}\n     +-\t\t\tadd_entry_to_dir(dir,\n     +-\t\t\t\t\t create_ref_entry(refname.buf, &oid, flag));\n     ++\t\t\tadd_entry_to_dir(dir, create_ref_entry(refname.buf,\n     ++\t\t\t\t\t\t\t       &oid, flags));\n     + \t\t}\n     + \t\tstrbuf_setlen(&refname, dirnamelen);\n     + \t\tstrbuf_setlen(&path, path_baselen);\n      @@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n       \tstruct files_ref_store *refs =\n       \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n       \tstruct object_id orig_oid;\n      -\tint flag = 0, logmoved = 0;\n      +\tint logmoved = 0;\n     -+\tunsigned int flag = 0;\n     ++\tunsigned int flags = 0;\n       \tstruct ref_lock *lock;\n       \tstruct stat loginfo;\n       \tstruct strbuf sb_oldref = STRBUF_INIT;\n     +@@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n     + \t}\n     + \n     + \tif (!refs_resolve_ref_unsafe(&refs->base, oldrefname,\n     +-\t\t\t\t     RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,\n     +-\t\t\t\t     &orig_oid, &flag, &ignore_errno)) {\n     ++\t\t\t\t     RESOLVE_REF_READING |\n     ++\t\t\t\t\t     RESOLVE_REF_NO_RECURSE,\n     ++\t\t\t\t     &orig_oid, &flags, &ignore_errno)) {\n     + \t\tret = error(\"refname %s not found\", oldrefname);\n     + \t\tgoto out;\n     + \t}\n     + \n     +-\tif (flag & REF_ISSYMREF) {\n     ++\tif (flags & REF_ISSYMREF) {\n     + \t\tif (copy)\n     + \t\t\tret = error(\"refname %s is a symbolic ref, copying it is not supported\",\n     + \t\t\t\t    oldrefname);\n     +@@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n     + \t\tgoto rollbacklog;\n     + \t}\n     + \n     +-\tflag = log_all_ref_updates;\n     ++\tflags = log_all_ref_updates;\n     + \tlog_all_ref_updates = LOG_REFS_NONE;\n     + \tif (write_ref_to_lockfile(lock, &orig_oid, 0, &err) ||\n     + \t    commit_ref_update(refs, lock, &orig_oid, NULL, &err)) {\n     + \t\terror(\"unable to write current sha1 into %s: %s\", oldrefname, err.buf);\n     + \t\tstrbuf_release(&err);\n     + \t}\n     +-\tlog_all_ref_updates = flag;\n     ++\tlog_all_ref_updates = flags;\n     + \n     +  rollbacklog:\n     + \tif (logmoved && rename(sb_newref.buf, sb_oldref.buf))\n     +@@ refs/files-backend.c: static int log_ref_write_fd(int fd, const struct object_id *old_oid,\n     + }\n     + \n     + static int files_log_ref_write(struct files_ref_store *refs,\n     +-\t\t\t       const char *refname, const struct object_id *old_oid,\n     ++\t\t\t       const char *refname,\n     ++\t\t\t       const struct object_id *old_oid,\n     + \t\t\t       const struct object_id *new_oid, const char *msg,\n     +-\t\t\t       int flags, struct strbuf *err)\n     ++\t\t\t       unsigned int flags, struct strbuf *err)\n     + {\n     + \tint logfd, result;\n     + \n      @@ refs/files-backend.c: static int commit_ref_update(struct files_ref_store *refs,\n       \t\t * check with HEAD only which should cover 99% of all usage\n       \t\t * scenarios (even 100% of the default ones).\n       \t\t */\n      -\t\tint head_flag;\n     -+\t\tunsigned int head_flag;\n     ++\t\tunsigned int head_flags;\n       \t\tconst char *head_ref;\n       \t\tint ignore_errno;\n       \n     + \t\thead_ref = refs_resolve_ref_unsafe(&refs->base, \"HEAD\",\n     +-\t\t\t\t\t\t   RESOLVE_REF_READING,\n     +-\t\t\t\t\t\t   NULL, &head_flag,\n     +-\t\t\t\t\t\t   &ignore_errno);\n     +-\t\tif (head_ref && (head_flag & REF_ISSYMREF) &&\n     ++\t\t\t\t\t\t   RESOLVE_REF_READING, NULL,\n     ++\t\t\t\t\t\t   &head_flags, &ignore_errno);\n     ++\t\tif (head_ref && (head_flags & REF_ISSYMREF) &&\n     + \t\t    !strcmp(head_ref, lock->ref_name)) {\n     + \t\t\tstruct strbuf log_err = STRBUF_INIT;\n     + \t\t\tif (files_log_ref_write(refs, \"HEAD\",\n      @@ refs/files-backend.c: static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)\n       \tint ignore_errno;\n       \n     @@ refs/files-backend.c: static int files_transaction_abort(struct ref_store *ref_s\n      -static int ref_present(const char *refname,\n      -\t\t       const struct object_id *oid, int flags, void *cb_data)\n      +static int ref_present(const char *refname, const struct object_id *oid,\n     -+\t\t       unsigned int flags, void *cb_data)\n     ++\t\t       unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct string_list *affected_refnames = cb_data;\n       \n     @@ remote.c: static void alias_all_urls(struct remote_state *remote_state)\n       static void read_config(struct repository *repo)\n       {\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \n       \tif (repo->remote_state->initialized)\n       \t\treturn;\n     +@@ remote.c: static void read_config(struct repository *repo)\n     + \tif (startup_info->have_repository) {\n     + \t\tint ignore_errno;\n     + \t\tconst char *head_ref = refs_resolve_ref_unsafe(\n     +-\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flag, &ignore_errno);\n     +-\t\tif (head_ref && (flag & REF_ISSYMREF) &&\n     ++\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flags,\n     ++\t\t\t&ignore_errno);\n     ++\t\tif (head_ref && (flags & REF_ISSYMREF) &&\n     + \t\t    skip_prefix(head_ref, \"refs/heads/\", &head_ref)) {\n     + \t\t\trepo->remote_state->current_branch = make_branch(\n     + \t\t\t\trepo->remote_state, head_ref, strlen(head_ref));\n      @@ remote.c: static int match_explicit(struct ref *src, struct ref *dst,\n       \t\treturn -1;\n       \n       \tif (!dst_value) {\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     - \n     - \t\tdst_value = resolve_ref_unsafe(matched_src->name,\n     - \t\t\t\t\t       RESOLVE_REF_READING,\n     +-\n     +-\t\tdst_value = resolve_ref_unsafe(matched_src->name,\n     +-\t\t\t\t\t       RESOLVE_REF_READING,\n     +-\t\t\t\t\t       NULL, &flag);\n     +-\t\tif (!dst_value ||\n     +-\t\t    ((flag & REF_ISSYMREF) &&\n     +-\t\t     !starts_with(dst_value, \"refs/heads/\")))\n     ++\t\tunsigned int flags;\n     ++\n     ++\t\tdst_value = resolve_ref_unsafe(\n     ++\t\t\tmatched_src->name, RESOLVE_REF_READING, NULL, &flags);\n     ++\t\tif (!dst_value || ((flags & REF_ISSYMREF) &&\n     ++\t\t\t\t   !starts_with(dst_value, \"refs/heads/\")))\n     + \t\t\tdie(_(\"%s cannot be resolved to branch\"),\n     + \t\t\t    matched_src->name);\n     + \t}\n      @@ remote.c: const char *branch_get_push(struct branch *branch, struct strbuf *err)\n       \n       static int ignore_symref_update(const char *refname)\n       {\n      -\tint flag;\n     -+\tunsigned int flag;\n     ++\tunsigned int flags;\n       \n     - \tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n     +-\tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n     ++\tif (!resolve_ref_unsafe(refname, 0, NULL, &flags))\n       \t\treturn 0; /* non-existing refs are OK */\n     +-\treturn (flag & REF_ISSYMREF);\n     ++\treturn (flags & REF_ISSYMREF);\n     + }\n     + \n     + /*\n      @@ remote.c: int format_tracking_info(struct branch *branch, struct strbuf *sb,\n       }\n       \n     @@ replace-object.c\n       \n      -static int register_replace_ref(struct repository *r,\n      -\t\t\t\tconst char *refname,\n     --\t\t\t\tconst struct object_id *oid,\n     --\t\t\t\tint flag, void *cb_data)\n      +static int register_replace_ref(struct repository *r, const char *refname,\n     -+\t\t\t\tconst struct object_id *oid, unsigned int flag,\n     -+\t\t\t\tvoid *cb_data)\n     + \t\t\t\tconst struct object_id *oid,\n     +-\t\t\t\tint flag, void *cb_data)\n     ++\t\t\t\tunsigned int unused_flags, void *cb_data)\n       {\n       \t/* Get sha1 from refname */\n       \tconst char *slash = strrchr(refname, '/');\n     @@ revision.c: int ref_excluded(struct string_list *ref_excludes, const char *path)\n       \n       static int handle_one_ref(const char *path, const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  unsigned int flag, void *cb_data)\n     ++\t\t\t  unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct all_refs_cb *cb = cb_data;\n       \tstruct object *object;\n      @@ revision.c: static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n     - }\n       \n       static int handle_one_reflog(const char *refname_in_wt,\n     --\t\t\t     const struct object_id *oid,\n     + \t\t\t     const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     const struct object_id *oid, unsigned int flag,\n     -+\t\t\t     void *cb_data)\n     ++\t\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct all_refs_cb *cb = cb_data;\n       \tstruct strbuf refname = STRBUF_INIT;\n     @@ server-info.c: out:\n       \n       static int add_info_ref(const char *path, const struct object_id *oid,\n      -\t\t\tint flag, void *cb_data)\n     -+\t\t\tunsigned int flag, void *cb_data)\n     ++\t\t\tunsigned int unused_flags, void *cb_data)\n       {\n       \tstruct update_info_ctx *uic = cb_data;\n       \tstruct object *o = parse_object(the_repository, oid);\n     @@ shallow.c: static void paint_down(struct paint_info *info, const struct object_i\n       \n       static int mark_uninteresting(const char *refname, const struct object_id *oid,\n      -\t\t\t      int flags, void *cb_data)\n     -+\t\t\t      unsigned int flags, void *cb_data)\n     ++\t\t\t      unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n       \t\t\t\t\t\t\t       oid, 1);\n     @@ shallow.c: struct commit_array {\n       \n       static int add_ref(const char *refname, const struct object_id *oid,\n      -\t\t   int flags, void *cb_data)\n     -+\t\t   unsigned int flags, void *cb_data)\n     ++\t\t   unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct commit_array *ca = cb_data;\n       \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\n     @@ submodule.c: static void free_submodules_oids(struct string_list *submodules)\n       \n       static int has_remote(const char *refname, const struct object_id *oid,\n      -\t\t      int flags, void *cb_data)\n     -+\t\t      unsigned int flags, void *cb_data)\n     ++\t\t      unsigned int unused_flags, void *cb_data)\n       {\n       \treturn 1;\n       }\n     @@ submodule.c: int push_unpushed_submodules(struct repository *r,\n       \n       static int append_oid_to_array(const char *ref, const struct object_id *oid,\n      -\t\t\t       int flags, void *data)\n     -+\t\t\t       unsigned int flags, void *data)\n     ++\t\t\t       unsigned int unused_flags, void *data)\n       {\n       \tstruct oid_array *array = data;\n       \toid_array_append(array, oid);\n     @@ transport-helper.c: static int push_refs_with_export(struct transport *transport\n       \t\t\t\tif (!ref->deletion) {\n       \t\t\t\t\tconst char *name;\n      -\t\t\t\t\tint flag;\n     -+\t\t\t\t\tunsigned int flag;\n     ++\t\t\t\t\tunsigned int ref_flags;\n       \n       \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n     - \t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n     +-\t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n     +-\t\t\t\t\t\t\t\t  RESOLVE_REF_READING,\n     +-\t\t\t\t\t\t\t\t  &oid, &flag);\n     +-\t\t\t\t\tif (!name || !(flag & REF_ISSYMREF))\n     ++\t\t\t\t\tname = resolve_ref_unsafe(\n     ++\t\t\t\t\t\tref->peer_ref->name,\n     ++\t\t\t\t\t\tRESOLVE_REF_READING, &oid,\n     ++\t\t\t\t\t\t&ref_flags);\n     ++\t\t\t\t\tif (!name ||\n     ++\t\t\t\t\t    !(ref_flags & REF_ISSYMREF))\n     + \t\t\t\t\t\tname = ref->peer_ref->name;\n     + \n     + \t\t\t\t\tstrbuf_addf(&buf, \"%s:%s\", name, ref->name);\n      \n       ## transport.c ##\n      @@ transport.c: static void set_upstreams(struct transport *transport, struct ref *refs,\n     @@ transport.c: static void set_upstreams(struct transport *transport, struct ref *\n       \t\tconst char *tmp;\n       \t\tconst char *remotename;\n      -\t\tint flag = 0;\n     -+\t\tunsigned int flag = 0;\n     ++\t\tunsigned int ref_flags = 0;\n       \t\t/*\n       \t\t * Check suitability for tracking. Must be successful /\n       \t\t * already up-to-date ref create/modify (not delete).\n     +@@ transport.c: static void set_upstreams(struct transport *transport, struct ref *refs,\n     + \t\t/* Follow symbolic refs (mainly for HEAD). */\n     + \t\tlocalname = ref->peer_ref->name;\n     + \t\tremotename = ref->name;\n     +-\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING,\n     +-\t\t\t\t\t NULL, &flag);\n     +-\t\tif (tmp && flag & REF_ISSYMREF &&\n     +-\t\t\tstarts_with(tmp, \"refs/heads/\"))\n     ++\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING, NULL,\n     ++\t\t\t\t\t &ref_flags);\n     ++\t\tif (tmp && ref_flags & REF_ISSYMREF &&\n     ++\t\t    starts_with(tmp, \"refs/heads/\"))\n     + \t\t\tlocalname = tmp;\n     + \n     + \t\t/* Both source and destination must be local branches. */\n      \n       ## upload-pack.c ##\n      @@ upload-pack.c: static void send_unshallow(struct upload_pack_data *data)\n     @@ upload-pack.c: static int mark_our_ref(const char *refname, const char *refname_\n       \n       static int check_ref(const char *refname_full, const struct object_id *oid,\n      -\t\t     int flag, void *cb_data)\n     -+\t\t     unsigned int flag, void *cb_data)\n     ++\t\t     unsigned int unused_flags, void *cb_data)\n       {\n       \tconst char *refname = strip_namespace(refname_full);\n       \n     @@ upload-pack.c: static void format_session_id(struct strbuf *buf, struct upload_p\n       \n       static int send_ref(const char *refname, const struct object_id *oid,\n      -\t\t    int flag, void *cb_data)\n     -+\t\t    unsigned int flag, void *cb_data)\n     ++\t\t    unsigned int unused_flags, void *cb_data)\n       {\n       \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n       \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n     @@ upload-pack.c: static int send_ref(const char *refname, const struct object_id *\n       \n       static int find_symref(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flag, void *cb_data)\n     ++\t\t       unsigned int flags, void *cb_data)\n       {\n       \tconst char *symref_target;\n       \tstruct string_list_item *item;\n     + \n     +-\tif ((flag & REF_ISSYMREF) == 0)\n     ++\tif ((flags & REF_ISSYMREF) == 0)\n     + \t\treturn 0;\n     +-\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flag);\n     +-\tif (!symref_target || (flag & REF_ISSYMREF) == 0)\n     ++\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flags);\n     ++\tif (!symref_target || (flags & REF_ISSYMREF) == 0)\n     + \t\tdie(\"'%s' is a symref but it is not?\", refname);\n     + \titem = string_list_append(cb_data, strip_namespace(refname));\n     + \titem->util = xstrdup(strip_namespace(symref_target));\n      \n       ## walker.c ##\n      @@ walker.c: static int interpret_target(struct walker *walker, char *target, struct object_i\n     @@ walker.c: static int interpret_target(struct walker *walker, char *target, struc\n       \n       static int mark_complete(const char *path, const struct object_id *oid,\n      -\t\t\t int flag, void *cb_data)\n     -+\t\t\t unsigned int flag, void *cb_data)\n     ++\t\t\t unsigned int unused_flags, void *cb_data)\n       {\n       \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n       \t\t\t\t\t\t\t       oid, 1);\n     @@ worktree.c: int other_head_refs(each_ref_fn fn, void *cb_data)\n       \t\tstruct worktree *wt = *p;\n       \t\tstruct object_id oid;\n      -\t\tint flag;\n     -+\t\tunsigned int flag;\n     ++\t\tunsigned int flags;\n       \t\tint ignore_errno;\n       \n       \t\tif (wt->is_current)\n     +@@ worktree.c: int other_head_refs(each_ref_fn fn, void *cb_data)\n     + \t\tstrbuf_reset(&refname);\n     + \t\tstrbuf_worktree_ref(wt, &refname, \"HEAD\");\n     + \t\tif (refs_resolve_ref_unsafe(get_main_ref_store(the_repository),\n     +-\t\t\t\t\t    refname.buf,\n     +-\t\t\t\t\t    RESOLVE_REF_READING,\n     +-\t\t\t\t\t    &oid, &flag, &ignore_errno))\n     +-\t\t\tret = fn(refname.buf, &oid, flag, cb_data);\n     ++\t\t\t\t\t    refname.buf, RESOLVE_REF_READING,\n     ++\t\t\t\t\t    &oid, &flags, &ignore_errno))\n     ++\t\t\tret = fn(refname.buf, &oid, flags, cb_data);\n     + \t\tif (ret)\n     + \t\t\tbreak;\n     + \t}\n\n\n bisect.c                    |  4 +-\n builtin/bisect--helper.c    |  9 +++--\n builtin/branch.c            |  4 +-\n builtin/checkout.c          | 24 ++++++-----\n builtin/describe.c          |  3 +-\n builtin/fetch.c             | 10 ++---\n builtin/fsck.c              |  4 +-\n builtin/gc.c                |  5 +--\n builtin/name-rev.c          |  3 +-\n builtin/pack-objects.c      | 11 ++---\n builtin/rebase.c            | 10 +++--\n builtin/receive-pack.c      | 13 +++---\n builtin/reflog.c            |  5 ++-\n builtin/remote.c            | 23 ++++++-----\n builtin/repack.c            |  2 +-\n builtin/replace.c           |  2 +-\n builtin/rev-parse.c         |  6 ++-\n builtin/show-branch.c       | 12 +++---\n builtin/show-ref.c          |  4 +-\n builtin/stash.c             |  2 +-\n builtin/submodule--helper.c |  4 +-\n builtin/symbolic-ref.c      |  6 +--\n bundle.c                    |  8 ++--\n commit-graph.c              |  5 +--\n config.c                    |  2 +-\n delta-islands.c             |  2 +-\n fetch-pack.c                |  7 ++--\n help.c                      |  2 +-\n http-backend.c              |  6 +--\n log-tree.c                  |  4 +-\n ls-refs.c                   | 18 ++++-----\n midx.c                      |  7 ++--\n negotiator/default.c        |  2 +-\n negotiator/skipping.c       |  2 +-\n notes.c                     |  5 ++-\n object-name.c               |  2 +-\n reachable.c                 |  4 +-\n ref-filter.c                |  9 +++--\n refs.c                      | 80 ++++++++++++++++++-------------------\n refs.h                      | 47 ++++++++++------------\n refs/files-backend.c        | 57 +++++++++++++-------------\n remote.c                    | 31 +++++++-------\n replace-object.c            |  5 +--\n revision.c                  |  6 +--\n server-info.c               |  2 +-\n shallow.c                   |  4 +-\n submodule.c                 |  4 +-\n t/helper/test-ref-store.c   |  4 +-\n transport-helper.c          | 12 +++---\n transport.c                 | 10 ++---\n upload-pack.c               | 14 +++----\n walker.c                    |  2 +-\n worktree.c                  | 13 +++---\n 53 files changed, 276 insertions(+), 266 deletions(-)\n\ndiff --git a/bisect.c b/bisect.c\nindex 888949fba6b..64807d2996b 100644\n--- a/bisect.c\n+++ b/bisect.c\n@@ -441,7 +441,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,\n }\n \n static int register_ref(const char *refname, const struct object_id *oid,\n-\t\t\tint flags, void *cb_data)\n+\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct strbuf good_prefix = STRBUF_INIT;\n \tstrbuf_addstr(&good_prefix, term_good);\n@@ -1146,7 +1146,7 @@ int estimate_bisect_steps(int all)\n }\n \n static int mark_for_removal(const char *refname, const struct object_id *oid,\n-\t\t\t    int flag, void *cb_data)\n+\t\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstruct string_list *refs = cb_data;\n \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\ndiff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c\nindex 28a2e6a5750..ec460308bee 100644\n--- a/builtin/bisect--helper.c\n+++ b/builtin/bisect--helper.c\n@@ -330,7 +330,7 @@ static int check_and_set_terms(struct bisect_terms *terms, const char *cmd)\n }\n \n static int mark_good(const char *refname, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tint *m_good = (int *)cb_data;\n \t*m_good = 0;\n@@ -477,7 +477,7 @@ finish:\n }\n \n static int add_bisect_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  int flags, void *cb)\n+\t\t\t  unsigned int unused_flags, void *cb)\n {\n \tstruct add_bisect_ref_data *data = cb;\n \n@@ -617,7 +617,8 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \tint no_checkout = 0;\n \tint first_parent_only = 0;\n \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n-\tint flags, pathspec_pos;\n+\tint pathspec_pos;\n+\tunsigned int unused_flags;\n \tenum bisect_error res = BISECT_OK;\n \tstruct string_list revs = STRING_LIST_INIT_DUP;\n \tstruct string_list states = STRING_LIST_INIT_DUP;\n@@ -707,7 +708,7 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \t/*\n \t * Verify HEAD\n \t */\n-\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &flags);\n+\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &unused_flags);\n \tif (!head)\n \t\tif (get_oid(\"HEAD\", &head_oid))\n \t\t\treturn error(_(\"bad HEAD - I need a HEAD\"));\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 4ce2a247542..542eb2e4d50 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -234,7 +234,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,\n \n \tfor (i = 0; i < argc; i++, strbuf_reset(&bname)) {\n \t\tchar *target = NULL;\n-\t\tint flags = 0;\n+\t\tunsigned int flags = 0;\n \n \t\tstrbuf_branchname(&bname, argv[i], allowed_interpret);\n \t\tfree(name);\n@@ -469,7 +469,7 @@ static void print_ref_list(struct ref_filter *filter, struct ref_sorting *sortin\n \n static void print_current_branch_name(void)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname = resolve_ref_unsafe(\"HEAD\", 0, NULL, &flags);\n \tconst char *shortname;\n \tif (!refname)\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex cc804ba8e1e..c964154fb4d 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -968,7 +968,8 @@ static void update_refs_for_switch(const struct checkout_opts *opts,\n \n static int add_pending_uninteresting_ref(const char *refname,\n \t\t\t\t\t const struct object_id *oid,\n-\t\t\t\t\t int flags, void *cb_data)\n+\t\t\t\t\t unsigned int unused_flags,\n+\t\t\t\t\t void *cb_data)\n {\n \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n \treturn 0;\n@@ -1077,16 +1078,17 @@ static int switch_branches(const struct checkout_opts *opts,\n \tint ret = 0;\n \tstruct branch_info old_branch_info = { 0 };\n \tstruct object_id rev;\n-\tint flag, writeout_error = 0;\n+\tint writeout_error = 0;\n+\tunsigned int flags;\n \tint do_merge = 1;\n \n \ttrace2_cmd_mode(\"branch\");\n \n \tmemset(&old_branch_info, 0, sizeof(old_branch_info));\n-\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flag);\n+\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flags);\n \tif (old_branch_info.path)\n \t\told_branch_info.commit = lookup_commit_reference_gently(the_repository, &rev, 1);\n-\tif (!(flag & REF_ISSYMREF))\n+\tif (!(flags & REF_ISSYMREF))\n \t\tFREE_AND_NULL(old_branch_info.path);\n \n \tif (old_branch_info.path) {\n@@ -1503,20 +1505,20 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n \t    !opts->ignore_other_worktrees) {\n-\t\tint flag;\n-\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n-\t\tif (head_ref &&\n-\t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n+\t\tunsigned int flags;\n+\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flags);\n+\t\tif (head_ref && (!(flags & REF_ISSYMREF) ||\n+\t\t\t\t strcmp(head_ref, new_branch_info->path)))\n \t\t\tdie_if_checked_out(new_branch_info->path, 1);\n \t\tfree(head_ref);\n \t}\n \n \tif (!new_branch_info->commit && opts->new_branch) {\n \t\tstruct object_id rev;\n-\t\tint flag;\n+\t\tunsigned int flags;\n \n-\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n-\t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n+\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flags) &&\n+\t\t    (flags & REF_ISSYMREF) && is_null_oid(&rev))\n \t\t\treturn switch_unborn_to_new_branch(opts);\n \t}\n \treturn switch_branches(opts, new_branch_info);\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 42159cd26bd..c7b24390ca6 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -140,7 +140,8 @@ static void add_to_known_names(const char *path,\n \t}\n }\n \n-static int get_name(const char *path, const struct object_id *oid, int flag, void *cb_data)\n+static int get_name(const char *path, const struct object_id *oid,\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tint is_tag = 0;\n \tstruct object_id peeled;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 5f06b21f8e9..56b53ba3fff 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -323,9 +323,8 @@ static struct refname_hash_entry *refname_hash_add(struct hashmap *map,\n \treturn ent;\n }\n \n-static int add_one_refname(const char *refname,\n-\t\t\t   const struct object_id *oid,\n-\t\t\t   int flag, void *cbdata)\n+static int add_one_refname(const char *refname, const struct object_id *oid,\n+\t\t\t   unsigned int unused_flags, void *cbdata)\n {\n \tstruct hashmap *refname_map = cbdata;\n \n@@ -1429,9 +1428,8 @@ static void set_option(struct transport *transport, const char *name, const char\n \t\t\tname, transport->url);\n }\n \n-\n-static int add_oid(const char *refname, const struct object_id *oid, int flags,\n-\t\t   void *cb_data)\n+static int add_oid(const char *refname, const struct object_id *oid,\n+\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct oid_array *oids = cb_data;\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 9e54892311d..c52bd1843d1 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -502,7 +502,7 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid\n }\n \n static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct strbuf refname = STRBUF_INIT;\n \n@@ -513,7 +513,7 @@ static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n }\n \n static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *obj;\n \ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 8e60ef1eaba..983196dae26 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -768,9 +768,8 @@ struct cg_auto_data {\n \tint limit;\n };\n \n-static int dfs_on_ref(const char *refname,\n-\t\t      const struct object_id *oid, int flags,\n-\t\t      void *cb_data)\n+static int dfs_on_ref(const char *refname, const struct object_id *oid,\n+\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n \tint result = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 27f60153a6c..3a89589645a 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -305,7 +305,8 @@ static int cmp_by_tag_and_age(const void *a_, const void *b_)\n \treturn a->taggerdate != b->taggerdate;\n }\n \n-static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)\n+static int name_ref(const char *path, const struct object_id *oid,\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = parse_object(the_repository, oid);\n \tstruct name_ref_data *data = cb_data;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex ba2006f2212..86bc62e68ed 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -758,8 +758,8 @@ static enum write_one_status write_one(struct hashfile *f,\n \treturn WRITE_ONE_WRITTEN;\n }\n \n-static int mark_tagged(const char *path, const struct object_id *oid, int flag,\n-\t\t       void *cb_data)\n+static int mark_tagged(const char *path, const struct object_id *oid,\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n@@ -3012,7 +3012,8 @@ static void add_tag_chain(const struct object_id *oid)\n \t}\n }\n \n-static int add_ref_tag(const char *tag, const struct object_id *oid, int flag, void *cb_data)\n+static int add_ref_tag(const char *tag, const struct object_id *oid,\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \n@@ -3684,8 +3685,8 @@ static void record_recent_commit(struct commit *commit, void *data)\n }\n \n static int mark_bitmap_preferred_tip(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int flags, void *_data)\n {\n \tstruct object_id peeled;\n \tstruct object *object;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 36490d06c8a..01021d6e1a8 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -999,7 +999,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\n-\tint ret, flags, total_argc, in_progress = 0;\n+\tint ret, total_argc, in_progress = 0;\n \tint keep_base = 0;\n \tint ok_to_skip_pre_rebase = 0;\n \tstruct strbuf msg = STRBUF_INIT;\n@@ -1611,6 +1611,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t}\n \t} else if (argc == 0) {\n \t\t/* Do not need to switch branches, we are already on it. */\n+\t\tunsigned int flags;\n \t\toptions.head_name =\n \t\t\txstrdup_or_null(resolve_ref_unsafe(\"HEAD\", 0, NULL,\n \t\t\t\t\t &flags));\n@@ -1668,7 +1669,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n \t\t    &options.orig_head, &merge_base) &&\n \t    allow_preemptive_ff) {\n-\t\tint flag;\n+\t\tunsigned int unused_flags;\n \n \t\tif (!(options.flags & REBASE_FORCE)) {\n \t\t\t/* Lazily switch to the target branch if needed... */\n@@ -1693,7 +1694,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t\tif (!(options.flags & REBASE_NO_QUIET))\n \t\t\t\t; /* be quiet */\n \t\t\telse if (!strcmp(branch_name, \"HEAD\") &&\n-\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n+\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL,\n+\t\t\t\t\t\t    &unused_flags))\n \t\t\t\tputs(_(\"HEAD is up to date.\"));\n \t\t\telse\n \t\t\t\tprintf(_(\"Current branch %s is up to date.\\n\"),\n@@ -1703,7 +1705,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t} else if (!(options.flags & REBASE_NO_QUIET))\n \t\t\t; /* be quiet */\n \t\telse if (!strcmp(branch_name, \"HEAD\") &&\n-\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n+\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &unused_flags))\n \t\t\tputs(_(\"HEAD is up to date, rebase forced.\"));\n \t\telse\n \t\t\tprintf(_(\"Current branch %s is up to date, rebase \"\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 9f4a0b816cf..aa000ada17f 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -291,7 +291,7 @@ static void show_ref(const char *path, const struct object_id *oid)\n }\n \n static int show_ref_cb(const char *path_full, const struct object_id *oid,\n-\t\t       int flag, void *data)\n+\t\t       unsigned int unused_flags, void *data)\n {\n \tstruct oidset *seen = data;\n \tconst char *path = strip_namespace(path_full);\n@@ -1655,12 +1655,13 @@ static void run_update_post_hook(struct command *commands)\n \n static void check_aliased_update_internal(struct command *cmd,\n \t\t\t\t\t  struct string_list *list,\n-\t\t\t\t\t  const char *dst_name, int flag)\n+\t\t\t\t\t  const char *dst_name,\n+\t\t\t\t\t  unsigned int flags)\n {\n \tstruct string_list_item *item;\n \tstruct command *dst_cmd;\n \n-\tif (!(flag & REF_ISSYMREF))\n+\tif (!(flags & REF_ISSYMREF))\n \t\treturn;\n \n \tif (!dst_name) {\n@@ -1701,11 +1702,11 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tconst char *dst_name;\n-\tint flag;\n+\tunsigned int flags;\n \n \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n-\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n-\tcheck_aliased_update_internal(cmd, list, dst_name, flag);\n+\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flags);\n+\tcheck_aliased_update_internal(cmd, list, dst_name, flags);\n \tstrbuf_release(&buf);\n }\n \ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex a4b1dd27e13..ddb5b6fb788 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -343,7 +343,7 @@ static int should_expire_reflog_ent_verbose(struct object_id *ooid,\n }\n \n static int push_tip_to_list(const char *refname, const struct object_id *oid,\n-\t\t\t    int flags, void *cb_data)\n+\t\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct commit_list **list = cb_data;\n \tstruct commit *tip_commit;\n@@ -424,7 +424,8 @@ static void reflog_expiry_cleanup(void *cb_data)\n \t}\n }\n \n-static int collect_reflog(const char *ref, const struct object_id *oid, int unused, void *cb_data)\n+static int collect_reflog(const char *ref, const struct object_id *oid,\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct worktree_reflogs *cb = cb_data;\n \tstruct worktree *worktree = cb->worktree;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 299c466116d..6e509e276cd 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -533,7 +533,8 @@ struct branches_for_remote {\n };\n \n static int add_branch_for_removal(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t  const struct object_id *oid,\n+\t\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct branches_for_remote *branches = cb_data;\n \tstruct refspec_item refspec;\n@@ -574,20 +575,21 @@ struct rename_info {\n };\n \n static int read_remote_branches(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\tconst struct object_id *oid,\n+\t\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct rename_info *rename = cb_data;\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct string_list_item *item;\n-\tint flag;\n \tconst char *symref;\n \n \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n \tif (starts_with(refname, buf.buf)) {\n+\t\tunsigned int flags;\n \t\titem = string_list_append(rename->remote_branches, refname);\n-\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,\n-\t\t\t\t\t    NULL, &flag);\n-\t\tif (symref && (flag & REF_ISSYMREF))\n+\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t    &flags);\n+\t\tif (symref && (flags & REF_ISSYMREF))\n \t\t\titem->util = xstrdup(symref);\n \t\telse\n \t\t\titem->util = NULL;\n@@ -766,10 +768,10 @@ static int mv(int argc, const char **argv)\n \tfor_each_ref(read_remote_branches, &rename);\n \tfor (i = 0; i < remote_branches.nr; i++) {\n \t\tstruct string_list_item *item = remote_branches.items + i;\n-\t\tint flag = 0;\n+\t\tunsigned int flags = 0;\n \n-\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n-\t\tif (!(flag & REF_ISSYMREF))\n+\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flags);\n+\t\tif (!(flags & REF_ISSYMREF))\n \t\t\tcontinue;\n \t\tif (delete_ref(NULL, item->string, NULL, REF_NO_DEREF))\n \t\t\tdie(_(\"deleting '%s' failed\"), item->string);\n@@ -923,7 +925,8 @@ static void free_remote_ref_states(struct ref_states *states)\n }\n \n static int append_ref_to_tracked_list(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t      const struct object_id *oid,\n+\t\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct ref_states *states = cb_data;\n \tstruct refspec_item refspec;\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex da1e364a756..f995f829970 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -465,7 +465,7 @@ struct midx_snapshot_ref_data {\n \n static int midx_snapshot_ref_one(const char *refname,\n \t\t\t\t const struct object_id *oid,\n-\t\t\t\t int flag, void *_data)\n+\t\t\t\t unsigned int unused_flag, void *_data)\n {\n \tstruct midx_snapshot_ref_data *data = _data;\n \tstruct object_id peeled;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 6ff1734d587..af35b9f27ad 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -41,7 +41,7 @@ struct show_data {\n \n static int show_reference(struct repository *r, const char *refname,\n \t\t\t  const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct show_data *data = cb_data;\n \ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 8480a59f573..46f09c25db6 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -195,7 +195,8 @@ static int show_default(void)\n \treturn 0;\n }\n \n-static int show_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int show_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tif (ref_excluded(ref_excludes, refname))\n \t\treturn 0;\n@@ -203,7 +204,8 @@ static int show_reference(const char *refname, const struct object_id *oid, int\n \treturn 0;\n }\n \n-static int anti_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int anti_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tshow_rev(REVERSED, oid, refname);\n \treturn 0;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex e12c5e80e3e..8c392afcd74 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -403,7 +403,7 @@ static int append_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 11;\n@@ -418,7 +418,7 @@ static int append_head_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_remote_ref(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 13;\n@@ -433,7 +433,7 @@ static int append_remote_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_tag_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  int unused_flags, void *cb_data)\n {\n \tif (!starts_with(refname, \"refs/tags/\"))\n \t\treturn 0;\n@@ -444,7 +444,7 @@ static const char *match_ref_pattern = NULL;\n static int match_ref_slash = 0;\n \n static int append_matching_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flag, void *cb_data)\n+\t\t\t       unsigned int flags, void *cb_data)\n {\n \t/* we want to allow pattern hold/<asterisk> to show all\n \t * branches under refs/heads/hold/, and v0.99.9? to show\n@@ -460,9 +460,9 @@ static int append_matching_ref(const char *refname, const struct object_id *oid,\n \tif (wildmatch(match_ref_pattern, tail, 0))\n \t\treturn 0;\n \tif (starts_with(refname, \"refs/heads/\"))\n-\t\treturn append_head_ref(refname, oid, flag, cb_data);\n+\t\treturn append_head_ref(refname, oid, flags, cb_data);\n \tif (starts_with(refname, \"refs/tags/\"))\n-\t\treturn append_tag_ref(refname, oid, flag, cb_data);\n+\t\treturn append_tag_ref(refname, oid, flags, cb_data);\n \treturn append_ref(refname, oid, 0);\n }\n \ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 7f8a5332f83..ff017b1202a 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -47,7 +47,7 @@ static void show_one(const char *refname, const struct object_id *oid)\n }\n \n static int show_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cbdata)\n+\t\t    unsigned int flag, void *cbdata)\n {\n \tif (show_head && !strcmp(refname, \"HEAD\"))\n \t\tgoto match;\n@@ -86,7 +86,7 @@ match:\n }\n \n static int add_existing(const char *refname, const struct object_id *oid,\n-\t\t\tint flag, void *cbdata)\n+\t\t\tunsigned int unused_flags, void *cbdata)\n {\n \tstruct string_list *list = (struct string_list *)cbdata;\n \tstring_list_insert(list, refname);\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex 86cd0b456e7..c02e014acb7 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1296,7 +1296,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b\n \t\t\t   int quiet)\n {\n \tint ret = 0;\n-\tint flags = 0;\n+\tunsigned int flags = 0;\n \tint untracked_commit_option = 0;\n \tconst char *head_short_sha1 = NULL;\n \tconst char *branch_ref = NULL;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex c5d3fc3817f..0a2755c8eee 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -738,8 +738,8 @@ static void print_status(unsigned int flags, char state, const char *path,\n }\n \n static int handle_submodule_head_ref(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *cb_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id *output = cb_data;\n \tif (oid)\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex e547a08d6c7..478ae36b4da 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -12,12 +12,12 @@ static const char * const git_symbolic_ref_usage[] = {\n \n static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n {\n-\tint flag;\n-\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n+\tunsigned int flags;\n+\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flags);\n \n \tif (!refname)\n \t\tdie(\"No such ref: %s\", HEAD);\n-\telse if (!(flag & REF_ISSYMREF)) {\n+\telse if (!(flags & REF_ISSYMREF)) {\n \t\tif (!quiet)\n \t\t\tdie(\"ref %s is not a symbolic ref\", HEAD);\n \t\telse\ndiff --git a/bundle.c b/bundle.c\nindex a0bb687b0f4..a6658dab789 100644\n--- a/bundle.c\n+++ b/bundle.c\n@@ -371,15 +371,15 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n \t\tstruct object_id oid;\n \t\tchar *ref;\n \t\tconst char *display_ref;\n-\t\tint flag;\n+\t\tunsigned int flags;\n \n \t\tif (e->item->flags & UNINTERESTING)\n \t\t\tcontinue;\n \t\tif (dwim_ref(e->name, strlen(e->name), &oid, &ref, 0) != 1)\n \t\t\tgoto skip_write_ref;\n-\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flag))\n-\t\t\tflag = 0;\n-\t\tdisplay_ref = (flag & REF_ISSYMREF) ? e->name : ref;\n+\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flags))\n+\t\t\tflags = 0;\n+\t\tdisplay_ref = (flags & REF_ISSYMREF) ? e->name : ref;\n \n \t\tif (e->item->type == OBJ_TAG &&\n \t\t\t\t!is_tag_in_date_range(e->item, revs)) {\ndiff --git a/commit-graph.c b/commit-graph.c\nindex 265c010122e..1a7d1bb154d 100644\n--- a/commit-graph.c\n+++ b/commit-graph.c\n@@ -1636,9 +1636,8 @@ struct refs_cb_data {\n \tstruct progress *progress;\n };\n \n-static int add_ref_to_set(const char *refname,\n-\t\t\t  const struct object_id *oid,\n-\t\t\t  int flags, void *cb_data)\n+static int add_ref_to_set(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct refs_cb_data *data = (struct refs_cb_data *)cb_data;\ndiff --git a/config.c b/config.c\nindex 2bffa8d4a01..a4f9cf339f7 100644\n--- a/config.c\n+++ b/config.c\n@@ -276,7 +276,7 @@ done:\n \n static int include_by_branch(const char *cond, size_t cond_len)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tint ret;\n \tstruct strbuf pattern = STRBUF_INIT;\n \tconst char *refname = !the_repository->gitdir ?\ndiff --git a/delta-islands.c b/delta-islands.c\nindex aa98b2e5414..b53b8dc7f4a 100644\n--- a/delta-islands.c\n+++ b/delta-islands.c\n@@ -365,7 +365,7 @@ static void add_ref_to_island(const char *island_name, const struct object_id *o\n }\n \n static int find_island_for_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int unused_flags, void *data)\n {\n \t/*\n \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\ndiff --git a/fetch-pack.c b/fetch-pack.c\nindex dd6ec449f2d..1f3dce5860f 100644\n--- a/fetch-pack.c\n+++ b/fetch-pack.c\n@@ -164,8 +164,9 @@ static int rev_list_insert_ref(struct fetch_negotiator *negotiator,\n \treturn 0;\n }\n \n-static int rev_list_insert_ref_oid(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb_data)\n+static int rev_list_insert_ref_oid(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \treturn rev_list_insert_ref(cb_data, oid);\n }\n@@ -548,7 +549,7 @@ static int mark_complete(const struct object_id *oid)\n }\n \n static int mark_complete_oid(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \treturn mark_complete(oid);\n }\ndiff --git a/help.c b/help.c\nindex 71444906ddf..38e3def7cb6 100644\n--- a/help.c\n+++ b/help.c\n@@ -728,7 +728,7 @@ struct similar_ref_cb {\n };\n \n static int append_similar_ref(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct similar_ref_cb *cb = (struct similar_ref_cb *)(cb_data);\n \tchar *branch = strrchr(refname, '/') + 1;\ndiff --git a/http-backend.c b/http-backend.c\nindex 807fb8839e7..351a124333b 100644\n--- a/http-backend.c\n+++ b/http-backend.c\n@@ -504,7 +504,7 @@ static void run_service(const char **argv, int buffer_input)\n }\n \n static int show_text_ref(const char *name, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tconst char *name_nons = strip_namespace(name);\n \tstruct strbuf *buf = cb_data;\n@@ -559,11 +559,11 @@ static void get_info_refs(struct strbuf *hdr, char *arg)\n }\n \n static int show_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flags, void *cb_data)\n {\n \tstruct strbuf *buf = cb_data;\n \n-\tif (flag & REF_ISSYMREF) {\n+\tif (flags & REF_ISSYMREF) {\n \t\tconst char *target = resolve_ref_unsafe(refname,\n \t\t\t\t\t\t\tRESOLVE_REF_READING,\n \t\t\t\t\t\t\tNULL, NULL);\ndiff --git a/log-tree.c b/log-tree.c\nindex d3e7a40b648..4d2b74cf754 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -131,7 +131,7 @@ static int ref_filter_match(const char *refname,\n }\n \n static int add_ref_decoration(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *obj;\n \tenum object_type objtype;\n@@ -241,7 +241,7 @@ static const struct name_decoration *current_pointed_by_HEAD(const struct name_d\n {\n \tconst struct name_decoration *list, *head = NULL;\n \tconst char *branch_name = NULL;\n-\tint rru_flags;\n+\tunsigned int rru_flags;\n \n \t/* First find HEAD */\n \tfor (list = decoration; list; list = list->next)\ndiff --git a/ls-refs.c b/ls-refs.c\nindex 54078323dcb..3abdccb9394 100644\n--- a/ls-refs.c\n+++ b/ls-refs.c\n@@ -76,7 +76,7 @@ struct ls_refs_data {\n };\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct ls_refs_data *data = cb_data;\n \tconst char *refname_nons = strip_namespace(refname);\n@@ -93,11 +93,10 @@ static int send_ref(const char *refname, const struct object_id *oid,\n \t\tstrbuf_addf(&data->buf, \"%s %s\", oid_to_hex(oid), refname_nons);\n \telse\n \t\tstrbuf_addf(&data->buf, \"unborn %s\", refname_nons);\n-\tif (data->symrefs && flag & REF_ISSYMREF) {\n+\tif (data->symrefs && flags & REF_ISSYMREF) {\n \t\tstruct object_id unused;\n-\t\tconst char *symref_target = resolve_ref_unsafe(refname, 0,\n-\t\t\t\t\t\t\t       &unused,\n-\t\t\t\t\t\t\t       &flag);\n+\t\tconst char *symref_target =\n+\t\t\tresolve_ref_unsafe(refname, 0, &unused, &flags);\n \n \t\tif (!symref_target)\n \t\t\tdie(\"'%s' is a symref but it is not?\", refname);\n@@ -122,16 +121,17 @@ static void send_possibly_unborn_head(struct ls_refs_data *data)\n {\n \tstruct strbuf namespaced = STRBUF_INIT;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flags;\n \tint oid_is_null;\n \n \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\n-\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flag))\n+\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flags))\n \t\treturn; /* bad ref */\n \toid_is_null = is_null_oid(&oid);\n \tif (!oid_is_null ||\n-\t    (data->unborn && data->symrefs && (flag & REF_ISSYMREF)))\n-\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flag, data);\n+\t    (data->unborn && data->symrefs && (flags & REF_ISSYMREF)))\n+\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flags,\n+\t\t\t data);\n \tstrbuf_release(&namespaced);\n }\n \ndiff --git a/midx.c b/midx.c\nindex 837b46b2af5..003bcce7633 100644\n--- a/midx.c\n+++ b/midx.c\n@@ -922,14 +922,13 @@ static void prepare_midx_packing_data(struct packing_data *pdata,\n \t}\n }\n \n-static int add_ref_to_pending(const char *refname,\n-\t\t\t      const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info*)cb_data;\n \tstruct object *object;\n \n-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n \t\twarning(\"symbolic ref is dangling: %s\", refname);\n \t\treturn 0;\n \t}\ndiff --git a/negotiator/default.c b/negotiator/default.c\nindex 434189ae5dc..7ddc40e480b 100644\n--- a/negotiator/default.c\n+++ b/negotiator/default.c\n@@ -36,7 +36,7 @@ static void rev_list_push(struct negotiation_state *ns,\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/negotiator/skipping.c b/negotiator/skipping.c\nindex 1236e792248..6ac6310b247 100644\n--- a/negotiator/skipping.c\n+++ b/negotiator/skipping.c\n@@ -72,7 +72,7 @@ static struct entry *rev_list_push(struct data *data, struct commit *commit, int\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/notes.c b/notes.c\nindex f87dac40684..df41b004f49 100644\n--- a/notes.c\n+++ b/notes.c\n@@ -924,8 +924,9 @@ out:\n \treturn ret;\n }\n \n-static int string_list_add_one_ref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb)\n+static int string_list_add_one_ref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int unused_flags, void *cb)\n {\n \tstruct string_list *refs = cb;\n \tif (!unsorted_string_list_has_string(refs, refname))\ndiff --git a/object-name.c b/object-name.c\nindex fdff4601b2c..d89b4ed9f3e 100644\n--- a/object-name.c\n+++ b/object-name.c\n@@ -1208,7 +1208,7 @@ struct handle_one_ref_cb {\n };\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct handle_one_ref_cb *cb = cb_data;\n \tstruct commit_list **list = cb->list;\ndiff --git a/reachable.c b/reachable.c\nindex 84e3d0d75ed..fc04a57cbf6 100644\n--- a/reachable.c\n+++ b/reachable.c\n@@ -27,12 +27,12 @@ static void update_progress(struct connectivity_progress *cp)\n }\n \n static int add_one_ref(const char *path, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info *)cb_data;\n \tstruct object *object;\n \n-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n \t\twarning(\"symbolic ref is dangling: %s\", path);\n \t\treturn 0;\n \t}\ndiff --git a/ref-filter.c b/ref-filter.c\nindex f7a2f17bfd9..addb7a237a4 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -2233,7 +2233,8 @@ struct ref_filter_cbdata {\n  * A call-back given to for_each_ref().  Filter refs and keep them for\n  * later object processing.\n  */\n-static int ref_filter_handler(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int ref_filter_handler(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n \tstruct ref_filter *filter = ref_cbdata->filter;\n@@ -2241,12 +2242,12 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,\n \tstruct commit *commit = NULL;\n \tunsigned int kind;\n \n-\tif (flag & REF_BAD_NAME) {\n+\tif (flags & REF_BAD_NAME) {\n \t\twarning(_(\"ignoring ref with broken name %s\"), refname);\n \t\treturn 0;\n \t}\n \n-\tif (flag & REF_ISBROKEN) {\n+\tif (flags & REF_ISBROKEN) {\n \t\twarning(_(\"ignoring broken ref %s\"), refname);\n \t\treturn 0;\n \t}\n@@ -2289,7 +2290,7 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,\n \t */\n \tref = ref_array_push(ref_cbdata->array, refname, oid);\n \tref->commit = commit;\n-\tref->flag = flag;\n+\tref->flag = flags;\n \tref->kind = kind;\n \n \treturn 0;\ndiff --git a/refs.c b/refs.c\nindex addb26293b4..3178a0cbdef 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -74,7 +74,7 @@ static unsigned char refname_disposition[256] = {\n  * as an error, try to come up with a usable replacement for the input\n  * refname in it.\n  */\n-static int check_refname_component(const char *refname, int *flags,\n+static int check_refname_component(const char *refname, unsigned int *flags,\n \t\t\t\t   struct strbuf *sanitized)\n {\n \tconst char *cp;\n@@ -158,7 +158,7 @@ out:\n \treturn cp - refname;\n }\n \n-static int check_or_sanitize_refname(const char *refname, int flags,\n+static int check_or_sanitize_refname(const char *refname, unsigned int flags,\n \t\t\t\t     struct strbuf *sanitized)\n {\n \tint component_len, component_count = 0;\n@@ -202,7 +202,7 @@ static int check_or_sanitize_refname(const char *refname, int flags,\n \treturn 0;\n }\n \n-int check_refname_format(const char *refname, int flags)\n+int check_refname_format(const char *refname, unsigned int flags)\n {\n \treturn check_or_sanitize_refname(refname, flags, NULL);\n }\n@@ -264,9 +264,9 @@ int ref_resolves_to_object(const char *refname,\n \treturn 1;\n }\n \n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags)\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags)\n {\n \tconst char *result;\n \tint ignore_errno;\n@@ -276,8 +276,8 @@ char *refs_resolve_refdup(struct ref_store *refs,\n \treturn xstrdup_or_null(result);\n }\n \n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags)\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags)\n {\n \treturn refs_resolve_refdup(get_main_ref_store(the_repository),\n \t\t\t\t   refname, resolve_flags,\n@@ -292,7 +292,8 @@ struct ref_filter {\n \tvoid *cb_data;\n };\n \n-int read_ref_full(const char *refname, int resolve_flags, struct object_id *oid, int *flags)\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags)\n {\n \tint ignore_errno;\n \tstruct ref_store *refs = get_main_ref_store(the_repository);\n@@ -321,7 +322,7 @@ int ref_exists(const char *refname)\n }\n \n static int filter_refs(const char *refname, const struct object_id *oid,\n-\t\t\t   int flags, void *data)\n+\t\t       unsigned int flags, void *data)\n {\n \tstruct ref_filter *filter = (struct ref_filter *)data;\n \n@@ -360,8 +361,9 @@ struct warn_if_dangling_data {\n \tconst char *msg_fmt;\n };\n \n-static int warn_if_dangling_symref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flags, void *cb_data)\n+static int warn_if_dangling_symref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct warn_if_dangling_data *d = cb_data;\n \tconst char *resolves_to;\n@@ -439,11 +441,11 @@ int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n \tstruct strbuf buf = STRBUF_INIT;\n \tint ret = 0;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flags;\n \n \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n-\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n-\t\tret = fn(buf.buf, &oid, flag, cb_data);\n+\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flags))\n+\t\tret = fn(buf.buf, &oid, flags, cb_data);\n \tstrbuf_release(&buf);\n \n \treturn ret;\n@@ -654,7 +656,7 @@ int expand_ref(struct repository *repo, const char *str, int len,\n \tfor (p = ref_rev_parse_rules; *p; p++) {\n \t\tstruct object_id oid_from_ref;\n \t\tstruct object_id *this_result;\n-\t\tint flag;\n+\t\tunsigned int flags;\n \t\tstruct ref_store *refs = get_main_ref_store(repo);\n \t\tint ignore_errno;\n \n@@ -662,17 +664,17 @@ int expand_ref(struct repository *repo, const char *str, int len,\n \t\tstrbuf_reset(&fullref);\n \t\tstrbuf_addf(&fullref, *p, len, str);\n \t\tr = refs_resolve_ref_unsafe(refs, fullref.buf,\n-\t\t\t\t\t    RESOLVE_REF_READING,\n-\t\t\t\t\t    this_result, &flag,\n-\t\t\t\t\t    &ignore_errno);\n+\t\t\t\t\t    RESOLVE_REF_READING, this_result,\n+\t\t\t\t\t    &flags, &ignore_errno);\n \t\tif (r) {\n \t\t\tif (!refs_found++)\n \t\t\t\t*ref = xstrdup(r);\n \t\t\tif (!warn_ambiguous_refs)\n \t\t\t\tbreak;\n-\t\t} else if ((flag & REF_ISSYMREF) && strcmp(fullref.buf, \"HEAD\")) {\n+\t\t} else if ((flags & REF_ISSYMREF) &&\n+\t\t\t   strcmp(fullref.buf, \"HEAD\")) {\n \t\t\twarning(_(\"ignoring dangling symref %s\"), fullref.buf);\n-\t\t} else if ((flag & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n+\t\t} else if ((flags & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n \t\t\twarning(_(\"ignoring broken ref %s\"), fullref.buf);\n \t\t}\n \t}\n@@ -1389,12 +1391,12 @@ const char *find_descendant_ref(const char *dirname,\n int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n {\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flags;\n \tint ignore_errno;\n \n-\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n-\t\t\t\t    &oid, &flag, &ignore_errno))\n-\t\treturn fn(\"HEAD\", &oid, flag, cb_data);\n+\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING, &oid,\n+\t\t\t\t    &flags, &ignore_errno))\n+\t\treturn fn(\"HEAD\", &oid, flags, cb_data);\n \n \treturn 0;\n }\n@@ -1467,11 +1469,9 @@ struct do_for_each_ref_help {\n \tvoid *cb_data;\n };\n \n-static int do_for_each_ref_helper(struct repository *r,\n-\t\t\t\t  const char *refname,\n+static int do_for_each_ref_helper(struct repository *r, const char *refname,\n \t\t\t\t  const struct object_id *oid,\n-\t\t\t\t  int flags,\n-\t\t\t\t  void *cb_data)\n+\t\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct do_for_each_ref_help *hp = cb_data;\n \n@@ -1678,15 +1678,14 @@ int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n \t\t\t\t\t   type, failure_errno);\n }\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags, int *failure_errno)\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    unsigned int resolve_flags,\n+\t\t\t\t    struct object_id *oid, unsigned int *flags,\n+\t\t\t\t    int *failure_errno)\n {\n \tstatic struct strbuf sb_refname = STRBUF_INIT;\n \tstruct object_id unused_oid;\n-\tint unused_flags;\n+\tunsigned int unused_flags;\n \tint symref_count;\n \n \tassert(failure_errno);\n@@ -1781,8 +1780,8 @@ int refs_init_db(struct strbuf *err)\n \treturn refs->be->init_db(refs, err);\n }\n \n-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags)\n+const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n+\t\t\t       struct object_id *oid, unsigned int *flags)\n {\n \tint ignore_errno;\n \n@@ -1794,7 +1793,7 @@ int resolve_gitlink_ref(const char *submodule, const char *refname,\n \t\t\tstruct object_id *oid)\n {\n \tstruct ref_store *refs;\n-\tint flags;\n+\tunsigned int unused_flags;\n \tint ignore_errno;\n \n \trefs = get_submodule_ref_store(submodule);\n@@ -1802,8 +1801,9 @@ int resolve_gitlink_ref(const char *submodule, const char *refname,\n \tif (!refs)\n \t\treturn -1;\n \n-\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &flags,\n-\t\t\t\t     &ignore_errno) || is_null_oid(oid))\n+\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &unused_flags,\n+\t\t\t\t     &ignore_errno) ||\n+\t    is_null_oid(oid))\n \t\treturn -1;\n \treturn 0;\n }\ndiff --git a/refs.h b/refs.h\nindex 8f91a7f9ff2..6a4ef87b99e 100644\n--- a/refs.h\n+++ b/refs.h\n@@ -68,23 +68,22 @@ struct worktree;\n #define RESOLVE_REF_NO_RECURSE 0x02\n #define RESOLVE_REF_ALLOW_BAD_NAME 0x04\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags, int *failure_errno);\n-\n-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags);\n-\n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags);\n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags);\n-\n-int read_ref_full(const char *refname, int resolve_flags,\n-\t\t  struct object_id *oid, int *flags);\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    unsigned int resolve_flags,\n+\t\t\t\t    struct object_id *oid, unsigned int *flags,\n+\t\t\t\t    int *failure_errno);\n+\n+const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n+\t\t\t       struct object_id *oid, unsigned int *flags);\n+\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags);\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags);\n+\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags);\n int read_ref(const char *refname, struct object_id *oid);\n \n /*\n@@ -298,17 +297,15 @@ struct ref_transaction;\n  * arguments is only guaranteed to be valid for the duration of a\n  * single callback invocation.\n  */\n-typedef int each_ref_fn(const char *refname,\n-\t\t\tconst struct object_id *oid, int flags, void *cb_data);\n+typedef int each_ref_fn(const char *refname, const struct object_id *oid,\n+\t\t\tunsigned int flags, void *cb_data);\n \n /*\n  * The same as each_ref_fn, but also with a repository argument that\n  * contains the repository associated with the callback.\n  */\n-typedef int each_repo_ref_fn(struct repository *r,\n-\t\t\t     const char *refname,\n-\t\t\t     const struct object_id *oid,\n-\t\t\t     int flags,\n+typedef int each_repo_ref_fn(struct repository *r, const char *refname,\n+\t\t\t     const struct object_id *oid, unsigned int flags,\n \t\t\t     void *cb_data);\n \n /*\n@@ -532,7 +529,7 @@ int for_each_reflog(each_ref_fn fn, void *cb_data);\n  * allow a single \"*\" wildcard character in the refspec. No leading or\n  * repeated slashes are accepted.\n  */\n-int check_refname_format(const char *refname, int flags);\n+int check_refname_format(const char *refname, unsigned int flags);\n \n /*\n  * Apply the rules from check_refname_format, but mutate the result until it\n@@ -896,7 +893,7 @@ struct ref_store *get_main_ref_store(struct repository *r);\n  *\n  * ----\n  * static int handle_remote_ref(const char *refname,\n- * \t\tconst unsigned char *sha1, int flags, void *cb_data)\n+ * \t\tconst unsigned char *sha1, unsigned int flags, void *cb_data)\n  * {\n  * \tstruct strbuf *output = cb_data;\n  * \tstrbuf_addf(output, \"%s\\n\", refname);\ndiff --git a/refs/files-backend.c b/refs/files-backend.c\nindex 43a3b882d7c..8890e2f684c 100644\n--- a/refs/files-backend.c\n+++ b/refs/files-backend.c\n@@ -261,7 +261,6 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \twhile ((de = readdir(d)) != NULL) {\n \t\tstruct object_id oid;\n \t\tstruct stat st;\n-\t\tint flag;\n \n \t\tif (de->d_name[0] == '.')\n \t\t\tcontinue;\n@@ -278,12 +277,12 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\t\t\t\t  refname.len));\n \t\t} else {\n \t\t\tint ignore_errno;\n-\t\t\tif (!refs_resolve_ref_unsafe(&refs->base,\n-\t\t\t\t\t\t     refname.buf,\n-\t\t\t\t\t\t     RESOLVE_REF_READING,\n-\t\t\t\t\t\t     &oid, &flag, &ignore_errno)) {\n+\t\t\tunsigned int flags;\n+\t\t\tif (!refs_resolve_ref_unsafe(&refs->base, refname.buf,\n+\t\t\t\t\t\t     RESOLVE_REF_READING, &oid,\n+\t\t\t\t\t\t     &flags, &ignore_errno)) {\n \t\t\t\toidclr(&oid);\n-\t\t\t\tflag |= REF_ISBROKEN;\n+\t\t\t\tflags |= REF_ISBROKEN;\n \t\t\t} else if (is_null_oid(&oid)) {\n \t\t\t\t/*\n \t\t\t\t * It is so astronomically unlikely\n@@ -293,7 +292,7 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\t * file to be repo corruption\n \t\t\t\t * (probably due to a software bug).\n \t\t\t\t */\n-\t\t\t\tflag |= REF_ISBROKEN;\n+\t\t\t\tflags |= REF_ISBROKEN;\n \t\t\t}\n \n \t\t\tif (check_refname_format(refname.buf,\n@@ -301,10 +300,10 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\tif (!refname_is_safe(refname.buf))\n \t\t\t\t\tdie(\"loose refname is dangerous: %s\", refname.buf);\n \t\t\t\toidclr(&oid);\n-\t\t\t\tflag |= REF_BAD_NAME | REF_ISBROKEN;\n+\t\t\t\tflags |= REF_BAD_NAME | REF_ISBROKEN;\n \t\t\t}\n-\t\t\tadd_entry_to_dir(dir,\n-\t\t\t\t\t create_ref_entry(refname.buf, &oid, flag));\n+\t\t\tadd_entry_to_dir(dir, create_ref_entry(refname.buf,\n+\t\t\t\t\t\t\t       &oid, flags));\n \t\t}\n \t\tstrbuf_setlen(&refname, dirnamelen);\n \t\tstrbuf_setlen(&path, path_baselen);\n@@ -1391,7 +1390,8 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \tstruct files_ref_store *refs =\n \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n \tstruct object_id orig_oid;\n-\tint flag = 0, logmoved = 0;\n+\tint logmoved = 0;\n+\tunsigned int flags = 0;\n \tstruct ref_lock *lock;\n \tstruct stat loginfo;\n \tstruct strbuf sb_oldref = STRBUF_INIT;\n@@ -1412,13 +1412,14 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \t}\n \n \tif (!refs_resolve_ref_unsafe(&refs->base, oldrefname,\n-\t\t\t\t     RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,\n-\t\t\t\t     &orig_oid, &flag, &ignore_errno)) {\n+\t\t\t\t     RESOLVE_REF_READING |\n+\t\t\t\t\t     RESOLVE_REF_NO_RECURSE,\n+\t\t\t\t     &orig_oid, &flags, &ignore_errno)) {\n \t\tret = error(\"refname %s not found\", oldrefname);\n \t\tgoto out;\n \t}\n \n-\tif (flag & REF_ISSYMREF) {\n+\tif (flags & REF_ISSYMREF) {\n \t\tif (copy)\n \t\t\tret = error(\"refname %s is a symbolic ref, copying it is not supported\",\n \t\t\t\t    oldrefname);\n@@ -1514,14 +1515,14 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \t\tgoto rollbacklog;\n \t}\n \n-\tflag = log_all_ref_updates;\n+\tflags = log_all_ref_updates;\n \tlog_all_ref_updates = LOG_REFS_NONE;\n \tif (write_ref_to_lockfile(lock, &orig_oid, 0, &err) ||\n \t    commit_ref_update(refs, lock, &orig_oid, NULL, &err)) {\n \t\terror(\"unable to write current sha1 into %s: %s\", oldrefname, err.buf);\n \t\tstrbuf_release(&err);\n \t}\n-\tlog_all_ref_updates = flag;\n+\tlog_all_ref_updates = flags;\n \n  rollbacklog:\n \tif (logmoved && rename(sb_newref.buf, sb_oldref.buf))\n@@ -1702,9 +1703,10 @@ static int log_ref_write_fd(int fd, const struct object_id *old_oid,\n }\n \n static int files_log_ref_write(struct files_ref_store *refs,\n-\t\t\t       const char *refname, const struct object_id *old_oid,\n+\t\t\t       const char *refname,\n+\t\t\t       const struct object_id *old_oid,\n \t\t\t       const struct object_id *new_oid, const char *msg,\n-\t\t\t       int flags, struct strbuf *err)\n+\t\t\t       unsigned int flags, struct strbuf *err)\n {\n \tint logfd, result;\n \n@@ -1826,15 +1828,14 @@ static int commit_ref_update(struct files_ref_store *refs,\n \t\t * check with HEAD only which should cover 99% of all usage\n \t\t * scenarios (even 100% of the default ones).\n \t\t */\n-\t\tint head_flag;\n+\t\tunsigned int head_flags;\n \t\tconst char *head_ref;\n \t\tint ignore_errno;\n \n \t\thead_ref = refs_resolve_ref_unsafe(&refs->base, \"HEAD\",\n-\t\t\t\t\t\t   RESOLVE_REF_READING,\n-\t\t\t\t\t\t   NULL, &head_flag,\n-\t\t\t\t\t\t   &ignore_errno);\n-\t\tif (head_ref && (head_flag & REF_ISSYMREF) &&\n+\t\t\t\t\t\t   RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t\t   &head_flags, &ignore_errno);\n+\t\tif (head_ref && (head_flags & REF_ISSYMREF) &&\n \t\t    !strcmp(head_ref, lock->ref_name)) {\n \t\t\tstruct strbuf log_err = STRBUF_INIT;\n \t\t\tif (files_log_ref_write(refs, \"HEAD\",\n@@ -2159,7 +2160,7 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)\n \tint ignore_errno;\n \n \twhile ((ok = dir_iterator_advance(diter)) == ITER_OK) {\n-\t\tint flags;\n+\t\tunsigned int flags;\n \n \t\tif (!S_ISREG(diter->st.st_mode))\n \t\t\tcontinue;\n@@ -2669,7 +2670,7 @@ static int files_transaction_prepare(struct ref_store *ref_store,\n \tint ret = 0;\n \tstruct string_list affected_refnames = STRING_LIST_INIT_NODUP;\n \tchar *head_ref = NULL;\n-\tint head_type;\n+\tunsigned int head_type;\n \tstruct files_transaction_backend_data *backend_data;\n \tstruct ref_transaction *packed_transaction = NULL;\n \n@@ -2982,8 +2983,8 @@ static int files_transaction_abort(struct ref_store *ref_store,\n \treturn 0;\n }\n \n-static int ref_present(const char *refname,\n-\t\t       const struct object_id *oid, int flags, void *cb_data)\n+static int ref_present(const char *refname, const struct object_id *oid,\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct string_list *affected_refnames = cb_data;\n \n@@ -3209,7 +3210,7 @@ static int files_reflog_expire(struct ref_store *ref_store,\n \t\tif ((expire_flags & EXPIRE_REFLOGS_UPDATE_REF) &&\n \t\t    !is_null_oid(&cb.last_kept_oid)) {\n \t\t\tint ignore_errno;\n-\t\t\tint type;\n+\t\t\tunsigned int type;\n \t\t\tconst char *ref;\n \n \t\t\tref = refs_resolve_ref_unsafe(&refs->base, refname,\ndiff --git a/remote.c b/remote.c\nindex a6d8ec6c1ac..d889241ce0a 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -500,7 +500,7 @@ static void alias_all_urls(struct remote_state *remote_state)\n \n static void read_config(struct repository *repo)\n {\n-\tint flag;\n+\tunsigned int flags;\n \n \tif (repo->remote_state->initialized)\n \t\treturn;\n@@ -510,8 +510,9 @@ static void read_config(struct repository *repo)\n \tif (startup_info->have_repository) {\n \t\tint ignore_errno;\n \t\tconst char *head_ref = refs_resolve_ref_unsafe(\n-\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flag, &ignore_errno);\n-\t\tif (head_ref && (flag & REF_ISSYMREF) &&\n+\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flags,\n+\t\t\t&ignore_errno);\n+\t\tif (head_ref && (flags & REF_ISSYMREF) &&\n \t\t    skip_prefix(head_ref, \"refs/heads/\", &head_ref)) {\n \t\t\trepo->remote_state->current_branch = make_branch(\n \t\t\t\trepo->remote_state, head_ref, strlen(head_ref));\n@@ -1272,14 +1273,12 @@ static int match_explicit(struct ref *src, struct ref *dst,\n \t\treturn -1;\n \n \tif (!dst_value) {\n-\t\tint flag;\n-\n-\t\tdst_value = resolve_ref_unsafe(matched_src->name,\n-\t\t\t\t\t       RESOLVE_REF_READING,\n-\t\t\t\t\t       NULL, &flag);\n-\t\tif (!dst_value ||\n-\t\t    ((flag & REF_ISSYMREF) &&\n-\t\t     !starts_with(dst_value, \"refs/heads/\")))\n+\t\tunsigned int flags;\n+\n+\t\tdst_value = resolve_ref_unsafe(\n+\t\t\tmatched_src->name, RESOLVE_REF_READING, NULL, &flags);\n+\t\tif (!dst_value || ((flags & REF_ISSYMREF) &&\n+\t\t\t\t   !starts_with(dst_value, \"refs/heads/\")))\n \t\t\tdie(_(\"%s cannot be resolved to branch\"),\n \t\t\t    matched_src->name);\n \t}\n@@ -1948,11 +1947,11 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)\n \n static int ignore_symref_update(const char *refname)\n {\n-\tint flag;\n+\tunsigned int flags;\n \n-\tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n+\tif (!resolve_ref_unsafe(refname, 0, NULL, &flags))\n \t\treturn 0; /* non-existing refs are OK */\n-\treturn (flag & REF_ISSYMREF);\n+\treturn (flags & REF_ISSYMREF);\n }\n \n /*\n@@ -2288,7 +2287,7 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,\n }\n \n static int one_local_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct ref ***local_tail = cb_data;\n \tstruct ref *ref;\n@@ -2369,7 +2368,7 @@ struct stale_heads_info {\n };\n \n static int get_stale_heads_cb(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct stale_heads_info *info = cb_data;\n \tstruct string_list matches = STRING_LIST_INIT_DUP;\ndiff --git a/replace-object.c b/replace-object.c\nindex 7bd9aba6ee6..d00486305a5 100644\n--- a/replace-object.c\n+++ b/replace-object.c\n@@ -6,10 +6,9 @@\n #include \"repository.h\"\n #include \"commit.h\"\n \n-static int register_replace_ref(struct repository *r,\n-\t\t\t\tconst char *refname,\n+static int register_replace_ref(struct repository *r, const char *refname,\n \t\t\t\tconst struct object_id *oid,\n-\t\t\t\tint flag, void *cb_data)\n+\t\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \t/* Get sha1 from refname */\n \tconst char *slash = strrchr(refname, '/');\ndiff --git a/revision.c b/revision.c\nindex ad4286fbdde..4b6f7f112a8 100644\n--- a/revision.c\n+++ b/revision.c\n@@ -1527,7 +1527,7 @@ int ref_excluded(struct string_list *ref_excludes, const char *path)\n }\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct object *object;\n@@ -1612,7 +1612,7 @@ static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n \n static int handle_one_reflog(const char *refname_in_wt,\n \t\t\t     const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct strbuf refname = STRBUF_INIT;\n@@ -2678,7 +2678,7 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,\n \n static void NORETURN diagnose_missing_default(const char *def)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname;\n \n \trefname = resolve_ref_unsafe(def, 0, NULL, &flags);\ndiff --git a/server-info.c b/server-info.c\nindex 7701d7c20a1..06e3eb388ea 100644\n--- a/server-info.c\n+++ b/server-info.c\n@@ -147,7 +147,7 @@ out:\n }\n \n static int add_info_ref(const char *path, const struct object_id *oid,\n-\t\t\tint flag, void *cb_data)\n+\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct update_info_ctx *uic = cb_data;\n \tstruct object *o = parse_object(the_repository, oid);\ndiff --git a/shallow.c b/shallow.c\nindex 9ed18eb8849..709e265dde7 100644\n--- a/shallow.c\n+++ b/shallow.c\n@@ -596,7 +596,7 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,\n }\n \n static int mark_uninteresting(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\n@@ -707,7 +707,7 @@ struct commit_array {\n };\n \n static int add_ref(const char *refname, const struct object_id *oid,\n-\t\t   int flags, void *cb_data)\n+\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit_array *ca = cb_data;\n \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\ndiff --git a/submodule.c b/submodule.c\nindex c6890705241..325cfc7cd4b 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -909,7 +909,7 @@ static void free_submodules_oids(struct string_list *submodules)\n }\n \n static int has_remote(const char *refname, const struct object_id *oid,\n-\t\t      int flags, void *cb_data)\n+\t\t      unsigned int unused_flags, void *cb_data)\n {\n \treturn 1;\n }\n@@ -1216,7 +1216,7 @@ int push_unpushed_submodules(struct repository *r,\n }\n \n static int append_oid_to_array(const char *ref, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int unused_flags, void *data)\n {\n \tstruct oid_array *array = data;\n \toid_array_append(array, oid);\ndiff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c\nindex 3e4ddaee705..5054600e3a9 100644\n--- a/t/helper/test-ref-store.c\n+++ b/t/helper/test-ref-store.c\n@@ -160,7 +160,7 @@ static int cmd_rename_ref(struct ref_store *refs, const char **argv)\n }\n \n static int each_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flags, void *cb_data)\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tprintf(\"%s %s 0x%x\\n\", oid_to_hex(oid), refname, flags);\n \treturn 0;\n@@ -178,7 +178,7 @@ static int cmd_resolve_ref(struct ref_store *refs, const char **argv)\n \tstruct object_id oid = *null_oid();\n \tconst char *refname = notnull(*argv++, \"refname\");\n \tint resolve_flags = arg_flags(*argv++, \"resolve-flags\", empty_flags);\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *ref;\n \tint ignore_errno;\n \ndiff --git a/transport-helper.c b/transport-helper.c\nindex a0297b0986c..b31c1198b8e 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -1090,13 +1090,15 @@ static int push_refs_with_export(struct transport *transport,\n \t\t\tif (strcmp(ref->name, ref->peer_ref->name)) {\n \t\t\t\tif (!ref->deletion) {\n \t\t\t\t\tconst char *name;\n-\t\t\t\t\tint flag;\n+\t\t\t\t\tunsigned int ref_flags;\n \n \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n-\t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n-\t\t\t\t\t\t\t\t  RESOLVE_REF_READING,\n-\t\t\t\t\t\t\t\t  &oid, &flag);\n-\t\t\t\t\tif (!name || !(flag & REF_ISSYMREF))\n+\t\t\t\t\tname = resolve_ref_unsafe(\n+\t\t\t\t\t\tref->peer_ref->name,\n+\t\t\t\t\t\tRESOLVE_REF_READING, &oid,\n+\t\t\t\t\t\t&ref_flags);\n+\t\t\t\t\tif (!name ||\n+\t\t\t\t\t    !(ref_flags & REF_ISSYMREF))\n \t\t\t\t\t\tname = ref->peer_ref->name;\n \n \t\t\t\t\tstrbuf_addf(&buf, \"%s:%s\", name, ref->name);\ndiff --git a/transport.c b/transport.c\nindex 2a3e3241545..00f4906e12b 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -80,7 +80,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\tconst char *localname;\n \t\tconst char *tmp;\n \t\tconst char *remotename;\n-\t\tint flag = 0;\n+\t\tunsigned int ref_flags = 0;\n \t\t/*\n \t\t * Check suitability for tracking. Must be successful /\n \t\t * already up-to-date ref create/modify (not delete).\n@@ -96,10 +96,10 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\t/* Follow symbolic refs (mainly for HEAD). */\n \t\tlocalname = ref->peer_ref->name;\n \t\tremotename = ref->name;\n-\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING,\n-\t\t\t\t\t NULL, &flag);\n-\t\tif (tmp && flag & REF_ISSYMREF &&\n-\t\t\tstarts_with(tmp, \"refs/heads/\"))\n+\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t &ref_flags);\n+\t\tif (tmp && ref_flags & REF_ISSYMREF &&\n+\t\t    starts_with(tmp, \"refs/heads/\"))\n \t\t\tlocalname = tmp;\n \n \t\t/* Both source and destination must be local branches. */\ndiff --git a/upload-pack.c b/upload-pack.c\nindex 8acc98741bb..6300af75f20 100644\n--- a/upload-pack.c\n+++ b/upload-pack.c\n@@ -822,7 +822,7 @@ static void send_unshallow(struct upload_pack_data *data)\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data);\n+\t\t     unsigned int flag, void *cb_data);\n static void deepen(struct upload_pack_data *data, int depth)\n {\n \tif (depth == INFINITE_DEPTH && !is_repository_shallow(the_repository)) {\n@@ -1169,7 +1169,7 @@ static int mark_our_ref(const char *refname, const char *refname_full,\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tconst char *refname = strip_namespace(refname_full);\n \n@@ -1193,7 +1193,7 @@ static void format_session_id(struct strbuf *buf, struct upload_pack_data *d) {\n }\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n@@ -1236,15 +1236,15 @@ static int send_ref(const char *refname, const struct object_id *oid,\n }\n \n static int find_symref(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tconst char *symref_target;\n \tstruct string_list_item *item;\n \n-\tif ((flag & REF_ISSYMREF) == 0)\n+\tif ((flags & REF_ISSYMREF) == 0)\n \t\treturn 0;\n-\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flag);\n-\tif (!symref_target || (flag & REF_ISSYMREF) == 0)\n+\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flags);\n+\tif (!symref_target || (flags & REF_ISSYMREF) == 0)\n \t\tdie(\"'%s' is a symref but it is not?\", refname);\n \titem = string_list_append(cb_data, strip_namespace(refname));\n \titem->util = xstrdup(strip_namespace(symref_target));\ndiff --git a/walker.c b/walker.c\nindex c5e29219795..af8ce53a15b 100644\n--- a/walker.c\n+++ b/walker.c\n@@ -216,7 +216,7 @@ static int interpret_target(struct walker *walker, char *target, struct object_i\n }\n \n static int mark_complete(const char *path, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\ndiff --git a/worktree.c b/worktree.c\nindex 6f598dcfcdf..1c92993952a 100644\n--- a/worktree.c\n+++ b/worktree.c\n@@ -26,7 +26,7 @@ void free_worktrees(struct worktree **worktrees)\n  */\n static void add_head_info(struct worktree *wt)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *target;\n \tint ignore_errno;\n \n@@ -415,7 +415,7 @@ const struct worktree *find_shared_symref(struct worktree **worktrees,\n \t\tstruct worktree *wt = worktrees[i];\n \t\tconst char *symref_target;\n \t\tstruct ref_store *refs;\n-\t\tint flags;\n+\t\tunsigned int flags;\n \t\tint ignore_errno;\n \n \t\tif (wt->is_bare)\n@@ -562,7 +562,7 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \tfor (p = worktrees; *p; p++) {\n \t\tstruct worktree *wt = *p;\n \t\tstruct object_id oid;\n-\t\tint flag;\n+\t\tunsigned int flags;\n \t\tint ignore_errno;\n \n \t\tif (wt->is_current)\n@@ -571,10 +571,9 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \t\tstrbuf_reset(&refname);\n \t\tstrbuf_worktree_ref(wt, &refname, \"HEAD\");\n \t\tif (refs_resolve_ref_unsafe(get_main_ref_store(the_repository),\n-\t\t\t\t\t    refname.buf,\n-\t\t\t\t\t    RESOLVE_REF_READING,\n-\t\t\t\t\t    &oid, &flag, &ignore_errno))\n-\t\t\tret = fn(refname.buf, &oid, flag, cb_data);\n+\t\t\t\t\t    refname.buf, RESOLVE_REF_READING,\n+\t\t\t\t\t    &oid, &flags, &ignore_errno))\n+\t\t\tret = fn(refname.buf, &oid, flags, cb_data);\n \t\tif (ret)\n \t\t\tbreak;\n \t}\n\nbase-commit: 5d01301f2b865aa8dba1654d3f447ce9d21db0b5\n-- \ngitgitgadget\n"},{"id":"447443","messageId":"xmqqh79ie8eg.fsf@gitster.g","threadId":"57344","inReplyTo":"CAFQ2z_PtNsrSXdCG_5vr99Fz63GDMpC6j7rzLqOn+cZufi+xfQ@mail.gmail.com","subject":"Re: [PATCH] refs.h: make all flags arguments unsigned","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-02-01T18:41:59Z","receivedAt":"2022-02-01T18:42:03Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Han-Wen Nienhuys <hanwen@google.com> writes:\n\n> On Tue, Feb 1, 2022 at 3:02 AM Junio C Hamano <gitster@pobox.com> wrote:\n>>\n>> \"Han-Wen Nienhuys via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n>>\n>> > From: Han-Wen Nienhuys <hanwen@google.com>\n>> >\n>> > As discussed in\n>> > https://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\n>> > want to treat the sign bit specially, so make all flags in refs.h\n>> > unsigned.\n>>\n>> It may be true that we do not want to, but are we sure there is no\n>> code that already uses some cleverness to make the topmost bit\n>> special by e.g. doing ugly things like \"if (flags < 0)\" ;-)?\n>\n> In refs.h, we don't have any bitmasks that accept 32 different bit\n> values, so it's hard to see how we would stumble into a case like\n> that.\n>\n>> I haven't had energy to vet the entire codebase for all flag words\n>> and that is why I've never produced a patch like this one myself.\n>>\n>> Thanks for carefully vetting after creating this (presumably\n>> mechanically prepared) patch---producing is the easy part, but\n>> making sure it does not break unexpectedly is much harder.\n>\n> I went over the changes once more, uniformizing the naming. I didn't\n> see any shenanigans.\n\nThanks again.\n"},{"id":"447457","messageId":"220201.86ilty9vq2.gmgdl@evledraar.gmail.com","threadId":"57344","inReplyTo":"pull.1210.v2.git.git.1643719616840.gitgitgadget@gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-02-01T20:20:59Z","receivedAt":"2022-02-01T20:29:30Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Tue, Feb 01 2022, Han-Wen Nienhuys via GitGitGadget wrote:\n\n> From: Han-Wen Nienhuys <hanwen@google.com>\n>\n> As discussed in\n> https://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\n> want to treat the sign bit specially, so make all flags in refs.h\n> unsigned.\n>\n> For uniformity, rename all variables to `flags` or `unused_flags`,\n> from `flag`. In a couple of shadowing cases, use `ref_flags` for\n> clarity.\n\nFor what it's worth I thought the suggestion of enums in your\nhttps://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ made more sense,\ne.g. I tried this on top:\n\t\n\tdiff --git a/refs.c b/refs.c\n\tindex 5f29775def1..dc33573f064 100644\n\t--- a/refs.c\n\t+++ b/refs.c\n\t@@ -265,7 +265,8 @@ int ref_resolves_to_object(const char *refname,\n\t }\n\t \n\t char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n\t-\t\t\t  int resolve_flags, struct object_id *oid,\n\t+\t\t\t  enum resolve_ref_flags resolve_flags,\n\t+\t\t\t  struct object_id *oid,\n\t \t\t\t  unsigned int *flags)\n\t {\n\t \tconst char *result;\n\t@@ -276,7 +277,8 @@ char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n\t \treturn xstrdup_or_null(result);\n\t }\n\t \n\t-char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n\t+char *resolve_refdup(const char *refname,\n\t+\t\t     enum resolve_ref_flags resolve_flags,\n\t \t\t     struct object_id *oid, unsigned int *flags)\n\t {\n\t \treturn refs_resolve_refdup(get_main_ref_store(the_repository),\n\t@@ -292,7 +294,8 @@ struct ref_filter {\n\t \tvoid *cb_data;\n\t };\n\t \n\t-int read_ref_full(const char *refname, unsigned int resolve_flags,\n\t+int read_ref_full(const char *refname,\n\t+\t\t  enum resolve_ref_flags resolve_flags,\n\t \t\t  struct object_id *oid, unsigned int *flags)\n\t {\n\t \tint ignore_errno;\n\t@@ -1679,7 +1682,8 @@ int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n\t }\n\t \n\t const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n\t-\t\t\t\t    int resolve_flags, struct object_id *oid,\n\t+\t\t\t\t    enum resolve_ref_flags resolve_flags,\n\t+\t\t\t\t    struct object_id *oid,\n\t \t\t\t\t    unsigned int *flags, int *failure_errno)\n\t {\n\t \tstatic struct strbuf sb_refname = STRBUF_INIT;\n\t@@ -1779,7 +1783,8 @@ int refs_init_db(struct strbuf *err)\n\t \treturn refs->be->init_db(refs, err);\n\t }\n\t \n\t-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n\t+const char *resolve_ref_unsafe(const char *refname,\n\t+\t\t\t       enum resolve_ref_flags resolve_flags,\n\t \t\t\t       struct object_id *oid, unsigned int *flags)\n\t {\n\t \tint ignore_errno;\n\tdiff --git a/refs.h b/refs.h\n\tindex c5462b75807..8c7404eaf78 100644\n\t--- a/refs.h\n\t+++ b/refs.h\n\t@@ -64,24 +64,30 @@ struct worktree;\n\t  * type of failure encountered, but not necessarily one that came from\n\t  * a syscall. We might have faked it up.\n\t  */\n\t-#define RESOLVE_REF_READING 0x01\n\t-#define RESOLVE_REF_NO_RECURSE 0x02\n\t-#define RESOLVE_REF_ALLOW_BAD_NAME 0x04\n\t+enum resolve_ref_flags {\n\t+\tRESOLVE_REF_READING = 1 << 0,\n\t+\tRESOLVE_REF_NO_RECURSE = 1 << 1,\n\t+\tRESOLVE_REF_ALLOW_BAD_NAME = 1 << 2,\n\t+};\n\t \n\t const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n\t-\t\t\t\t    int resolve_flags, struct object_id *oid,\n\t+\t\t\t\t    enum resolve_ref_flags resolve_flags,\n\t+\t\t\t\t    struct object_id *oid,\n\t \t\t\t\t    unsigned int *flags, int *failure_errno);\n\t \n\t-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n\t+const char *resolve_ref_unsafe(const char *refname,\n\t+\t\t\t       enum resolve_ref_flags resolve_flags,\n\t \t\t\t       struct object_id *oid, unsigned int *flags);\n\t \n\t char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n\t-\t\t\t  int resolve_flags, struct object_id *oid,\n\t+\t\t\t  enum resolve_ref_flags resolve_flags,\n\t+\t\t\t  struct object_id *oid,\n\t \t\t\t  unsigned int *flags);\n\t-char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n\t+char *resolve_refdup(const char *refname,\n\t+\t\t     enum resolve_ref_flags resolve_flags,\n\t \t\t     struct object_id *oid, unsigned int *flags);\n\t \n\t-int read_ref_full(const char *refname, unsigned int resolve_flags,\n\t+int read_ref_full(const char *refname, enum resolve_ref_flags resolve_flags,\n\t \t\t  struct object_id *oid, unsigned int *flags);\n\t int read_ref(const char *refname, struct object_id *oid);\n\nI don't mind if this goes in, but I think doing that would make this\nmuch easier to deal with, as it would be more obvious when working on\nthe code just what flag you're dealing with. Even as Junio points out\ndownthread of that it mostly doesn't matter in C.\n\nSee though 3f9ab7ccdea (parse-options.[ch]: consistently use \"enum\nparse_opt_flags\", 2021-10-08) where doing it this way makes debugging\nmuch nicer to work with.\n\n> -\t\tint flag;\n> -\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n> -\t\tif (head_ref &&\n> -\t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n> +\t\tunsigned int flags;\n> +\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flags);\n> +\t\tif (head_ref && (!(flags & REF_ISSYMREF) ||\n> +\t\t\t\t strcmp(head_ref, new_branch_info->path)))\n\nI don't think this needs a re-roll, but FWIW I think it's much easier to\nreview changes like these if the changes are kept apart. E.g. this\nvariable renaming from the type change.\n\n> -static int add_one_refname(const char *refname,\n> -\t\t\t   const struct object_id *oid,\n> -\t\t\t   int flag, void *cbdata)\n> +static int add_one_refname(const char *refname, const struct object_id *oid,\n> +\t\t\t   unsigned int unused_flags, void *cbdata)\n\nAnd this change not mentioned in the commit message of seemingly doing\nsome re-flowing of argument lists while we're at it.\n\nThe post-image is better, but better done is another step IMO.\n\nI didn't look through the rest of the diff as you sent it, but locally\nwith appropriate word-diff flags to hide any formatting changes.\n\nThe post-image LGTM, but I'm also a bit \"meh\" on the churn just for\nsigned->unsigned, especially given the conflict with my in-flight\nab/no-errno-from-resolve-ref-unsafe. But it's not too bad, and if Junio\nhasn't complained about it...\n"},{"id":"447475","messageId":"xmqq8ruub35i.fsf@gitster.g","threadId":"57344","inReplyTo":"220201.86ilty9vq2.gmgdl@evledraar.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-02-01T23:03:37Z","receivedAt":"2022-02-01T23:03:43Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> The post-image LGTM, but I'm also a bit \"meh\" on the churn just for\n> signed->unsigned, especially given the conflict with my in-flight\n> ab/no-errno-from-resolve-ref-unsafe. But it's not too bad, and if Junio\n> hasn't complained about it...\n\nI won't complain myself.  I'd still try to help newer developers,\nbut my intention is to make it the responsibility for individual\ndevelopers to make sure their topic works well with topics in\nflight ;-)\n\nBetween \"enum\" and #define that is stored in \"unsigned\", neither\ngives us much type safety in C; \"enum\" may be somewhat worse by\ngiving a false sense of having a type safety that does not really\nexist, than \"unsigned int\" that is more honestly defeats such a\nfalse sense of safety.  So I have no strong preference either way.\n\n"},{"id":"447611","messageId":"pull.1210.v3.git.git.1643898412.gitgitgadget@gmail.com","threadId":"57344","inReplyTo":"pull.1210.v2.git.git.1643719616840.gitgitgadget@gmail.com","subject":"[PATCH v3 0/2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2022-02-03T14:26:50Z","receivedAt":"2022-02-03T14:27:03Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"v3:\n\n * split off rename commit\n * base on seen (@fde6c449a)\n\nSigned-off-by: Han-Wen Nienhuys hanwen@google.com\n\nHan-Wen Nienhuys (2):\n  refs.h: make all flags arguments unsigned\n  Uniformize flag argument naming to `flags` or `unused_flags`\n\n bisect.c                    |  4 +-\n builtin/bisect--helper.c    | 11 +++---\n builtin/branch.c            |  4 +-\n builtin/checkout.c          | 24 ++++++------\n builtin/describe.c          |  3 +-\n builtin/fetch.c             | 10 ++---\n builtin/fsck.c              |  4 +-\n builtin/gc.c                |  5 +--\n builtin/name-rev.c          |  3 +-\n builtin/pack-objects.c      | 11 +++---\n builtin/rebase.c            | 10 +++--\n builtin/receive-pack.c      | 13 ++++---\n builtin/reflog.c            |  5 ++-\n builtin/remote.c            | 23 +++++++-----\n builtin/repack.c            |  2 +-\n builtin/replace.c           |  2 +-\n builtin/rev-parse.c         |  6 ++-\n builtin/show-branch.c       | 12 +++---\n builtin/show-ref.c          |  4 +-\n builtin/stash.c             |  2 +-\n builtin/submodule--helper.c |  4 +-\n builtin/symbolic-ref.c      |  6 +--\n bundle.c                    |  8 ++--\n commit-graph.c              |  5 +--\n config.c                    |  2 +-\n delta-islands.c             |  2 +-\n fetch-pack.c                |  7 ++--\n help.c                      |  2 +-\n http-backend.c              |  6 +--\n log-tree.c                  |  4 +-\n ls-refs.c                   | 18 ++++-----\n midx.c                      |  7 ++--\n negotiator/default.c        |  2 +-\n negotiator/skipping.c       |  2 +-\n notes.c                     |  5 ++-\n object-name.c               |  2 +-\n reachable.c                 |  4 +-\n ref-filter.c                |  9 +++--\n refs.c                      | 75 ++++++++++++++++++-------------------\n refs.h                      | 46 +++++++++++------------\n refs/files-backend.c        | 56 ++++++++++++++-------------\n remote.c                    | 30 +++++++--------\n replace-object.c            |  5 +--\n revision.c                  |  6 +--\n server-info.c               |  2 +-\n shallow.c                   |  4 +-\n submodule.c                 |  4 +-\n t/helper/test-ref-store.c   |  4 +-\n transport-helper.c          | 12 +++---\n transport.c                 | 10 ++---\n upload-pack.c               | 14 +++----\n walker.c                    |  2 +-\n worktree.c                  | 13 +++----\n 53 files changed, 272 insertions(+), 264 deletions(-)\n\n\nbase-commit: fde6c449af7cc83f7d357653f1b8ee055f6cad3b\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1210%2Fhanwen%2Funsigned-flags-v3\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1210/hanwen/unsigned-flags-v3\nPull-Request: https://github.com/git/git/pull/1210\n\nRange-diff vs v2:\n\n 1:  216006057b7 ! 1:  54dfe8d6a86 refs.h: make all flags arguments unsigned\n     @@ Commit message\n          want to treat the sign bit specially, so make all flags in refs.h\n          unsigned.\n      \n     -    For uniformity, rename all variables to `flags` or `unused_flags`,\n     -    from `flag`. In a couple of shadowing cases, use `ref_flags` for\n     -    clarity.\n     -\n          Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>\n      \n       ## bisect.c ##\n     @@ bisect.c: void find_bisection(struct commit_list **commit_list, int *reaches,\n       \n       static int register_ref(const char *refname, const struct object_id *oid,\n      -\t\t\tint flags, void *cb_data)\n     -+\t\t\tunsigned int unused_flags, void *cb_data)\n     ++\t\t\tunsigned int flags, void *cb_data)\n       {\n       \tstruct strbuf good_prefix = STRBUF_INIT;\n       \tstrbuf_addstr(&good_prefix, term_good);\n     @@ bisect.c: int estimate_bisect_steps(int all)\n       \n       static int mark_for_removal(const char *refname, const struct object_id *oid,\n      -\t\t\t    int flag, void *cb_data)\n     -+\t\t\t    unsigned int unused_flags, void *cb_data)\n     ++\t\t\t    unsigned int flag, void *cb_data)\n       {\n       \tstruct string_list *refs = cb_data;\n       \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\n     @@ builtin/bisect--helper.c: static int check_and_set_terms(struct bisect_terms *te\n       \n       static int mark_good(const char *refname, const struct object_id *oid,\n      -\t\t     int flag, void *cb_data)\n     -+\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t     unsigned int flag, void *cb_data)\n       {\n       \tint *m_good = (int *)cb_data;\n       \t*m_good = 0;\n     @@ builtin/bisect--helper.c: finish:\n       \n       static int add_bisect_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t  int flags, void *cb)\n     -+\t\t\t  unsigned int unused_flags, void *cb)\n     ++\t\t\t  unsigned int flags, void *cb)\n       {\n       \tstruct add_bisect_ref_data *data = cb;\n       \n     @@ builtin/bisect--helper.c: static enum bisect_error bisect_start(struct bisect_te\n       \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n      -\tint flags, pathspec_pos;\n      +\tint pathspec_pos;\n     -+\tunsigned int unused_flags;\n     ++\tunsigned int flags;\n       \tenum bisect_error res = BISECT_OK;\n       \tstruct string_list revs = STRING_LIST_INIT_DUP;\n       \tstruct string_list states = STRING_LIST_INIT_DUP;\n     -@@ builtin/bisect--helper.c: static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n     - \t/*\n     - \t * Verify HEAD\n     - \t */\n     --\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &flags);\n     -+\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &unused_flags);\n     - \tif (!head)\n     - \t\tif (get_oid(\"HEAD\", &head_oid))\n     - \t\t\treturn error(_(\"bad HEAD - I need a HEAD\"));\n      \n       ## builtin/branch.c ##\n      @@ builtin/branch.c: static int delete_branches(int argc, const char **argv, int force, int kinds,\n     @@ builtin/checkout.c: static void update_refs_for_switch(const struct checkout_opt\n       static int add_pending_uninteresting_ref(const char *refname,\n       \t\t\t\t\t const struct object_id *oid,\n      -\t\t\t\t\t int flags, void *cb_data)\n     -+\t\t\t\t\t unsigned int unused_flags,\n     -+\t\t\t\t\t void *cb_data)\n     ++\t\t\t\t\t unsigned int flags, void *cb_data)\n       {\n       \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n       \treturn 0;\n     @@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,\n       \tstruct object_id rev;\n      -\tint flag, writeout_error = 0;\n      +\tint writeout_error = 0;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \tint do_merge = 1;\n       \n       \ttrace2_cmd_mode(\"branch\");\n     - \n     - \tmemset(&old_branch_info, 0, sizeof(old_branch_info));\n     --\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flag);\n     -+\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flags);\n     - \tif (old_branch_info.path)\n     - \t\told_branch_info.commit = lookup_commit_reference_gently(the_repository, &rev, 1);\n     --\tif (!(flag & REF_ISSYMREF))\n     -+\tif (!(flags & REF_ISSYMREF))\n     - \t\tFREE_AND_NULL(old_branch_info.path);\n     - \n     - \tif (old_branch_info.path) {\n      @@ builtin/checkout.c: static int checkout_branch(struct checkout_opts *opts,\n       \n       \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n       \t    !opts->ignore_other_worktrees) {\n      -\t\tint flag;\n     --\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n     --\t\tif (head_ref &&\n     --\t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n     -+\t\tunsigned int flags;\n     -+\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flags);\n     -+\t\tif (head_ref && (!(flags & REF_ISSYMREF) ||\n     -+\t\t\t\t strcmp(head_ref, new_branch_info->path)))\n     - \t\t\tdie_if_checked_out(new_branch_info->path, 1);\n     - \t\tfree(head_ref);\n     - \t}\n     ++\t\tunsigned int flag;\n     + \t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n     + \t\tif (head_ref &&\n     + \t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n     +@@ builtin/checkout.c: static int checkout_branch(struct checkout_opts *opts,\n       \n       \tif (!new_branch_info->commit && opts->new_branch) {\n       \t\tstruct object_id rev;\n      -\t\tint flag;\n     -+\t\tunsigned int flags;\n     ++\t\tunsigned int flag;\n       \n     --\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n     --\t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n     -+\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flags) &&\n     -+\t\t    (flags & REF_ISSYMREF) && is_null_oid(&rev))\n     - \t\t\treturn switch_unborn_to_new_branch(opts);\n     - \t}\n     - \treturn switch_branches(opts, new_branch_info);\n     + \t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n     + \t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n      \n       ## builtin/describe.c ##\n      @@ builtin/describe.c: static void add_to_known_names(const char *path,\n     @@ builtin/describe.c: static void add_to_known_names(const char *path,\n       \n      -static int get_name(const char *path, const struct object_id *oid, int flag, void *cb_data)\n      +static int get_name(const char *path, const struct object_id *oid,\n     -+\t\t    unsigned int unused_flags, void *cb_data)\n     ++\t\t    unsigned int flag, void *cb_data)\n       {\n       \tint is_tag = 0;\n       \tstruct object_id peeled;\n     @@ builtin/fetch.c: static struct refname_hash_entry *refname_hash_add(struct hashm\n      -\t\t\t   const struct object_id *oid,\n      -\t\t\t   int flag, void *cbdata)\n      +static int add_one_refname(const char *refname, const struct object_id *oid,\n     -+\t\t\t   unsigned int unused_flags, void *cbdata)\n     ++\t\t\t   unsigned int flag, void *cbdata)\n       {\n       \tstruct hashmap *refname_map = cbdata;\n       \n     @@ builtin/fetch.c: static void set_option(struct transport *transport, const char\n      -static int add_oid(const char *refname, const struct object_id *oid, int flags,\n      -\t\t   void *cb_data)\n      +static int add_oid(const char *refname, const struct object_id *oid,\n     -+\t\t   unsigned int unused_flags, void *cb_data)\n     ++\t\t   unsigned int flags, void *cb_data)\n       {\n       \tstruct oid_array *oids = cb_data;\n       \n     @@ builtin/fsck.c: static int fsck_handle_reflog_ent(struct object_id *ooid, struct\n       \n       static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n      -\t\t\t      int flag, void *cb_data)\n     -+\t\t\t      unsigned int unused_flags, void *cb_data)\n     ++\t\t\t      unsigned int flag, void *cb_data)\n       {\n       \tstruct strbuf refname = STRBUF_INIT;\n       \n     @@ builtin/fsck.c: static int fsck_handle_reflog(const char *logname, const struct\n       \n       static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t   int flag, void *cb_data)\n     -+\t\t\t   unsigned int unused_flags, void *cb_data)\n     ++\t\t\t   unsigned int flag, void *cb_data)\n       {\n       \tstruct object *obj;\n       \n     @@ builtin/gc.c: struct cg_auto_data {\n      -\t\t      const struct object_id *oid, int flags,\n      -\t\t      void *cb_data)\n      +static int dfs_on_ref(const char *refname, const struct object_id *oid,\n     -+\t\t      unsigned int unused_flags, void *cb_data)\n     ++\t\t      unsigned int flags, void *cb_data)\n       {\n       \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n       \tint result = 0;\n     @@ builtin/name-rev.c: static int cmp_by_tag_and_age(const void *a_, const void *b_\n       \n      -static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)\n      +static int name_ref(const char *path, const struct object_id *oid,\n     -+\t\t    unsigned int unused_flags, void *cb_data)\n     ++\t\t    unsigned int flags, void *cb_data)\n       {\n       \tstruct object *o = parse_object(the_repository, oid);\n       \tstruct name_ref_data *data = cb_data;\n     @@ builtin/pack-objects.c: static enum write_one_status write_one(struct hashfile *\n      -static int mark_tagged(const char *path, const struct object_id *oid, int flag,\n      -\t\t       void *cb_data)\n      +static int mark_tagged(const char *path, const struct object_id *oid,\n     -+\t\t       unsigned int unused_flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tstruct object_id peeled;\n       \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n     @@ builtin/pack-objects.c: static void add_tag_chain(const struct object_id *oid)\n       \n      -static int add_ref_tag(const char *tag, const struct object_id *oid, int flag, void *cb_data)\n      +static int add_ref_tag(const char *tag, const struct object_id *oid,\n     -+\t\t       unsigned int unused_flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tstruct object_id peeled;\n       \n     @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix\n       \tconst char *branch_name;\n      -\tint ret, flags, total_argc, in_progress = 0;\n      +\tint ret, total_argc, in_progress = 0;\n     ++\tunsigned int flags;\n       \tint keep_base = 0;\n       \tint ok_to_skip_pre_rebase = 0;\n       \tstruct strbuf msg = STRBUF_INIT;\n     -@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     - \t\t}\n     - \t} else if (argc == 0) {\n     - \t\t/* Do not need to switch branches, we are already on it. */\n     -+\t\tunsigned int flags;\n     - \t\toptions.head_name =\n     - \t\t\txstrdup_or_null(resolve_ref_unsafe(\"HEAD\", 0, NULL,\n     - \t\t\t\t\t &flags));\n      @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n       \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n       \t\t    &options.orig_head, &merge_base) &&\n       \t    allow_preemptive_ff) {\n      -\t\tint flag;\n     -+\t\tunsigned int unused_flags;\n     ++\t\tunsigned int flag;\n       \n       \t\tif (!(options.flags & REBASE_FORCE)) {\n       \t\t\t/* Lazily switch to the target branch if needed... */\n     -@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     - \t\t\tif (!(options.flags & REBASE_NO_QUIET))\n     - \t\t\t\t; /* be quiet */\n     - \t\t\telse if (!strcmp(branch_name, \"HEAD\") &&\n     --\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n     -+\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL,\n     -+\t\t\t\t\t\t    &unused_flags))\n     - \t\t\t\tputs(_(\"HEAD is up to date.\"));\n     - \t\t\telse\n     - \t\t\t\tprintf(_(\"Current branch %s is up to date.\\n\"),\n     -@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)\n     - \t\t} else if (!(options.flags & REBASE_NO_QUIET))\n     - \t\t\t; /* be quiet */\n     - \t\telse if (!strcmp(branch_name, \"HEAD\") &&\n     --\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n     -+\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &unused_flags))\n     - \t\t\tputs(_(\"HEAD is up to date, rebase forced.\"));\n     - \t\telse\n     - \t\t\tprintf(_(\"Current branch %s is up to date, rebase \"\n      \n       ## builtin/receive-pack.c ##\n      @@ builtin/receive-pack.c: static void show_ref(const char *path, const struct object_id *oid)\n     @@ builtin/receive-pack.c: static void show_ref(const char *path, const struct obje\n       \n       static int show_ref_cb(const char *path_full, const struct object_id *oid,\n      -\t\t       int flag, void *data)\n     -+\t\t       unsigned int unused_flags, void *data)\n     ++\t\t       unsigned int flag, void *data)\n       {\n       \tstruct oidset *seen = data;\n       \tconst char *path = strip_namespace(path_full);\n     -@@ builtin/receive-pack.c: static void run_update_post_hook(struct command *commands)\n     - \n     - static void check_aliased_update_internal(struct command *cmd,\n     - \t\t\t\t\t  struct string_list *list,\n     --\t\t\t\t\t  const char *dst_name, int flag)\n     -+\t\t\t\t\t  const char *dst_name,\n     -+\t\t\t\t\t  unsigned int flags)\n     - {\n     - \tstruct string_list_item *item;\n     - \tstruct command *dst_cmd;\n     - \n     --\tif (!(flag & REF_ISSYMREF))\n     -+\tif (!(flags & REF_ISSYMREF))\n     - \t\treturn;\n     - \n     - \tif (!dst_name) {\n      @@ builtin/receive-pack.c: static void check_aliased_update(struct command *cmd, struct string_list *list)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tconst char *dst_name;\n      -\tint flag;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \n       \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n     --\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n     --\tcheck_aliased_update_internal(cmd, list, dst_name, flag);\n     -+\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flags);\n     -+\tcheck_aliased_update_internal(cmd, list, dst_name, flags);\n     - \tstrbuf_release(&buf);\n     - }\n     - \n     + \tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n      \n       ## builtin/reflog.c ##\n      @@ builtin/reflog.c: static int should_expire_reflog_ent_verbose(struct object_id *ooid,\n     @@ builtin/reflog.c: static void reflog_expiry_cleanup(void *cb_data)\n       \n      -static int collect_reflog(const char *ref, const struct object_id *oid, int unused, void *cb_data)\n      +static int collect_reflog(const char *ref, const struct object_id *oid,\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  unsigned int unused, void *cb_data)\n       {\n       \tstruct worktree_reflogs *cb = cb_data;\n       \tstruct worktree *worktree = cb->worktree;\n     @@ builtin/remote.c: struct branches_for_remote {\n       static int add_branch_for_removal(const char *refname,\n      -\tconst struct object_id *oid, int flags, void *cb_data)\n      +\t\t\t\t  const struct object_id *oid,\n     -+\t\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t\t  unsigned int flags, void *cb_data)\n       {\n       \tstruct branches_for_remote *branches = cb_data;\n       \tstruct refspec_item refspec;\n     @@ builtin/remote.c: struct rename_info {\n       \n       static int read_remote_branches(const char *refname,\n      -\tconst struct object_id *oid, int flags, void *cb_data)\n     -+\t\t\t\tconst struct object_id *oid,\n     -+\t\t\t\tunsigned int unused_flags, void *cb_data)\n     ++\t\t\t\tconst struct object_id *oid, unsigned int flags,\n     ++\t\t\t\tvoid *cb_data)\n       {\n       \tstruct rename_info *rename = cb_data;\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tstruct string_list_item *item;\n      -\tint flag;\n     ++\tunsigned int flag;\n       \tconst char *symref;\n       \n       \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n     - \tif (starts_with(refname, buf.buf)) {\n     -+\t\tunsigned int flags;\n     - \t\titem = string_list_append(rename->remote_branches, refname);\n     --\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,\n     --\t\t\t\t\t    NULL, &flag);\n     --\t\tif (symref && (flag & REF_ISSYMREF))\n     -+\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING, NULL,\n     -+\t\t\t\t\t    &flags);\n     -+\t\tif (symref && (flags & REF_ISSYMREF))\n     - \t\t\titem->util = xstrdup(symref);\n     - \t\telse\n     - \t\t\titem->util = NULL;\n      @@ builtin/remote.c: static int mv(int argc, const char **argv)\n       \tfor_each_ref(read_remote_branches, &rename);\n       \tfor (i = 0; i < remote_branches.nr; i++) {\n       \t\tstruct string_list_item *item = remote_branches.items + i;\n      -\t\tint flag = 0;\n     -+\t\tunsigned int flags = 0;\n     ++\t\tunsigned int flag = 0;\n       \n     --\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n     --\t\tif (!(flag & REF_ISSYMREF))\n     -+\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flags);\n     -+\t\tif (!(flags & REF_ISSYMREF))\n     - \t\t\tcontinue;\n     - \t\tif (delete_ref(NULL, item->string, NULL, REF_NO_DEREF))\n     - \t\t\tdie(_(\"deleting '%s' failed\"), item->string);\n     + \t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n     + \t\tif (!(flag & REF_ISSYMREF))\n      @@ builtin/remote.c: static void free_remote_ref_states(struct ref_states *states)\n       }\n       \n     @@ builtin/remote.c: static void free_remote_ref_states(struct ref_states *states)\n      \n       ## builtin/repack.c ##\n      @@ builtin/repack.c: struct midx_snapshot_ref_data {\n     + };\n       \n       static int midx_snapshot_ref_one(const char *refname,\n     - \t\t\t\t const struct object_id *oid,\n     +-\t\t\t\t const struct object_id *oid,\n      -\t\t\t\t int flag, void *_data)\n     -+\t\t\t\t unsigned int unused_flag, void *_data)\n     ++\t\t\t\t const struct object_id *oid, unsigned int flag,\n     ++\t\t\t\t void *_data)\n       {\n       \tstruct midx_snapshot_ref_data *data = _data;\n       \tstruct object_id peeled;\n      \n       ## builtin/replace.c ##\n      @@ builtin/replace.c: struct show_data {\n     + };\n       \n       static int show_reference(struct repository *r, const char *refname,\n     - \t\t\t  const struct object_id *oid,\n     +-\t\t\t  const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  const struct object_id *oid, unsigned int flag,\n     ++\t\t\t  void *cb_data)\n       {\n       \tstruct show_data *data = cb_data;\n       \n     @@ builtin/rev-parse.c: static int show_default(void)\n       \n      -static int show_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int show_reference(const char *refname, const struct object_id *oid,\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  unsigned int flag, void *cb_data)\n       {\n       \tif (ref_excluded(ref_excludes, refname))\n       \t\treturn 0;\n     @@ builtin/rev-parse.c: static int show_reference(const char *refname, const struct\n       \n      -static int anti_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int anti_reference(const char *refname, const struct object_id *oid,\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  unsigned int flag, void *cb_data)\n       {\n       \tshow_rev(REVERSED, oid, refname);\n       \treturn 0;\n     @@ builtin/show-branch.c: static int append_ref(const char *refname, const struct o\n       \n       static int append_head_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t   int flag, void *cb_data)\n     -+\t\t\t   unsigned int unused_flags, void *cb_data)\n     ++\t\t\t   unsigned int flag, void *cb_data)\n       {\n       \tstruct object_id tmp;\n       \tint ofs = 11;\n     @@ builtin/show-branch.c: static int append_head_ref(const char *refname, const str\n       \n       static int append_remote_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t\t     unsigned int flag, void *cb_data)\n       {\n       \tstruct object_id tmp;\n       \tint ofs = 13;\n     -@@ builtin/show-branch.c: static int append_remote_ref(const char *refname, const struct object_id *oid,\n     - }\n     - \n     - static int append_tag_ref(const char *refname, const struct object_id *oid,\n     --\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  int unused_flags, void *cb_data)\n     - {\n     - \tif (!starts_with(refname, \"refs/tags/\"))\n     - \t\treturn 0;\n      @@ builtin/show-branch.c: static const char *match_ref_pattern = NULL;\n       static int match_ref_slash = 0;\n       \n       static int append_matching_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t       int flag, void *cb_data)\n     -+\t\t\t       unsigned int flags, void *cb_data)\n     ++\t\t\t       unsigned int flag, void *cb_data)\n       {\n       \t/* we want to allow pattern hold/<asterisk> to show all\n       \t * branches under refs/heads/hold/, and v0.99.9? to show\n     -@@ builtin/show-branch.c: static int append_matching_ref(const char *refname, const struct object_id *oid,\n     - \tif (wildmatch(match_ref_pattern, tail, 0))\n     - \t\treturn 0;\n     - \tif (starts_with(refname, \"refs/heads/\"))\n     --\t\treturn append_head_ref(refname, oid, flag, cb_data);\n     -+\t\treturn append_head_ref(refname, oid, flags, cb_data);\n     - \tif (starts_with(refname, \"refs/tags/\"))\n     --\t\treturn append_tag_ref(refname, oid, flag, cb_data);\n     -+\t\treturn append_tag_ref(refname, oid, flags, cb_data);\n     - \treturn append_ref(refname, oid, 0);\n     - }\n     - \n      \n       ## builtin/show-ref.c ##\n      @@ builtin/show-ref.c: static void show_one(const char *refname, const struct object_id *oid)\n     @@ builtin/show-ref.c: match:\n       \n       static int add_existing(const char *refname, const struct object_id *oid,\n      -\t\t\tint flag, void *cbdata)\n     -+\t\t\tunsigned int unused_flags, void *cbdata)\n     ++\t\t\tunsigned int flag, void *cbdata)\n       {\n       \tstruct string_list *list = (struct string_list *)cbdata;\n       \tstring_list_insert(list, refname);\n     @@ builtin/submodule--helper.c: static void print_status(unsigned int flags, char s\n      -\t\t\t\t     const struct object_id *oid, int flags,\n      -\t\t\t\t     void *cb_data)\n      +\t\t\t\t     const struct object_id *oid,\n     -+\t\t\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t\t\t     unsigned int flags, void *cb_data)\n       {\n       \tstruct object_id *output = cb_data;\n       \tif (oid)\n     @@ builtin/symbolic-ref.c: static const char * const git_symbolic_ref_usage[] = {\n       static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n       {\n      -\tint flag;\n     --\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n     -+\tunsigned int flags;\n     -+\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flags);\n     ++\tunsigned int flag;\n     + \tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n       \n       \tif (!refname)\n     - \t\tdie(\"No such ref: %s\", HEAD);\n     --\telse if (!(flag & REF_ISSYMREF)) {\n     -+\telse if (!(flags & REF_ISSYMREF)) {\n     - \t\tif (!quiet)\n     - \t\t\tdie(\"ref %s is not a symbolic ref\", HEAD);\n     - \t\telse\n      \n       ## bundle.c ##\n      @@ bundle.c: static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n     @@ bundle.c: static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n       \t\tchar *ref;\n       \t\tconst char *display_ref;\n      -\t\tint flag;\n     -+\t\tunsigned int flags;\n     ++\t\tunsigned int flag;\n       \n       \t\tif (e->item->flags & UNINTERESTING)\n       \t\t\tcontinue;\n     - \t\tif (dwim_ref(e->name, strlen(e->name), &oid, &ref, 0) != 1)\n     - \t\t\tgoto skip_write_ref;\n     --\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flag))\n     --\t\t\tflag = 0;\n     --\t\tdisplay_ref = (flag & REF_ISSYMREF) ? e->name : ref;\n     -+\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flags))\n     -+\t\t\tflags = 0;\n     -+\t\tdisplay_ref = (flags & REF_ISSYMREF) ? e->name : ref;\n     - \n     - \t\tif (e->item->type == OBJ_TAG &&\n     - \t\t\t\t!is_tag_in_date_range(e->item, revs)) {\n      \n       ## commit-graph.c ##\n      @@ commit-graph.c: struct refs_cb_data {\n     @@ delta-islands.c: static void add_ref_to_island(const char *island_name, const st\n       \n       static int find_island_for_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t       int flags, void *data)\n     -+\t\t\t       unsigned int unused_flags, void *data)\n     ++\t\t\t       unsigned int flags, void *data)\n       {\n       \t/*\n       \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\n     @@ fetch-pack.c: static int rev_list_insert_ref(struct fetch_negotiator *negotiator\n      -\t\t\t\t   int flag, void *cb_data)\n      +static int rev_list_insert_ref_oid(const char *refname,\n      +\t\t\t\t   const struct object_id *oid,\n     -+\t\t\t\t   unsigned int unused_flags, void *cb_data)\n     ++\t\t\t\t   unsigned int flag, void *cb_data)\n       {\n       \treturn rev_list_insert_ref(cb_data, oid);\n       }\n     @@ fetch-pack.c: static int mark_complete(const struct object_id *oid)\n       \n       static int mark_complete_oid(const char *refname, const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t\t     unsigned int flag, void *cb_data)\n       {\n       \treturn mark_complete(oid);\n       }\n     @@ http-backend.c: static void get_info_refs(struct strbuf *hdr, char *arg)\n       \n       static int show_head_ref(const char *refname, const struct object_id *oid,\n      -\t\t\t int flag, void *cb_data)\n     -+\t\t\t unsigned int flags, void *cb_data)\n     ++\t\t\t unsigned int flag, void *cb_data)\n       {\n       \tstruct strbuf *buf = cb_data;\n       \n     --\tif (flag & REF_ISSYMREF) {\n     -+\tif (flags & REF_ISSYMREF) {\n     - \t\tconst char *target = resolve_ref_unsafe(refname,\n     - \t\t\t\t\t\t\tRESOLVE_REF_READING,\n     - \t\t\t\t\t\t\tNULL, NULL);\n      \n       ## log-tree.c ##\n      @@ log-tree.c: static int ref_filter_match(const char *refname,\n     @@ log-tree.c: static int ref_filter_match(const char *refname,\n       \n       static int add_ref_decoration(const char *refname, const struct object_id *oid,\n      -\t\t\t      int flags, void *cb_data)\n     -+\t\t\t      unsigned int unused_flags, void *cb_data)\n     ++\t\t\t      unsigned int flags, void *cb_data)\n       {\n       \tstruct object *obj;\n       \tenum object_type objtype;\n     @@ ls-refs.c: struct ls_refs_data {\n       \n       static int send_ref(const char *refname, const struct object_id *oid,\n      -\t\t    int flag, void *cb_data)\n     -+\t\t    unsigned int flags, void *cb_data)\n     ++\t\t    unsigned int flag, void *cb_data)\n       {\n       \tstruct ls_refs_data *data = cb_data;\n       \tconst char *refname_nons = strip_namespace(refname);\n     -@@ ls-refs.c: static int send_ref(const char *refname, const struct object_id *oid,\n     - \t\tstrbuf_addf(&data->buf, \"%s %s\", oid_to_hex(oid), refname_nons);\n     - \telse\n     - \t\tstrbuf_addf(&data->buf, \"unborn %s\", refname_nons);\n     --\tif (data->symrefs && flag & REF_ISSYMREF) {\n     -+\tif (data->symrefs && flags & REF_ISSYMREF) {\n     - \t\tstruct object_id unused;\n     --\t\tconst char *symref_target = resolve_ref_unsafe(refname, 0,\n     --\t\t\t\t\t\t\t       &unused,\n     --\t\t\t\t\t\t\t       &flag);\n     -+\t\tconst char *symref_target =\n     -+\t\t\tresolve_ref_unsafe(refname, 0, &unused, &flags);\n     - \n     - \t\tif (!symref_target)\n     - \t\t\tdie(\"'%s' is a symref but it is not?\", refname);\n      @@ ls-refs.c: static void send_possibly_unborn_head(struct ls_refs_data *data)\n       {\n       \tstruct strbuf namespaced = STRBUF_INIT;\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \tint oid_is_null;\n       \n       \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\n     --\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flag))\n     -+\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flags))\n     - \t\treturn; /* bad ref */\n     - \toid_is_null = is_null_oid(&oid);\n     - \tif (!oid_is_null ||\n     --\t    (data->unborn && data->symrefs && (flag & REF_ISSYMREF)))\n     --\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flag, data);\n     -+\t    (data->unborn && data->symrefs && (flags & REF_ISSYMREF)))\n     -+\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flags,\n     -+\t\t\t data);\n     - \tstrbuf_release(&namespaced);\n     - }\n     - \n      \n       ## midx.c ##\n      @@ midx.c: static void prepare_midx_packing_data(struct packing_data *pdata,\n     @@ midx.c: static void prepare_midx_packing_data(struct packing_data *pdata,\n      -\t\t\t      const struct object_id *oid,\n      -\t\t\t      int flag, void *cb_data)\n      +static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n     -+\t\t\t      unsigned int flags, void *cb_data)\n     ++\t\t\t      unsigned int flag, void *cb_data)\n       {\n       \tstruct rev_info *revs = (struct rev_info*)cb_data;\n       \tstruct object *object;\n     - \n     --\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n     -+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n     - \t\twarning(\"symbolic ref is dangling: %s\", refname);\n     - \t\treturn 0;\n     - \t}\n      \n       ## negotiator/default.c ##\n      @@ negotiator/default.c: static void rev_list_push(struct negotiation_state *ns,\n     @@ negotiator/default.c: static void rev_list_push(struct negotiation_state *ns,\n       \n       static int clear_marks(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int unused_flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n       \n     @@ negotiator/skipping.c: static struct entry *rev_list_push(struct data *data, str\n       \n       static int clear_marks(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int unused_flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n       \n     @@ notes.c: out:\n      -\t\t\t\t   int flag, void *cb)\n      +static int string_list_add_one_ref(const char *refname,\n      +\t\t\t\t   const struct object_id *oid,\n     -+\t\t\t\t   unsigned int unused_flags, void *cb)\n     ++\t\t\t\t   unsigned int flag, void *cb)\n       {\n       \tstruct string_list *refs = cb;\n       \tif (!unsorted_string_list_has_string(refs, refname))\n     @@ object-name.c: struct handle_one_ref_cb {\n       \n       static int handle_one_ref(const char *path, const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  unsigned int flag, void *cb_data)\n       {\n       \tstruct handle_one_ref_cb *cb = cb_data;\n       \tstruct commit_list **list = cb->list;\n     @@ reachable.c: static void update_progress(struct connectivity_progress *cp)\n       \n       static int add_one_ref(const char *path, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tstruct rev_info *revs = (struct rev_info *)cb_data;\n       \tstruct object *object;\n     - \n     --\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n     -+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n     - \t\twarning(\"symbolic ref is dangling: %s\", path);\n     - \t\treturn 0;\n     - \t}\n      \n       ## ref-filter.c ##\n      @@ ref-filter.c: struct ref_filter_cbdata {\n     @@ ref-filter.c: struct ref_filter_cbdata {\n        */\n      -static int ref_filter_handler(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n      +static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     -+\t\t\t      unsigned int flags, void *cb_data)\n     ++\t\t\t      unsigned int flag, void *cb_data)\n       {\n       \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n       \tstruct ref_filter *filter = ref_cbdata->filter;\n     -@@ ref-filter.c: static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     - \tstruct commit *commit = NULL;\n     - \tunsigned int kind;\n     - \n     --\tif (flag & REF_BAD_NAME) {\n     -+\tif (flags & REF_BAD_NAME) {\n     - \t\twarning(_(\"ignoring ref with broken name %s\"), refname);\n     - \t\treturn 0;\n     - \t}\n     - \n     --\tif (flag & REF_ISBROKEN) {\n     -+\tif (flags & REF_ISBROKEN) {\n     - \t\twarning(_(\"ignoring broken ref %s\"), refname);\n     - \t\treturn 0;\n     - \t}\n     -@@ ref-filter.c: static int ref_filter_handler(const char *refname, const struct object_id *oid,\n     - \t */\n     - \tref = ref_array_push(ref_cbdata->array, refname, oid);\n     - \tref->commit = commit;\n     --\tref->flag = flag;\n     -+\tref->flag = flags;\n     - \tref->kind = kind;\n     - \n     - \treturn 0;\n      \n       ## refs.c ##\n      @@ refs.c: static unsigned char refname_disposition[256] = {\n     @@ refs.c: int ref_resolves_to_object(const char *refname,\n      +\t\t\t  unsigned int *flags)\n       {\n       \tconst char *result;\n     - \tint ignore_errno;\n     + \n      @@ refs.c: char *refs_resolve_refdup(struct ref_store *refs,\n       \treturn xstrdup_or_null(result);\n       }\n     @@ refs.c: struct ref_filter {\n      +int read_ref_full(const char *refname, unsigned int resolve_flags,\n      +\t\t  struct object_id *oid, unsigned int *flags)\n       {\n     - \tint ignore_errno;\n       \tstruct ref_store *refs = get_main_ref_store(the_repository);\n     + \n      @@ refs.c: int ref_exists(const char *refname)\n       }\n       \n     @@ refs.c: int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n       \tint ret = 0;\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \n       \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n     --\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n     --\t\tret = fn(buf.buf, &oid, flag, cb_data);\n     -+\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flags))\n     -+\t\tret = fn(buf.buf, &oid, flags, cb_data);\n     - \tstrbuf_release(&buf);\n     - \n     - \treturn ret;\n     + \tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n      @@ refs.c: int expand_ref(struct repository *repo, const char *str, int len,\n       \tfor (p = ref_rev_parse_rules; *p; p++) {\n       \t\tstruct object_id oid_from_ref;\n       \t\tstruct object_id *this_result;\n      -\t\tint flag;\n     -+\t\tunsigned int flags;\n     ++\t\tunsigned int flag;\n       \t\tstruct ref_store *refs = get_main_ref_store(repo);\n     - \t\tint ignore_errno;\n       \n     -@@ refs.c: int expand_ref(struct repository *repo, const char *str, int len,\n     - \t\tstrbuf_reset(&fullref);\n     - \t\tstrbuf_addf(&fullref, *p, len, str);\n     - \t\tr = refs_resolve_ref_unsafe(refs, fullref.buf,\n     --\t\t\t\t\t    RESOLVE_REF_READING,\n     --\t\t\t\t\t    this_result, &flag,\n     --\t\t\t\t\t    &ignore_errno);\n     -+\t\t\t\t\t    RESOLVE_REF_READING, this_result,\n     -+\t\t\t\t\t    &flags, &ignore_errno);\n     - \t\tif (r) {\n     - \t\t\tif (!refs_found++)\n     - \t\t\t\t*ref = xstrdup(r);\n     - \t\t\tif (!warn_ambiguous_refs)\n     - \t\t\t\tbreak;\n     --\t\t} else if ((flag & REF_ISSYMREF) && strcmp(fullref.buf, \"HEAD\")) {\n     -+\t\t} else if ((flags & REF_ISSYMREF) &&\n     -+\t\t\t   strcmp(fullref.buf, \"HEAD\")) {\n     - \t\t\twarning(_(\"ignoring dangling symref %s\"), fullref.buf);\n     --\t\t} else if ((flag & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n     -+\t\t} else if ((flags & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n     - \t\t\twarning(_(\"ignoring broken ref %s\"), fullref.buf);\n     - \t\t}\n     - \t}\n     + \t\tthis_result = refs_found ? &oid_from_ref : oid;\n      @@ refs.c: const char *find_descendant_ref(const char *dirname,\n       int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n       {\n       \tstruct object_id oid;\n      -\tint flag;\n     -+\tunsigned int flags;\n     - \tint ignore_errno;\n     - \n     --\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n     --\t\t\t\t    &oid, &flag, &ignore_errno))\n     --\t\treturn fn(\"HEAD\", &oid, flag, cb_data);\n     -+\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING, &oid,\n     -+\t\t\t\t    &flags, &ignore_errno))\n     -+\t\treturn fn(\"HEAD\", &oid, flags, cb_data);\n     ++\tunsigned int flag;\n       \n     - \treturn 0;\n     - }\n     + \tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n     + \t\t\t\t    &oid, &flag))\n      @@ refs.c: struct do_for_each_ref_help {\n       \tvoid *cb_data;\n       };\n     @@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n      -\t\t\t\t    const char *refname,\n      -\t\t\t\t    int resolve_flags,\n      -\t\t\t\t    struct object_id *oid,\n     --\t\t\t\t    int *flags, int *failure_errno)\n     +-\t\t\t\t    int *flags)\n      +const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n      +\t\t\t\t    unsigned int resolve_flags,\n     -+\t\t\t\t    struct object_id *oid, unsigned int *flags,\n     -+\t\t\t\t    int *failure_errno)\n     ++\t\t\t\t    struct object_id *oid, unsigned int *flags)\n       {\n       \tstatic struct strbuf sb_refname = STRBUF_INIT;\n       \tstruct object_id unused_oid;\n     @@ refs.c: int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n      +\tunsigned int unused_flags;\n       \tint symref_count;\n       \n     - \tassert(failure_errno);\n     + \tif (!oid)\n      @@ refs.c: int refs_init_db(struct strbuf *err)\n       \treturn refs->be->init_db(refs, err);\n       }\n     @@ refs.c: int refs_init_db(struct strbuf *err)\n      +const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n      +\t\t\t       struct object_id *oid, unsigned int *flags)\n       {\n     - \tint ignore_errno;\n     - \n     + \treturn refs_resolve_ref_unsafe(get_main_ref_store(the_repository), refname,\n     + \t\t\t\t       resolve_flags, oid, flags);\n      @@ refs.c: int resolve_gitlink_ref(const char *submodule, const char *refname,\n       \t\t\tstruct object_id *oid)\n       {\n       \tstruct ref_store *refs;\n      -\tint flags;\n     -+\tunsigned int unused_flags;\n     - \tint ignore_errno;\n     ++\tunsigned int flags;\n       \n       \trefs = get_submodule_ref_store(submodule);\n     -@@ refs.c: int resolve_gitlink_ref(const char *submodule, const char *refname,\n     - \tif (!refs)\n     - \t\treturn -1;\n       \n     --\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &flags,\n     --\t\t\t\t     &ignore_errno) || is_null_oid(oid))\n     -+\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &unused_flags,\n     -+\t\t\t\t     &ignore_errno) ||\n     -+\t    is_null_oid(oid))\n     - \t\treturn -1;\n     - \treturn 0;\n     - }\n      \n       ## refs.h ##\n      @@ refs.h: struct worktree;\n     @@ refs.h: struct worktree;\n      -\t\t\t\t    const char *refname,\n      -\t\t\t\t    int resolve_flags,\n      -\t\t\t\t    struct object_id *oid,\n     --\t\t\t\t    int *flags, int *failure_errno);\n     +-\t\t\t\t    int *flags);\n      -\n      -const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n      -\t\t\t       struct object_id *oid, int *flags);\n     @@ refs.h: struct worktree;\n      -\t\t  struct object_id *oid, int *flags);\n      +const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n      +\t\t\t\t    unsigned int resolve_flags,\n     -+\t\t\t\t    struct object_id *oid, unsigned int *flags,\n     -+\t\t\t\t    int *failure_errno);\n     ++\t\t\t\t    struct object_id *oid, unsigned int *flags);\n      +\n      +const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n      +\t\t\t       struct object_id *oid, unsigned int *flags);\n     @@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store\n       \t\tstruct object_id oid;\n       \t\tstruct stat st;\n      -\t\tint flag;\n     ++\t\tunsigned int flag;\n       \n       \t\tif (de->d_name[0] == '.')\n       \t\t\tcontinue;\n     -@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     - \t\t\t\t\t\t\t  refname.len));\n     - \t\t} else {\n     - \t\t\tint ignore_errno;\n     --\t\t\tif (!refs_resolve_ref_unsafe(&refs->base,\n     --\t\t\t\t\t\t     refname.buf,\n     --\t\t\t\t\t\t     RESOLVE_REF_READING,\n     --\t\t\t\t\t\t     &oid, &flag, &ignore_errno)) {\n     -+\t\t\tunsigned int flags;\n     -+\t\t\tif (!refs_resolve_ref_unsafe(&refs->base, refname.buf,\n     -+\t\t\t\t\t\t     RESOLVE_REF_READING, &oid,\n     -+\t\t\t\t\t\t     &flags, &ignore_errno)) {\n     - \t\t\t\toidclr(&oid);\n     --\t\t\t\tflag |= REF_ISBROKEN;\n     -+\t\t\t\tflags |= REF_ISBROKEN;\n     - \t\t\t} else if (is_null_oid(&oid)) {\n     - \t\t\t\t/*\n     - \t\t\t\t * It is so astronomically unlikely\n     -@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     - \t\t\t\t * file to be repo corruption\n     - \t\t\t\t * (probably due to a software bug).\n     - \t\t\t\t */\n     --\t\t\t\tflag |= REF_ISBROKEN;\n     -+\t\t\t\tflags |= REF_ISBROKEN;\n     - \t\t\t}\n     - \n     - \t\t\tif (check_refname_format(refname.buf,\n     -@@ refs/files-backend.c: static void loose_fill_ref_dir(struct ref_store *ref_store,\n     - \t\t\t\tif (!refname_is_safe(refname.buf))\n     - \t\t\t\t\tdie(\"loose refname is dangerous: %s\", refname.buf);\n     - \t\t\t\toidclr(&oid);\n     --\t\t\t\tflag |= REF_BAD_NAME | REF_ISBROKEN;\n     -+\t\t\t\tflags |= REF_BAD_NAME | REF_ISBROKEN;\n     - \t\t\t}\n     --\t\t\tadd_entry_to_dir(dir,\n     --\t\t\t\t\t create_ref_entry(refname.buf, &oid, flag));\n     -+\t\t\tadd_entry_to_dir(dir, create_ref_entry(refname.buf,\n     -+\t\t\t\t\t\t\t       &oid, flags));\n     - \t\t}\n     - \t\tstrbuf_setlen(&refname, dirnamelen);\n     - \t\tstrbuf_setlen(&path, path_baselen);\n      @@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n       \tstruct files_ref_store *refs =\n       \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n       \tstruct object_id orig_oid;\n      -\tint flag = 0, logmoved = 0;\n      +\tint logmoved = 0;\n     -+\tunsigned int flags = 0;\n     ++\tunsigned int flag = 0;\n       \tstruct ref_lock *lock;\n       \tstruct stat loginfo;\n       \tstruct strbuf sb_oldref = STRBUF_INIT;\n     -@@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n     - \t}\n     - \n     - \tif (!refs_resolve_ref_unsafe(&refs->base, oldrefname,\n     --\t\t\t\t     RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,\n     --\t\t\t\t     &orig_oid, &flag, &ignore_errno)) {\n     -+\t\t\t\t     RESOLVE_REF_READING |\n     -+\t\t\t\t\t     RESOLVE_REF_NO_RECURSE,\n     -+\t\t\t\t     &orig_oid, &flags, &ignore_errno)) {\n     - \t\tret = error(\"refname %s not found\", oldrefname);\n     - \t\tgoto out;\n     - \t}\n     - \n     --\tif (flag & REF_ISSYMREF) {\n     -+\tif (flags & REF_ISSYMREF) {\n     - \t\tif (copy)\n     - \t\t\tret = error(\"refname %s is a symbolic ref, copying it is not supported\",\n     - \t\t\t\t    oldrefname);\n     -@@ refs/files-backend.c: static int files_copy_or_rename_ref(struct ref_store *ref_store,\n     - \t\tgoto rollbacklog;\n     - \t}\n     - \n     --\tflag = log_all_ref_updates;\n     -+\tflags = log_all_ref_updates;\n     - \tlog_all_ref_updates = LOG_REFS_NONE;\n     - \tif (write_ref_to_lockfile(lock, &orig_oid, 0, &err) ||\n     - \t    commit_ref_update(refs, lock, &orig_oid, NULL, &err)) {\n     - \t\terror(\"unable to write current sha1 into %s: %s\", oldrefname, err.buf);\n     - \t\tstrbuf_release(&err);\n     - \t}\n     --\tlog_all_ref_updates = flag;\n     -+\tlog_all_ref_updates = flags;\n     - \n     -  rollbacklog:\n     - \tif (logmoved && rename(sb_newref.buf, sb_oldref.buf))\n     -@@ refs/files-backend.c: static int log_ref_write_fd(int fd, const struct object_id *old_oid,\n     - }\n     - \n     - static int files_log_ref_write(struct files_ref_store *refs,\n     --\t\t\t       const char *refname, const struct object_id *old_oid,\n     -+\t\t\t       const char *refname,\n     -+\t\t\t       const struct object_id *old_oid,\n     - \t\t\t       const struct object_id *new_oid, const char *msg,\n     --\t\t\t       int flags, struct strbuf *err)\n     -+\t\t\t       unsigned int flags, struct strbuf *err)\n     - {\n     - \tint logfd, result;\n     - \n      @@ refs/files-backend.c: static int commit_ref_update(struct files_ref_store *refs,\n       \t\t * check with HEAD only which should cover 99% of all usage\n       \t\t * scenarios (even 100% of the default ones).\n       \t\t */\n      -\t\tint head_flag;\n     -+\t\tunsigned int head_flags;\n     ++\t\tunsigned int head_flag;\n       \t\tconst char *head_ref;\n     - \t\tint ignore_errno;\n       \n       \t\thead_ref = refs_resolve_ref_unsafe(&refs->base, \"HEAD\",\n     --\t\t\t\t\t\t   RESOLVE_REF_READING,\n     --\t\t\t\t\t\t   NULL, &head_flag,\n     --\t\t\t\t\t\t   &ignore_errno);\n     --\t\tif (head_ref && (head_flag & REF_ISSYMREF) &&\n     -+\t\t\t\t\t\t   RESOLVE_REF_READING, NULL,\n     -+\t\t\t\t\t\t   &head_flags, &ignore_errno);\n     -+\t\tif (head_ref && (head_flags & REF_ISSYMREF) &&\n     - \t\t    !strcmp(head_ref, lock->ref_name)) {\n     - \t\t\tstruct strbuf log_err = STRBUF_INIT;\n     - \t\t\tif (files_log_ref_write(refs, \"HEAD\",\n      @@ refs/files-backend.c: static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)\n     - \tint ignore_errno;\n     + \tint ok;\n       \n       \twhile ((ok = dir_iterator_advance(diter)) == ITER_OK) {\n      -\t\tint flags;\n     @@ refs/files-backend.c: static int files_transaction_abort(struct ref_store *ref_s\n      -static int ref_present(const char *refname,\n      -\t\t       const struct object_id *oid, int flags, void *cb_data)\n      +static int ref_present(const char *refname, const struct object_id *oid,\n     -+\t\t       unsigned int unused_flags, void *cb_data)\n     ++\t\t       unsigned int flags, void *cb_data)\n       {\n       \tstruct string_list *affected_refnames = cb_data;\n       \n      @@ refs/files-backend.c: static int files_reflog_expire(struct ref_store *ref_store,\n     + \n       \t\tif ((expire_flags & EXPIRE_REFLOGS_UPDATE_REF) &&\n       \t\t    !is_null_oid(&cb.last_kept_oid)) {\n     - \t\t\tint ignore_errno;\n      -\t\t\tint type;\n      +\t\t\tunsigned int type;\n       \t\t\tconst char *ref;\n     @@ remote.c: static void alias_all_urls(struct remote_state *remote_state)\n       static void read_config(struct repository *repo)\n       {\n      -\tint flag;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \n       \tif (repo->remote_state->initialized)\n       \t\treturn;\n     -@@ remote.c: static void read_config(struct repository *repo)\n     - \tif (startup_info->have_repository) {\n     - \t\tint ignore_errno;\n     - \t\tconst char *head_ref = refs_resolve_ref_unsafe(\n     --\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flag, &ignore_errno);\n     --\t\tif (head_ref && (flag & REF_ISSYMREF) &&\n     -+\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flags,\n     -+\t\t\t&ignore_errno);\n     -+\t\tif (head_ref && (flags & REF_ISSYMREF) &&\n     - \t\t    skip_prefix(head_ref, \"refs/heads/\", &head_ref)) {\n     - \t\t\trepo->remote_state->current_branch = make_branch(\n     - \t\t\t\trepo->remote_state, head_ref, strlen(head_ref));\n      @@ remote.c: static int match_explicit(struct ref *src, struct ref *dst,\n       \t\treturn -1;\n       \n       \tif (!dst_value) {\n      -\t\tint flag;\n     --\n     --\t\tdst_value = resolve_ref_unsafe(matched_src->name,\n     --\t\t\t\t\t       RESOLVE_REF_READING,\n     --\t\t\t\t\t       NULL, &flag);\n     --\t\tif (!dst_value ||\n     --\t\t    ((flag & REF_ISSYMREF) &&\n     --\t\t     !starts_with(dst_value, \"refs/heads/\")))\n     -+\t\tunsigned int flags;\n     -+\n     -+\t\tdst_value = resolve_ref_unsafe(\n     -+\t\t\tmatched_src->name, RESOLVE_REF_READING, NULL, &flags);\n     -+\t\tif (!dst_value || ((flags & REF_ISSYMREF) &&\n     -+\t\t\t\t   !starts_with(dst_value, \"refs/heads/\")))\n     - \t\t\tdie(_(\"%s cannot be resolved to branch\"),\n     - \t\t\t    matched_src->name);\n     - \t}\n     ++\t\tunsigned int flag;\n     + \n     + \t\tdst_value = resolve_ref_unsafe(matched_src->name,\n     + \t\t\t\t\t       RESOLVE_REF_READING,\n      @@ remote.c: const char *branch_get_push(struct branch *branch, struct strbuf *err)\n       \n       static int ignore_symref_update(const char *refname)\n       {\n      -\tint flag;\n     -+\tunsigned int flags;\n     ++\tunsigned int flag;\n       \n     --\tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n     -+\tif (!resolve_ref_unsafe(refname, 0, NULL, &flags))\n     + \tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n       \t\treturn 0; /* non-existing refs are OK */\n     --\treturn (flag & REF_ISSYMREF);\n     -+\treturn (flags & REF_ISSYMREF);\n     - }\n     - \n     - /*\n      @@ remote.c: int format_tracking_info(struct branch *branch, struct strbuf *sb,\n       }\n       \n     @@ replace-object.c\n       \n      -static int register_replace_ref(struct repository *r,\n      -\t\t\t\tconst char *refname,\n     -+static int register_replace_ref(struct repository *r, const char *refname,\n     - \t\t\t\tconst struct object_id *oid,\n     +-\t\t\t\tconst struct object_id *oid,\n      -\t\t\t\tint flag, void *cb_data)\n     -+\t\t\t\tunsigned int unused_flags, void *cb_data)\n     ++static int register_replace_ref(struct repository *r, const char *refname,\n     ++\t\t\t\tconst struct object_id *oid, unsigned int flag,\n     ++\t\t\t\tvoid *cb_data)\n       {\n       \t/* Get sha1 from refname */\n       \tconst char *slash = strrchr(refname, '/');\n     @@ revision.c: int ref_excluded(struct string_list *ref_excludes, const char *path)\n       \n       static int handle_one_ref(const char *path, const struct object_id *oid,\n      -\t\t\t  int flag, void *cb_data)\n     -+\t\t\t  unsigned int unused_flags, void *cb_data)\n     ++\t\t\t  unsigned int flag, void *cb_data)\n       {\n       \tstruct all_refs_cb *cb = cb_data;\n       \tstruct object *object;\n      @@ revision.c: static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n     + }\n       \n       static int handle_one_reflog(const char *refname_in_wt,\n     - \t\t\t     const struct object_id *oid,\n     +-\t\t\t     const struct object_id *oid,\n      -\t\t\t     int flag, void *cb_data)\n     -+\t\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t\t     const struct object_id *oid, unsigned int flag,\n     ++\t\t\t     void *cb_data)\n       {\n       \tstruct all_refs_cb *cb = cb_data;\n       \tstruct strbuf refname = STRBUF_INIT;\n     @@ server-info.c: out:\n       \n       static int add_info_ref(const char *path, const struct object_id *oid,\n      -\t\t\tint flag, void *cb_data)\n     -+\t\t\tunsigned int unused_flags, void *cb_data)\n     ++\t\t\tunsigned int flag, void *cb_data)\n       {\n       \tstruct update_info_ctx *uic = cb_data;\n       \tstruct object *o = parse_object(the_repository, oid);\n     @@ shallow.c: static void paint_down(struct paint_info *info, const struct object_i\n       \n       static int mark_uninteresting(const char *refname, const struct object_id *oid,\n      -\t\t\t      int flags, void *cb_data)\n     -+\t\t\t      unsigned int unused_flags, void *cb_data)\n     ++\t\t\t      unsigned int flags, void *cb_data)\n       {\n       \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n       \t\t\t\t\t\t\t       oid, 1);\n     @@ shallow.c: struct commit_array {\n       \n       static int add_ref(const char *refname, const struct object_id *oid,\n      -\t\t   int flags, void *cb_data)\n     -+\t\t   unsigned int unused_flags, void *cb_data)\n     ++\t\t   unsigned int flags, void *cb_data)\n       {\n       \tstruct commit_array *ca = cb_data;\n       \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\n     @@ submodule.c: static void free_submodules_oids(struct string_list *submodules)\n       \n       static int has_remote(const char *refname, const struct object_id *oid,\n      -\t\t      int flags, void *cb_data)\n     -+\t\t      unsigned int unused_flags, void *cb_data)\n     ++\t\t      unsigned int flags, void *cb_data)\n       {\n       \treturn 1;\n       }\n     @@ submodule.c: int push_unpushed_submodules(struct repository *r,\n       \n       static int append_oid_to_array(const char *ref, const struct object_id *oid,\n      -\t\t\t       int flags, void *data)\n     -+\t\t\t       unsigned int unused_flags, void *data)\n     ++\t\t\t       unsigned int flags, void *data)\n       {\n       \tstruct oid_array *array = data;\n       \toid_array_append(array, oid);\n     @@ t/helper/test-ref-store.c: static int cmd_resolve_ref(struct ref_store *refs, co\n      -\tint flags;\n      +\tunsigned int flags;\n       \tconst char *ref;\n     - \tint ignore_errno;\n       \n     + \tref = refs_resolve_ref_unsafe(refs, refname, resolve_flags,\n      \n       ## transport-helper.c ##\n      @@ transport-helper.c: static int push_refs_with_export(struct transport *transport,\n     @@ transport-helper.c: static int push_refs_with_export(struct transport *transport\n       \t\t\t\tif (!ref->deletion) {\n       \t\t\t\t\tconst char *name;\n      -\t\t\t\t\tint flag;\n     -+\t\t\t\t\tunsigned int ref_flags;\n     ++\t\t\t\t\tunsigned int flag;\n       \n       \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n     --\t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n     --\t\t\t\t\t\t\t\t  RESOLVE_REF_READING,\n     --\t\t\t\t\t\t\t\t  &oid, &flag);\n     --\t\t\t\t\tif (!name || !(flag & REF_ISSYMREF))\n     -+\t\t\t\t\tname = resolve_ref_unsafe(\n     -+\t\t\t\t\t\tref->peer_ref->name,\n     -+\t\t\t\t\t\tRESOLVE_REF_READING, &oid,\n     -+\t\t\t\t\t\t&ref_flags);\n     -+\t\t\t\t\tif (!name ||\n     -+\t\t\t\t\t    !(ref_flags & REF_ISSYMREF))\n     - \t\t\t\t\t\tname = ref->peer_ref->name;\n     - \n     - \t\t\t\t\tstrbuf_addf(&buf, \"%s:%s\", name, ref->name);\n     + \t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n      \n       ## transport.c ##\n      @@ transport.c: static void set_upstreams(struct transport *transport, struct ref *refs,\n     @@ transport.c: static void set_upstreams(struct transport *transport, struct ref *\n       \t\tconst char *tmp;\n       \t\tconst char *remotename;\n      -\t\tint flag = 0;\n     -+\t\tunsigned int ref_flags = 0;\n     ++\t\tunsigned int flag = 0;\n       \t\t/*\n       \t\t * Check suitability for tracking. Must be successful /\n       \t\t * already up-to-date ref create/modify (not delete).\n     -@@ transport.c: static void set_upstreams(struct transport *transport, struct ref *refs,\n     - \t\t/* Follow symbolic refs (mainly for HEAD). */\n     - \t\tlocalname = ref->peer_ref->name;\n     - \t\tremotename = ref->name;\n     --\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING,\n     --\t\t\t\t\t NULL, &flag);\n     --\t\tif (tmp && flag & REF_ISSYMREF &&\n     --\t\t\tstarts_with(tmp, \"refs/heads/\"))\n     -+\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING, NULL,\n     -+\t\t\t\t\t &ref_flags);\n     -+\t\tif (tmp && ref_flags & REF_ISSYMREF &&\n     -+\t\t    starts_with(tmp, \"refs/heads/\"))\n     - \t\t\tlocalname = tmp;\n     - \n     - \t\t/* Both source and destination must be local branches. */\n      \n       ## upload-pack.c ##\n      @@ upload-pack.c: static void send_unshallow(struct upload_pack_data *data)\n     @@ upload-pack.c: static int mark_our_ref(const char *refname, const char *refname_\n       \n       static int check_ref(const char *refname_full, const struct object_id *oid,\n      -\t\t     int flag, void *cb_data)\n     -+\t\t     unsigned int unused_flags, void *cb_data)\n     ++\t\t     unsigned int flag, void *cb_data)\n       {\n       \tconst char *refname = strip_namespace(refname_full);\n       \n     @@ upload-pack.c: static void format_session_id(struct strbuf *buf, struct upload_p\n       \n       static int send_ref(const char *refname, const struct object_id *oid,\n      -\t\t    int flag, void *cb_data)\n     -+\t\t    unsigned int unused_flags, void *cb_data)\n     ++\t\t    unsigned int flag, void *cb_data)\n       {\n       \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n       \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n     @@ upload-pack.c: static int send_ref(const char *refname, const struct object_id *\n       \n       static int find_symref(const char *refname, const struct object_id *oid,\n      -\t\t       int flag, void *cb_data)\n     -+\t\t       unsigned int flags, void *cb_data)\n     ++\t\t       unsigned int flag, void *cb_data)\n       {\n       \tconst char *symref_target;\n       \tstruct string_list_item *item;\n     - \n     --\tif ((flag & REF_ISSYMREF) == 0)\n     -+\tif ((flags & REF_ISSYMREF) == 0)\n     - \t\treturn 0;\n     --\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flag);\n     --\tif (!symref_target || (flag & REF_ISSYMREF) == 0)\n     -+\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flags);\n     -+\tif (!symref_target || (flags & REF_ISSYMREF) == 0)\n     - \t\tdie(\"'%s' is a symref but it is not?\", refname);\n     - \titem = string_list_append(cb_data, strip_namespace(refname));\n     - \titem->util = xstrdup(strip_namespace(symref_target));\n      \n       ## walker.c ##\n      @@ walker.c: static int interpret_target(struct walker *walker, char *target, struct object_i\n     @@ walker.c: static int interpret_target(struct walker *walker, char *target, struc\n       \n       static int mark_complete(const char *path, const struct object_id *oid,\n      -\t\t\t int flag, void *cb_data)\n     -+\t\t\t unsigned int unused_flags, void *cb_data)\n     ++\t\t\t unsigned int flag, void *cb_data)\n       {\n       \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n       \t\t\t\t\t\t\t       oid, 1);\n     @@ worktree.c: void free_worktrees(struct worktree **worktrees)\n      -\tint flags;\n      +\tunsigned int flags;\n       \tconst char *target;\n     - \tint ignore_errno;\n       \n     + \ttarget = refs_resolve_ref_unsafe(get_worktree_ref_store(wt),\n      @@ worktree.c: const struct worktree *find_shared_symref(struct worktree **worktrees,\n       \t\tstruct worktree *wt = worktrees[i];\n       \t\tconst char *symref_target;\n       \t\tstruct ref_store *refs;\n      -\t\tint flags;\n      +\t\tunsigned int flags;\n     - \t\tint ignore_errno;\n       \n       \t\tif (wt->is_bare)\n     + \t\t\tcontinue;\n      @@ worktree.c: int other_head_refs(each_ref_fn fn, void *cb_data)\n       \tfor (p = worktrees; *p; p++) {\n       \t\tstruct worktree *wt = *p;\n       \t\tstruct object_id oid;\n      -\t\tint flag;\n     -+\t\tunsigned int flags;\n     - \t\tint ignore_errno;\n     ++\t\tunsigned int flag;\n       \n       \t\tif (wt->is_current)\n     -@@ worktree.c: int other_head_refs(each_ref_fn fn, void *cb_data)\n     - \t\tstrbuf_reset(&refname);\n     - \t\tstrbuf_worktree_ref(wt, &refname, \"HEAD\");\n     - \t\tif (refs_resolve_ref_unsafe(get_main_ref_store(the_repository),\n     --\t\t\t\t\t    refname.buf,\n     --\t\t\t\t\t    RESOLVE_REF_READING,\n     --\t\t\t\t\t    &oid, &flag, &ignore_errno))\n     --\t\t\tret = fn(refname.buf, &oid, flag, cb_data);\n     -+\t\t\t\t\t    refname.buf, RESOLVE_REF_READING,\n     -+\t\t\t\t\t    &oid, &flags, &ignore_errno))\n     -+\t\t\tret = fn(refname.buf, &oid, flags, cb_data);\n     - \t\tif (ret)\n     - \t\t\tbreak;\n     - \t}\n     + \t\t\tcontinue;\n -:  ----------- > 2:  e94a923a647 Uniformize flag argument naming to `flags` or `unused_flags`\n\n-- \ngitgitgadget\n"},{"id":"447612","messageId":"54dfe8d6a860c052aad0612a4af3668dc2c4367b.1643898412.git.gitgitgadget@gmail.com","threadId":"57344","inReplyTo":"pull.1210.v3.git.git.1643898412.gitgitgadget@gmail.com","subject":"[PATCH v3 1/2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2022-02-03T14:26:51Z","receivedAt":"2022-02-03T14:27:05Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"From: Han-Wen Nienhuys <hanwen@google.com>\n\nAs discussed in\nhttps://lore.kernel.org/git/xmqqbkzrkevo.fsf@gitster.g/ , we don't\nwant to treat the sign bit specially, so make all flags in refs.h\nunsigned.\n\nSigned-off-by: Han-Wen Nienhuys <hanwen@google.com>\n---\n bisect.c                    |  4 +--\n builtin/bisect--helper.c    |  7 ++---\n builtin/branch.c            |  4 +--\n builtin/checkout.c          |  9 ++++---\n builtin/describe.c          |  3 ++-\n builtin/fetch.c             | 10 +++----\n builtin/fsck.c              |  4 +--\n builtin/gc.c                |  5 ++--\n builtin/name-rev.c          |  3 ++-\n builtin/pack-objects.c      | 11 ++++----\n builtin/rebase.c            |  5 ++--\n builtin/receive-pack.c      |  4 +--\n builtin/reflog.c            |  5 ++--\n builtin/remote.c            | 13 +++++----\n builtin/repack.c            |  4 +--\n builtin/replace.c           |  4 +--\n builtin/rev-parse.c         |  6 +++--\n builtin/show-branch.c       |  6 ++---\n builtin/show-ref.c          |  4 +--\n builtin/stash.c             |  2 +-\n builtin/submodule--helper.c |  4 +--\n builtin/symbolic-ref.c      |  2 +-\n bundle.c                    |  2 +-\n commit-graph.c              |  5 ++--\n config.c                    |  2 +-\n delta-islands.c             |  2 +-\n fetch-pack.c                |  7 ++---\n help.c                      |  2 +-\n http-backend.c              |  4 +--\n log-tree.c                  |  4 +--\n ls-refs.c                   |  4 +--\n midx.c                      |  5 ++--\n negotiator/default.c        |  2 +-\n negotiator/skipping.c       |  2 +-\n notes.c                     |  5 ++--\n object-name.c               |  2 +-\n reachable.c                 |  2 +-\n ref-filter.c                |  3 ++-\n refs.c                      | 54 ++++++++++++++++++-------------------\n refs.h                      | 46 +++++++++++++++----------------\n refs/files-backend.c        | 17 ++++++------\n remote.c                    | 10 +++----\n replace-object.c            |  7 +++--\n revision.c                  |  8 +++---\n server-info.c               |  2 +-\n shallow.c                   |  4 +--\n submodule.c                 |  4 +--\n t/helper/test-ref-store.c   |  4 +--\n transport-helper.c          |  2 +-\n transport.c                 |  2 +-\n upload-pack.c               |  8 +++---\n walker.c                    |  2 +-\n worktree.c                  |  6 ++---\n 53 files changed, 176 insertions(+), 172 deletions(-)\n\ndiff --git a/bisect.c b/bisect.c\nindex 9e6a2b7f201..44af2081987 100644\n--- a/bisect.c\n+++ b/bisect.c\n@@ -441,7 +441,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,\n }\n \n static int register_ref(const char *refname, const struct object_id *oid,\n-\t\t\tint flags, void *cb_data)\n+\t\t\tunsigned int flags, void *cb_data)\n {\n \tstruct strbuf good_prefix = STRBUF_INIT;\n \tstrbuf_addstr(&good_prefix, term_good);\n@@ -1147,7 +1147,7 @@ int estimate_bisect_steps(int all)\n }\n \n static int mark_for_removal(const char *refname, const struct object_id *oid,\n-\t\t\t    int flag, void *cb_data)\n+\t\t\t    unsigned int flag, void *cb_data)\n {\n \tstruct string_list *refs = cb_data;\n \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\ndiff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c\nindex 36143ac0261..e8b0c049f34 100644\n--- a/builtin/bisect--helper.c\n+++ b/builtin/bisect--helper.c\n@@ -330,7 +330,7 @@ static int check_and_set_terms(struct bisect_terms *terms, const char *cmd)\n }\n \n static int mark_good(const char *refname, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int flag, void *cb_data)\n {\n \tint *m_good = (int *)cb_data;\n \t*m_good = 0;\n@@ -477,7 +477,7 @@ finish:\n }\n \n static int add_bisect_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  int flags, void *cb)\n+\t\t\t  unsigned int flags, void *cb)\n {\n \tstruct add_bisect_ref_data *data = cb;\n \n@@ -617,7 +617,8 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \tint no_checkout = 0;\n \tint first_parent_only = 0;\n \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n-\tint flags, pathspec_pos;\n+\tint pathspec_pos;\n+\tunsigned int flags;\n \tenum bisect_error res = BISECT_OK;\n \tstruct string_list revs = STRING_LIST_INIT_DUP;\n \tstruct string_list states = STRING_LIST_INIT_DUP;\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 5d00d0b8d32..623ace2f917 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -246,7 +246,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,\n \n \tfor (i = 0; i < argc; i++, strbuf_reset(&bname)) {\n \t\tchar *target = NULL;\n-\t\tint flags = 0;\n+\t\tunsigned int flags = 0;\n \n \t\tstrbuf_branchname(&bname, argv[i], allowed_interpret);\n \t\tfree(name);\n@@ -481,7 +481,7 @@ static void print_ref_list(struct ref_filter *filter, struct ref_sorting *sortin\n \n static void print_current_branch_name(void)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname = resolve_ref_unsafe(\"HEAD\", 0, NULL, &flags);\n \tconst char *shortname;\n \tif (!refname)\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex 24c85157ae9..742c4ac2ab7 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -974,7 +974,7 @@ static void update_refs_for_switch(const struct checkout_opts *opts,\n \n static int add_pending_uninteresting_ref(const char *refname,\n \t\t\t\t\t const struct object_id *oid,\n-\t\t\t\t\t int flags, void *cb_data)\n+\t\t\t\t\t unsigned int flags, void *cb_data)\n {\n \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n \treturn 0;\n@@ -1083,7 +1083,8 @@ static int switch_branches(const struct checkout_opts *opts,\n \tint ret = 0;\n \tstruct branch_info old_branch_info = { 0 };\n \tstruct object_id rev;\n-\tint flag, writeout_error = 0;\n+\tint writeout_error = 0;\n+\tunsigned int flag;\n \tint do_merge = 1;\n \n \ttrace2_cmd_mode(\"branch\");\n@@ -1509,7 +1510,7 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n \t    !opts->ignore_other_worktrees) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n \t\tif (head_ref &&\n \t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n@@ -1519,7 +1520,7 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (!new_branch_info->commit && opts->new_branch) {\n \t\tstruct object_id rev;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n \t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 42159cd26bd..5fa5b0bb424 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -140,7 +140,8 @@ static void add_to_known_names(const char *path,\n \t}\n }\n \n-static int get_name(const char *path, const struct object_id *oid, int flag, void *cb_data)\n+static int get_name(const char *path, const struct object_id *oid,\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tint is_tag = 0;\n \tstruct object_id peeled;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 911c9fa0905..0d2eab174c4 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -324,9 +324,8 @@ static struct refname_hash_entry *refname_hash_add(struct hashmap *map,\n \treturn ent;\n }\n \n-static int add_one_refname(const char *refname,\n-\t\t\t   const struct object_id *oid,\n-\t\t\t   int flag, void *cbdata)\n+static int add_one_refname(const char *refname, const struct object_id *oid,\n+\t\t\t   unsigned int flag, void *cbdata)\n {\n \tstruct hashmap *refname_map = cbdata;\n \n@@ -1430,9 +1429,8 @@ static void set_option(struct transport *transport, const char *name, const char\n \t\t\tname, transport->url);\n }\n \n-\n-static int add_oid(const char *refname, const struct object_id *oid, int flags,\n-\t\t   void *cb_data)\n+static int add_oid(const char *refname, const struct object_id *oid,\n+\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct oid_array *oids = cb_data;\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 9e54892311d..8e3f773e3dd 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -502,7 +502,7 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid\n }\n \n static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct strbuf refname = STRBUF_INIT;\n \n@@ -513,7 +513,7 @@ static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n }\n \n static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int flag, void *cb_data)\n {\n \tstruct object *obj;\n \ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex ffaf0daf5d9..1c045962766 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -769,9 +769,8 @@ struct cg_auto_data {\n \tint limit;\n };\n \n-static int dfs_on_ref(const char *refname,\n-\t\t      const struct object_id *oid, int flags,\n-\t\t      void *cb_data)\n+static int dfs_on_ref(const char *refname, const struct object_id *oid,\n+\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n \tint result = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 138e3c30a2b..93f622331fb 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -305,7 +305,8 @@ static int cmp_by_tag_and_age(const void *a_, const void *b_)\n \treturn a->taggerdate != b->taggerdate;\n }\n \n-static int name_ref(const char *path, const struct object_id *oid, int flags, void *cb_data)\n+static int name_ref(const char *path, const struct object_id *oid,\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct object *o = parse_object(the_repository, oid);\n \tstruct name_ref_data *data = cb_data;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 47358ee1a81..7af3cbf9688 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -758,8 +758,8 @@ static enum write_one_status write_one(struct hashfile *f,\n \treturn WRITE_ONE_WRITTEN;\n }\n \n-static int mark_tagged(const char *path, const struct object_id *oid, int flag,\n-\t\t       void *cb_data)\n+static int mark_tagged(const char *path, const struct object_id *oid,\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n@@ -3012,7 +3012,8 @@ static void add_tag_chain(const struct object_id *oid)\n \t}\n }\n \n-static int add_ref_tag(const char *tag, const struct object_id *oid, int flag, void *cb_data)\n+static int add_ref_tag(const char *tag, const struct object_id *oid,\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object_id peeled;\n \n@@ -3684,8 +3685,8 @@ static void record_recent_commit(struct commit *commit, void *data)\n }\n \n static int mark_bitmap_preferred_tip(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int flags, void *_data)\n {\n \tstruct object_id peeled;\n \tstruct object *object;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex b29ad2b65e7..d4015b72610 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1024,7 +1024,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\n-\tint ret, flags, total_argc, in_progress = 0;\n+\tint ret, total_argc, in_progress = 0;\n+\tunsigned int flags;\n \tint keep_base = 0;\n \tint ok_to_skip_pre_rebase = 0;\n \tstruct strbuf msg = STRBUF_INIT;\n@@ -1695,7 +1696,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n \t\t    &options.orig_head, &merge_base) &&\n \t    allow_preemptive_ff) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (!(options.flags & REBASE_FORCE)) {\n \t\t\t/* Lazily switch to the target branch if needed... */\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex b8a7a69c004..b189487a17b 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -291,7 +291,7 @@ static void show_ref(const char *path, const struct object_id *oid)\n }\n \n static int show_ref_cb(const char *path_full, const struct object_id *oid,\n-\t\t       int flag, void *data)\n+\t\t       unsigned int flag, void *data)\n {\n \tstruct oidset *seen = data;\n \tconst char *path = strip_namespace(path_full);\n@@ -1691,7 +1691,7 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tconst char *dst_name;\n-\tint flag;\n+\tunsigned int flag;\n \n \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n \tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex c8f2b318731..278e895cc57 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -335,7 +335,7 @@ static int should_expire_reflog_ent_verbose(struct object_id *ooid,\n }\n \n static int push_tip_to_list(const char *refname, const struct object_id *oid,\n-\t\t\t    int flags, void *cb_data)\n+\t\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct commit_list **list = cb_data;\n \tstruct commit *tip_commit;\n@@ -416,7 +416,8 @@ static void reflog_expiry_cleanup(void *cb_data)\n \t}\n }\n \n-static int collect_reflog(const char *ref, const struct object_id *oid, int unused, void *cb_data)\n+static int collect_reflog(const char *ref, const struct object_id *oid,\n+\t\t\t  unsigned int unused, void *cb_data)\n {\n \tstruct worktree_reflogs *cb = cb_data;\n \tstruct worktree *worktree = cb->worktree;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 6f27ddc47bd..92ac729aeab 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -533,7 +533,8 @@ struct branches_for_remote {\n };\n \n static int add_branch_for_removal(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t  const struct object_id *oid,\n+\t\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct branches_for_remote *branches = cb_data;\n \tstruct refspec_item refspec;\n@@ -574,12 +575,13 @@ struct rename_info {\n };\n \n static int read_remote_branches(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\tconst struct object_id *oid, unsigned int flags,\n+\t\t\t\tvoid *cb_data)\n {\n \tstruct rename_info *rename = cb_data;\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct string_list_item *item;\n-\tint flag;\n+\tunsigned int flag;\n \tconst char *symref;\n \n \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n@@ -766,7 +768,7 @@ static int mv(int argc, const char **argv)\n \tfor_each_ref(read_remote_branches, &rename);\n \tfor (i = 0; i < remote_branches.nr; i++) {\n \t\tstruct string_list_item *item = remote_branches.items + i;\n-\t\tint flag = 0;\n+\t\tunsigned int flag = 0;\n \n \t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n \t\tif (!(flag & REF_ISSYMREF))\n@@ -923,7 +925,8 @@ static void free_remote_ref_states(struct ref_states *states)\n }\n \n static int append_ref_to_tracked_list(const char *refname,\n-\tconst struct object_id *oid, int flags, void *cb_data)\n+\t\t\t\t      const struct object_id *oid,\n+\t\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct ref_states *states = cb_data;\n \tstruct refspec_item refspec;\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex da1e364a756..ff6ddc0f357 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -464,8 +464,8 @@ struct midx_snapshot_ref_data {\n };\n \n static int midx_snapshot_ref_one(const char *refname,\n-\t\t\t\t const struct object_id *oid,\n-\t\t\t\t int flag, void *_data)\n+\t\t\t\t const struct object_id *oid, unsigned int flag,\n+\t\t\t\t void *_data)\n {\n \tstruct midx_snapshot_ref_data *data = _data;\n \tstruct object_id peeled;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 5068f4f0b2a..26bc9daba35 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -40,8 +40,8 @@ struct show_data {\n };\n \n static int show_reference(struct repository *r, const char *refname,\n-\t\t\t  const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  const struct object_id *oid, unsigned int flag,\n+\t\t\t  void *cb_data)\n {\n \tstruct show_data *data = cb_data;\n \ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 8480a59f573..b842c958f20 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -195,7 +195,8 @@ static int show_default(void)\n \treturn 0;\n }\n \n-static int show_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int show_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tif (ref_excluded(ref_excludes, refname))\n \t\treturn 0;\n@@ -203,7 +204,8 @@ static int show_reference(const char *refname, const struct object_id *oid, int\n \treturn 0;\n }\n \n-static int anti_reference(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int anti_reference(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tshow_rev(REVERSED, oid, refname);\n \treturn 0;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex e12c5e80e3e..625ba0c28ce 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -403,7 +403,7 @@ static int append_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   int flag, void *cb_data)\n+\t\t\t   unsigned int flag, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 11;\n@@ -418,7 +418,7 @@ static int append_head_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_remote_ref(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int flag, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 13;\n@@ -444,7 +444,7 @@ static const char *match_ref_pattern = NULL;\n static int match_ref_slash = 0;\n \n static int append_matching_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flag, void *cb_data)\n+\t\t\t       unsigned int flag, void *cb_data)\n {\n \t/* we want to allow pattern hold/<asterisk> to show all\n \t * branches under refs/heads/hold/, and v0.99.9? to show\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 7f8a5332f83..09b708daf5b 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -47,7 +47,7 @@ static void show_one(const char *refname, const struct object_id *oid)\n }\n \n static int show_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cbdata)\n+\t\t    unsigned int flag, void *cbdata)\n {\n \tif (show_head && !strcmp(refname, \"HEAD\"))\n \t\tgoto match;\n@@ -86,7 +86,7 @@ match:\n }\n \n static int add_existing(const char *refname, const struct object_id *oid,\n-\t\t\tint flag, void *cbdata)\n+\t\t\tunsigned int flag, void *cbdata)\n {\n \tstruct string_list *list = (struct string_list *)cbdata;\n \tstring_list_insert(list, refname);\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex 5897febfbec..057cab984dd 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1291,7 +1291,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b\n \t\t\t   int quiet)\n {\n \tint ret = 0;\n-\tint flags = 0;\n+\tunsigned int flags = 0;\n \tint untracked_commit_option = 0;\n \tconst char *head_short_sha1 = NULL;\n \tconst char *branch_ref = NULL;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex c380d64e99f..320ecd04117 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -740,8 +740,8 @@ static void print_status(unsigned int flags, char state, const char *path,\n }\n \n static int handle_submodule_head_ref(const char *refname,\n-\t\t\t\t     const struct object_id *oid, int flags,\n-\t\t\t\t     void *cb_data)\n+\t\t\t\t     const struct object_id *oid,\n+\t\t\t\t     unsigned int flags, void *cb_data)\n {\n \tstruct object_id *output = cb_data;\n \tif (oid)\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex e547a08d6c7..1ad2997e979 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -12,7 +12,7 @@ static const char * const git_symbolic_ref_usage[] = {\n \n static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n {\n-\tint flag;\n+\tunsigned int flag;\n \tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n \n \tif (!refname)\ndiff --git a/bundle.c b/bundle.c\nindex a0bb687b0f4..da4442d4f1a 100644\n--- a/bundle.c\n+++ b/bundle.c\n@@ -371,7 +371,7 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n \t\tstruct object_id oid;\n \t\tchar *ref;\n \t\tconst char *display_ref;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (e->item->flags & UNINTERESTING)\n \t\t\tcontinue;\ndiff --git a/commit-graph.c b/commit-graph.c\nindex 265c010122e..1a7d1bb154d 100644\n--- a/commit-graph.c\n+++ b/commit-graph.c\n@@ -1636,9 +1636,8 @@ struct refs_cb_data {\n \tstruct progress *progress;\n };\n \n-static int add_ref_to_set(const char *refname,\n-\t\t\t  const struct object_id *oid,\n-\t\t\t  int flags, void *cb_data)\n+static int add_ref_to_set(const char *refname, const struct object_id *oid,\n+\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct refs_cb_data *data = (struct refs_cb_data *)cb_data;\ndiff --git a/config.c b/config.c\nindex 3f6a30a7db7..db33ab06899 100644\n--- a/config.c\n+++ b/config.c\n@@ -293,7 +293,7 @@ done:\n \n static int include_by_branch(const char *cond, size_t cond_len)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tint ret;\n \tstruct strbuf pattern = STRBUF_INIT;\n \tconst char *refname = !the_repository->gitdir ?\ndiff --git a/delta-islands.c b/delta-islands.c\nindex aa98b2e5414..dba5454ba01 100644\n--- a/delta-islands.c\n+++ b/delta-islands.c\n@@ -365,7 +365,7 @@ static void add_ref_to_island(const char *island_name, const struct object_id *o\n }\n \n static int find_island_for_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int flags, void *data)\n {\n \t/*\n \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\ndiff --git a/fetch-pack.c b/fetch-pack.c\nindex dbcaaf4dbb2..19671a30089 100644\n--- a/fetch-pack.c\n+++ b/fetch-pack.c\n@@ -164,8 +164,9 @@ static int rev_list_insert_ref(struct fetch_negotiator *negotiator,\n \treturn 0;\n }\n \n-static int rev_list_insert_ref_oid(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb_data)\n+static int rev_list_insert_ref_oid(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flag, void *cb_data)\n {\n \treturn rev_list_insert_ref(cb_data, oid);\n }\n@@ -548,7 +549,7 @@ static int mark_complete(const struct object_id *oid)\n }\n \n static int mark_complete_oid(const char *refname, const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     unsigned int flag, void *cb_data)\n {\n \treturn mark_complete(oid);\n }\ndiff --git a/help.c b/help.c\nindex 9112a51e84b..e79f45c1b1c 100644\n--- a/help.c\n+++ b/help.c\n@@ -732,7 +732,7 @@ struct similar_ref_cb {\n };\n \n static int append_similar_ref(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct similar_ref_cb *cb = (struct similar_ref_cb *)(cb_data);\n \tchar *branch = strrchr(refname, '/') + 1;\ndiff --git a/http-backend.c b/http-backend.c\nindex 807fb8839e7..c8757e601d1 100644\n--- a/http-backend.c\n+++ b/http-backend.c\n@@ -504,7 +504,7 @@ static void run_service(const char **argv, int buffer_input)\n }\n \n static int show_text_ref(const char *name, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tconst char *name_nons = strip_namespace(name);\n \tstruct strbuf *buf = cb_data;\n@@ -559,7 +559,7 @@ static void get_info_refs(struct strbuf *hdr, char *arg)\n }\n \n static int show_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct strbuf *buf = cb_data;\n \ndiff --git a/log-tree.c b/log-tree.c\nindex 38e5cccc1a1..555a08b45c0 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -135,7 +135,7 @@ static int ref_filter_match(const char *refname,\n }\n \n static int add_ref_decoration(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct object *obj;\n \tenum object_type objtype;\n@@ -245,7 +245,7 @@ static const struct name_decoration *current_pointed_by_HEAD(const struct name_d\n {\n \tconst struct name_decoration *list, *head = NULL;\n \tconst char *branch_name = NULL;\n-\tint rru_flags;\n+\tunsigned int rru_flags;\n \n \t/* First find HEAD */\n \tfor (list = decoration; list; list = list->next)\ndiff --git a/ls-refs.c b/ls-refs.c\nindex 98e69373c84..42ba85b371b 100644\n--- a/ls-refs.c\n+++ b/ls-refs.c\n@@ -77,7 +77,7 @@ struct ls_refs_data {\n };\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tstruct ls_refs_data *data = cb_data;\n \tconst char *refname_nons = strip_namespace(refname);\n@@ -123,7 +123,7 @@ static void send_possibly_unborn_head(struct ls_refs_data *data)\n {\n \tstruct strbuf namespaced = STRBUF_INIT;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \tint oid_is_null;\n \n \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\ndiff --git a/midx.c b/midx.c\nindex 6e6cb0eb049..41cad25e099 100644\n--- a/midx.c\n+++ b/midx.c\n@@ -938,9 +938,8 @@ static void prepare_midx_packing_data(struct packing_data *pdata,\n \t}\n }\n \n-static int add_ref_to_pending(const char *refname,\n-\t\t\t      const struct object_id *oid,\n-\t\t\t      int flag, void *cb_data)\n+static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info*)cb_data;\n \tstruct object *object;\ndiff --git a/negotiator/default.c b/negotiator/default.c\nindex 434189ae5dc..3f911f6b633 100644\n--- a/negotiator/default.c\n+++ b/negotiator/default.c\n@@ -36,7 +36,7 @@ static void rev_list_push(struct negotiation_state *ns,\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/negotiator/skipping.c b/negotiator/skipping.c\nindex 1236e792248..0e6f72987c1 100644\n--- a/negotiator/skipping.c\n+++ b/negotiator/skipping.c\n@@ -72,7 +72,7 @@ static struct entry *rev_list_push(struct data *data, struct commit *commit, int\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/notes.c b/notes.c\nindex 7452e71cc8d..e9638a40f0e 100644\n--- a/notes.c\n+++ b/notes.c\n@@ -924,8 +924,9 @@ out:\n \treturn ret;\n }\n \n-static int string_list_add_one_ref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flag, void *cb)\n+static int string_list_add_one_ref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flag, void *cb)\n {\n \tstruct string_list *refs = cb;\n \tif (!unsorted_string_list_has_string(refs, refname))\ndiff --git a/object-name.c b/object-name.c\nindex 0230a874166..5561365c9a1 100644\n--- a/object-name.c\n+++ b/object-name.c\n@@ -1305,7 +1305,7 @@ struct handle_one_ref_cb {\n };\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tstruct handle_one_ref_cb *cb = cb_data;\n \tstruct commit_list **list = cb->list;\ndiff --git a/reachable.c b/reachable.c\nindex 84e3d0d75ed..74e8ee81bbe 100644\n--- a/reachable.c\n+++ b/reachable.c\n@@ -27,7 +27,7 @@ static void update_progress(struct connectivity_progress *cp)\n }\n \n static int add_one_ref(const char *path, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info *)cb_data;\n \tstruct object *object;\ndiff --git a/ref-filter.c b/ref-filter.c\nindex f7a2f17bfd9..f51779bd725 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -2233,7 +2233,8 @@ struct ref_filter_cbdata {\n  * A call-back given to for_each_ref().  Filter refs and keep them for\n  * later object processing.\n  */\n-static int ref_filter_handler(const char *refname, const struct object_id *oid, int flag, void *cb_data)\n+static int ref_filter_handler(const char *refname, const struct object_id *oid,\n+\t\t\t      unsigned int flag, void *cb_data)\n {\n \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n \tstruct ref_filter *filter = ref_cbdata->filter;\ndiff --git a/refs.c b/refs.c\nindex d680de3bc04..2ca398b8527 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -74,7 +74,7 @@ static unsigned char refname_disposition[256] = {\n  * as an error, try to come up with a usable replacement for the input\n  * refname in it.\n  */\n-static int check_refname_component(const char *refname, int *flags,\n+static int check_refname_component(const char *refname, unsigned int *flags,\n \t\t\t\t   struct strbuf *sanitized)\n {\n \tconst char *cp;\n@@ -158,7 +158,7 @@ out:\n \treturn cp - refname;\n }\n \n-static int check_or_sanitize_refname(const char *refname, int flags,\n+static int check_or_sanitize_refname(const char *refname, unsigned int flags,\n \t\t\t\t     struct strbuf *sanitized)\n {\n \tint component_len, component_count = 0;\n@@ -202,7 +202,7 @@ static int check_or_sanitize_refname(const char *refname, int flags,\n \treturn 0;\n }\n \n-int check_refname_format(const char *refname, int flags)\n+int check_refname_format(const char *refname, unsigned int flags)\n {\n \treturn check_or_sanitize_refname(refname, flags, NULL);\n }\n@@ -264,9 +264,9 @@ int ref_resolves_to_object(const char *refname,\n \treturn 1;\n }\n \n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags)\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags)\n {\n \tconst char *result;\n \n@@ -275,8 +275,8 @@ char *refs_resolve_refdup(struct ref_store *refs,\n \treturn xstrdup_or_null(result);\n }\n \n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags)\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags)\n {\n \treturn refs_resolve_refdup(get_main_ref_store(the_repository),\n \t\t\t\t   refname, resolve_flags,\n@@ -291,7 +291,8 @@ struct ref_filter {\n \tvoid *cb_data;\n };\n \n-int read_ref_full(const char *refname, int resolve_flags, struct object_id *oid, int *flags)\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags)\n {\n \tstruct ref_store *refs = get_main_ref_store(the_repository);\n \n@@ -318,7 +319,7 @@ int ref_exists(const char *refname)\n }\n \n static int filter_refs(const char *refname, const struct object_id *oid,\n-\t\t\t   int flags, void *data)\n+\t\t       unsigned int flags, void *data)\n {\n \tstruct ref_filter *filter = (struct ref_filter *)data;\n \n@@ -357,8 +358,9 @@ struct warn_if_dangling_data {\n \tconst char *msg_fmt;\n };\n \n-static int warn_if_dangling_symref(const char *refname, const struct object_id *oid,\n-\t\t\t\t   int flags, void *cb_data)\n+static int warn_if_dangling_symref(const char *refname,\n+\t\t\t\t   const struct object_id *oid,\n+\t\t\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct warn_if_dangling_data *d = cb_data;\n \tconst char *resolves_to;\n@@ -436,7 +438,7 @@ int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n \tstruct strbuf buf = STRBUF_INIT;\n \tint ret = 0;\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \n \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n \tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n@@ -651,7 +653,7 @@ int expand_ref(struct repository *repo, const char *str, int len,\n \tfor (p = ref_rev_parse_rules; *p; p++) {\n \t\tstruct object_id oid_from_ref;\n \t\tstruct object_id *this_result;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \t\tstruct ref_store *refs = get_main_ref_store(repo);\n \n \t\tthis_result = refs_found ? &oid_from_ref : oid;\n@@ -1384,7 +1386,7 @@ const char *find_descendant_ref(const char *dirname,\n int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n {\n \tstruct object_id oid;\n-\tint flag;\n+\tunsigned int flag;\n \n \tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n \t\t\t\t    &oid, &flag))\n@@ -1461,11 +1463,9 @@ struct do_for_each_ref_help {\n \tvoid *cb_data;\n };\n \n-static int do_for_each_ref_helper(struct repository *r,\n-\t\t\t\t  const char *refname,\n+static int do_for_each_ref_helper(struct repository *r, const char *refname,\n \t\t\t\t  const struct object_id *oid,\n-\t\t\t\t  int flags,\n-\t\t\t\t  void *cb_data)\n+\t\t\t\t  unsigned int flags, void *cb_data)\n {\n \tstruct do_for_each_ref_help *hp = cb_data;\n \n@@ -1672,15 +1672,13 @@ int refs_read_raw_ref(struct ref_store *ref_store, const char *refname,\n \t\t\t\t\t   type, failure_errno);\n }\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags)\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    unsigned int resolve_flags,\n+\t\t\t\t    struct object_id *oid, unsigned int *flags)\n {\n \tstatic struct strbuf sb_refname = STRBUF_INIT;\n \tstruct object_id unused_oid;\n-\tint unused_flags;\n+\tunsigned int unused_flags;\n \tint symref_count;\n \n \tif (!oid)\n@@ -1769,8 +1767,8 @@ int refs_init_db(struct strbuf *err)\n \treturn refs->be->init_db(refs, err);\n }\n \n-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags)\n+const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n+\t\t\t       struct object_id *oid, unsigned int *flags)\n {\n \treturn refs_resolve_ref_unsafe(get_main_ref_store(the_repository), refname,\n \t\t\t\t       resolve_flags, oid, flags);\n@@ -1780,7 +1778,7 @@ int resolve_gitlink_ref(const char *submodule, const char *refname,\n \t\t\tstruct object_id *oid)\n {\n \tstruct ref_store *refs;\n-\tint flags;\n+\tunsigned int flags;\n \n \trefs = get_submodule_ref_store(submodule);\n \ndiff --git a/refs.h b/refs.h\nindex ff859d59513..82c3ba1fc56 100644\n--- a/refs.h\n+++ b/refs.h\n@@ -63,23 +63,21 @@ struct worktree;\n #define RESOLVE_REF_NO_RECURSE 0x02\n #define RESOLVE_REF_ALLOW_BAD_NAME 0x04\n \n-const char *refs_resolve_ref_unsafe(struct ref_store *refs,\n-\t\t\t\t    const char *refname,\n-\t\t\t\t    int resolve_flags,\n-\t\t\t\t    struct object_id *oid,\n-\t\t\t\t    int *flags);\n-\n-const char *resolve_ref_unsafe(const char *refname, int resolve_flags,\n-\t\t\t       struct object_id *oid, int *flags);\n-\n-char *refs_resolve_refdup(struct ref_store *refs,\n-\t\t\t  const char *refname, int resolve_flags,\n-\t\t\t  struct object_id *oid, int *flags);\n-char *resolve_refdup(const char *refname, int resolve_flags,\n-\t\t     struct object_id *oid, int *flags);\n-\n-int read_ref_full(const char *refname, int resolve_flags,\n-\t\t  struct object_id *oid, int *flags);\n+const char *refs_resolve_ref_unsafe(struct ref_store *refs, const char *refname,\n+\t\t\t\t    unsigned int resolve_flags,\n+\t\t\t\t    struct object_id *oid, unsigned int *flags);\n+\n+const char *resolve_ref_unsafe(const char *refname, unsigned int resolve_flags,\n+\t\t\t       struct object_id *oid, unsigned int *flags);\n+\n+char *refs_resolve_refdup(struct ref_store *refs, const char *refname,\n+\t\t\t  unsigned int resolve_flags, struct object_id *oid,\n+\t\t\t  unsigned int *flags);\n+char *resolve_refdup(const char *refname, unsigned int resolve_flags,\n+\t\t     struct object_id *oid, unsigned int *flags);\n+\n+int read_ref_full(const char *refname, unsigned int resolve_flags,\n+\t\t  struct object_id *oid, unsigned int *flags);\n int read_ref(const char *refname, struct object_id *oid);\n \n /*\n@@ -293,17 +291,15 @@ struct ref_transaction;\n  * arguments is only guaranteed to be valid for the duration of a\n  * single callback invocation.\n  */\n-typedef int each_ref_fn(const char *refname,\n-\t\t\tconst struct object_id *oid, int flags, void *cb_data);\n+typedef int each_ref_fn(const char *refname, const struct object_id *oid,\n+\t\t\tunsigned int flags, void *cb_data);\n \n /*\n  * The same as each_ref_fn, but also with a repository argument that\n  * contains the repository associated with the callback.\n  */\n-typedef int each_repo_ref_fn(struct repository *r,\n-\t\t\t     const char *refname,\n-\t\t\t     const struct object_id *oid,\n-\t\t\t     int flags,\n+typedef int each_repo_ref_fn(struct repository *r, const char *refname,\n+\t\t\t     const struct object_id *oid, unsigned int flags,\n \t\t\t     void *cb_data);\n \n /*\n@@ -527,7 +523,7 @@ int for_each_reflog(each_ref_fn fn, void *cb_data);\n  * allow a single \"*\" wildcard character in the refspec. No leading or\n  * repeated slashes are accepted.\n  */\n-int check_refname_format(const char *refname, int flags);\n+int check_refname_format(const char *refname, unsigned int flags);\n \n /*\n  * Apply the rules from check_refname_format, but mutate the result until it\n@@ -897,7 +893,7 @@ struct ref_store *get_main_ref_store(struct repository *r);\n  *\n  * ----\n  * static int handle_remote_ref(const char *refname,\n- * \t\tconst unsigned char *sha1, int flags, void *cb_data)\n+ * \t\tconst unsigned char *sha1, unsigned int flags, void *cb_data)\n  * {\n  * \tstruct strbuf *output = cb_data;\n  * \tstrbuf_addf(output, \"%s\\n\", refname);\ndiff --git a/refs/files-backend.c b/refs/files-backend.c\nindex f59589d6cce..b3149ca493b 100644\n--- a/refs/files-backend.c\n+++ b/refs/files-backend.c\n@@ -261,7 +261,7 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \twhile ((de = readdir(d)) != NULL) {\n \t\tstruct object_id oid;\n \t\tstruct stat st;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (de->d_name[0] == '.')\n \t\t\tcontinue;\n@@ -1399,7 +1399,8 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \tstruct files_ref_store *refs =\n \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n \tstruct object_id orig_oid;\n-\tint flag = 0, logmoved = 0;\n+\tint logmoved = 0;\n+\tunsigned int flag = 0;\n \tstruct ref_lock *lock;\n \tstruct stat loginfo;\n \tstruct strbuf sb_oldref = STRBUF_INIT;\n@@ -1833,7 +1834,7 @@ static int commit_ref_update(struct files_ref_store *refs,\n \t\t * check with HEAD only which should cover 99% of all usage\n \t\t * scenarios (even 100% of the default ones).\n \t\t */\n-\t\tint head_flag;\n+\t\tunsigned int head_flag;\n \t\tconst char *head_ref;\n \n \t\thead_ref = refs_resolve_ref_unsafe(&refs->base, \"HEAD\",\n@@ -2161,7 +2162,7 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)\n \tint ok;\n \n \twhile ((ok = dir_iterator_advance(diter)) == ITER_OK) {\n-\t\tint flags;\n+\t\tunsigned int flags;\n \n \t\tif (!S_ISREG(diter->st.st_mode))\n \t\t\tcontinue;\n@@ -2668,7 +2669,7 @@ static int files_transaction_prepare(struct ref_store *ref_store,\n \tint ret = 0;\n \tstruct string_list affected_refnames = STRING_LIST_INIT_NODUP;\n \tchar *head_ref = NULL;\n-\tint head_type;\n+\tunsigned int head_type;\n \tstruct files_transaction_backend_data *backend_data;\n \tstruct ref_transaction *packed_transaction = NULL;\n \n@@ -2982,8 +2983,8 @@ static int files_transaction_abort(struct ref_store *ref_store,\n \treturn 0;\n }\n \n-static int ref_present(const char *refname,\n-\t\t       const struct object_id *oid, int flags, void *cb_data)\n+static int ref_present(const char *refname, const struct object_id *oid,\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tstruct string_list *affected_refnames = cb_data;\n \n@@ -3209,7 +3210,7 @@ static int files_reflog_expire(struct ref_store *ref_store,\n \n \t\tif ((expire_flags & EXPIRE_REFLOGS_UPDATE_REF) &&\n \t\t    !is_null_oid(&cb.last_kept_oid)) {\n-\t\t\tint type;\n+\t\t\tunsigned int type;\n \t\t\tconst char *ref;\n \n \t\t\tref = refs_resolve_ref_unsafe(&refs->base, refname,\ndiff --git a/remote.c b/remote.c\nindex c97c626eaa8..ff21b77f643 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -500,7 +500,7 @@ static void alias_all_urls(struct remote_state *remote_state)\n \n static void read_config(struct repository *repo)\n {\n-\tint flag;\n+\tunsigned int flag;\n \n \tif (repo->remote_state->initialized)\n \t\treturn;\n@@ -1271,7 +1271,7 @@ static int match_explicit(struct ref *src, struct ref *dst,\n \t\treturn -1;\n \n \tif (!dst_value) {\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tdst_value = resolve_ref_unsafe(matched_src->name,\n \t\t\t\t\t       RESOLVE_REF_READING,\n@@ -1947,7 +1947,7 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)\n \n static int ignore_symref_update(const char *refname)\n {\n-\tint flag;\n+\tunsigned int flag;\n \n \tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n \t\treturn 0; /* non-existing refs are OK */\n@@ -2287,7 +2287,7 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,\n }\n \n static int one_local_ref(const char *refname, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct ref ***local_tail = cb_data;\n \tstruct ref *ref;\n@@ -2368,7 +2368,7 @@ struct stale_heads_info {\n };\n \n static int get_stale_heads_cb(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct stale_heads_info *info = cb_data;\n \tstruct string_list matches = STRING_LIST_INIT_DUP;\ndiff --git a/replace-object.c b/replace-object.c\nindex 7bd9aba6ee6..1a9ed348661 100644\n--- a/replace-object.c\n+++ b/replace-object.c\n@@ -6,10 +6,9 @@\n #include \"repository.h\"\n #include \"commit.h\"\n \n-static int register_replace_ref(struct repository *r,\n-\t\t\t\tconst char *refname,\n-\t\t\t\tconst struct object_id *oid,\n-\t\t\t\tint flag, void *cb_data)\n+static int register_replace_ref(struct repository *r, const char *refname,\n+\t\t\t\tconst struct object_id *oid, unsigned int flag,\n+\t\t\t\tvoid *cb_data)\n {\n \t/* Get sha1 from refname */\n \tconst char *slash = strrchr(refname, '/');\ndiff --git a/revision.c b/revision.c\nindex 648f63fbb26..ccdb069af1a 100644\n--- a/revision.c\n+++ b/revision.c\n@@ -1535,7 +1535,7 @@ int ref_excluded(struct string_list *ref_excludes, const char *path)\n }\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct object *object;\n@@ -1619,8 +1619,8 @@ static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n }\n \n static int handle_one_reflog(const char *refname_in_wt,\n-\t\t\t     const struct object_id *oid,\n-\t\t\t     int flag, void *cb_data)\n+\t\t\t     const struct object_id *oid, unsigned int flag,\n+\t\t\t     void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct strbuf refname = STRBUF_INIT;\n@@ -2688,7 +2688,7 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,\n \n static void NORETURN diagnose_missing_default(const char *def)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *refname;\n \n \trefname = resolve_ref_unsafe(def, 0, NULL, &flags);\ndiff --git a/server-info.c b/server-info.c\nindex 7701d7c20a1..78119897d30 100644\n--- a/server-info.c\n+++ b/server-info.c\n@@ -147,7 +147,7 @@ out:\n }\n \n static int add_info_ref(const char *path, const struct object_id *oid,\n-\t\t\tint flag, void *cb_data)\n+\t\t\tunsigned int flag, void *cb_data)\n {\n \tstruct update_info_ctx *uic = cb_data;\n \tstruct object *o = parse_object(the_repository, oid);\ndiff --git a/shallow.c b/shallow.c\nindex 71e5876f377..da9f1e28e93 100644\n--- a/shallow.c\n+++ b/shallow.c\n@@ -596,7 +596,7 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,\n }\n \n static int mark_uninteresting(const char *refname, const struct object_id *oid,\n-\t\t\t      int flags, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\n@@ -707,7 +707,7 @@ struct commit_array {\n };\n \n static int add_ref(const char *refname, const struct object_id *oid,\n-\t\t   int flags, void *cb_data)\n+\t\t   unsigned int flags, void *cb_data)\n {\n \tstruct commit_array *ca = cb_data;\n \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\ndiff --git a/submodule.c b/submodule.c\nindex 95af84347d7..e5c5d9aa6be 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -916,7 +916,7 @@ static void free_submodules_oids(struct string_list *submodules)\n }\n \n static int has_remote(const char *refname, const struct object_id *oid,\n-\t\t      int flags, void *cb_data)\n+\t\t      unsigned int flags, void *cb_data)\n {\n \treturn 1;\n }\n@@ -1223,7 +1223,7 @@ int push_unpushed_submodules(struct repository *r,\n }\n \n static int append_oid_to_array(const char *ref, const struct object_id *oid,\n-\t\t\t       int flags, void *data)\n+\t\t\t       unsigned int flags, void *data)\n {\n \tstruct oid_array *array = data;\n \toid_array_append(array, oid);\ndiff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c\nindex 9646d85fc84..5859f8941d5 100644\n--- a/t/helper/test-ref-store.c\n+++ b/t/helper/test-ref-store.c\n@@ -160,7 +160,7 @@ static int cmd_rename_ref(struct ref_store *refs, const char **argv)\n }\n \n static int each_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flags, void *cb_data)\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tprintf(\"%s %s 0x%x\\n\", oid_to_hex(oid), refname, flags);\n \treturn 0;\n@@ -178,7 +178,7 @@ static int cmd_resolve_ref(struct ref_store *refs, const char **argv)\n \tstruct object_id oid = *null_oid();\n \tconst char *refname = notnull(*argv++, \"refname\");\n \tint resolve_flags = arg_flags(*argv++, \"resolve-flags\", empty_flags);\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *ref;\n \n \tref = refs_resolve_ref_unsafe(refs, refname, resolve_flags,\ndiff --git a/transport-helper.c b/transport-helper.c\nindex a0297b0986c..c207103aaff 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -1090,7 +1090,7 @@ static int push_refs_with_export(struct transport *transport,\n \t\t\tif (strcmp(ref->name, ref->peer_ref->name)) {\n \t\t\t\tif (!ref->deletion) {\n \t\t\t\t\tconst char *name;\n-\t\t\t\t\tint flag;\n+\t\t\t\t\tunsigned int flag;\n \n \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n \t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\ndiff --git a/transport.c b/transport.c\nindex 2a3e3241545..5b6d5d29388 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -80,7 +80,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\tconst char *localname;\n \t\tconst char *tmp;\n \t\tconst char *remotename;\n-\t\tint flag = 0;\n+\t\tunsigned int flag = 0;\n \t\t/*\n \t\t * Check suitability for tracking. Must be successful /\n \t\t * already up-to-date ref create/modify (not delete).\ndiff --git a/upload-pack.c b/upload-pack.c\nindex 8acc98741bb..cb652db4f78 100644\n--- a/upload-pack.c\n+++ b/upload-pack.c\n@@ -822,7 +822,7 @@ static void send_unshallow(struct upload_pack_data *data)\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data);\n+\t\t     unsigned int flag, void *cb_data);\n static void deepen(struct upload_pack_data *data, int depth)\n {\n \tif (depth == INFINITE_DEPTH && !is_repository_shallow(the_repository)) {\n@@ -1169,7 +1169,7 @@ static int mark_our_ref(const char *refname, const char *refname_full,\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     int flag, void *cb_data)\n+\t\t     unsigned int flag, void *cb_data)\n {\n \tconst char *refname = strip_namespace(refname_full);\n \n@@ -1193,7 +1193,7 @@ static void format_session_id(struct strbuf *buf, struct upload_pack_data *d) {\n }\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    int flag, void *cb_data)\n+\t\t    unsigned int flag, void *cb_data)\n {\n \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n@@ -1236,7 +1236,7 @@ static int send_ref(const char *refname, const struct object_id *oid,\n }\n \n static int find_symref(const char *refname, const struct object_id *oid,\n-\t\t       int flag, void *cb_data)\n+\t\t       unsigned int flag, void *cb_data)\n {\n \tconst char *symref_target;\n \tstruct string_list_item *item;\ndiff --git a/walker.c b/walker.c\nindex c5e29219795..c1b82504f51 100644\n--- a/walker.c\n+++ b/walker.c\n@@ -216,7 +216,7 @@ static int interpret_target(struct walker *walker, char *target, struct object_i\n }\n \n static int mark_complete(const char *path, const struct object_id *oid,\n-\t\t\t int flag, void *cb_data)\n+\t\t\t unsigned int flag, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\ndiff --git a/worktree.c b/worktree.c\nindex e392c7af674..58c958e055a 100644\n--- a/worktree.c\n+++ b/worktree.c\n@@ -27,7 +27,7 @@ void free_worktrees(struct worktree **worktrees)\n  */\n static void add_head_info(struct worktree *wt)\n {\n-\tint flags;\n+\tunsigned int flags;\n \tconst char *target;\n \n \ttarget = refs_resolve_ref_unsafe(get_worktree_ref_store(wt),\n@@ -414,7 +414,7 @@ const struct worktree *find_shared_symref(struct worktree **worktrees,\n \t\tstruct worktree *wt = worktrees[i];\n \t\tconst char *symref_target;\n \t\tstruct ref_store *refs;\n-\t\tint flags;\n+\t\tunsigned int flags;\n \n \t\tif (wt->is_bare)\n \t\t\tcontinue;\n@@ -559,7 +559,7 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \tfor (p = worktrees; *p; p++) {\n \t\tstruct worktree *wt = *p;\n \t\tstruct object_id oid;\n-\t\tint flag;\n+\t\tunsigned int flag;\n \n \t\tif (wt->is_current)\n \t\t\tcontinue;\n-- \ngitgitgadget\n\n"},{"id":"447613","messageId":"e94a923a6475f72395c84f9c3bf12b2c18f40ae0.1643898413.git.gitgitgadget@gmail.com","threadId":"57344","inReplyTo":"pull.1210.v3.git.git.1643898412.gitgitgadget@gmail.com","subject":"[PATCH v3 2/2] Uniformize flag argument naming to `flags` or `unused_flags`","fromName":"Han-Wen Nienhuys via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2022-02-03T14:26:52Z","receivedAt":"2022-02-03T14:27:07Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"From: Han-Wen Nienhuys <hanwen@google.com>\n\nIn a couple of shadowing cases, use `ref_flags` for\nclarity.\n\nSigned-off-by: Han-Wen Nienhuys <hanwen@google.com>\n---\n bisect.c                    |  4 ++--\n builtin/bisect--helper.c    | 10 ++++----\n builtin/checkout.c          | 23 +++++++++---------\n builtin/describe.c          |  2 +-\n builtin/fetch.c             |  4 ++--\n builtin/fsck.c              |  4 ++--\n builtin/gc.c                |  2 +-\n builtin/name-rev.c          |  2 +-\n builtin/pack-objects.c      |  4 ++--\n builtin/rebase.c            |  9 +++----\n builtin/receive-pack.c      | 13 +++++-----\n builtin/reflog.c            |  2 +-\n builtin/remote.c            | 20 ++++++++--------\n builtin/repack.c            |  4 ++--\n builtin/replace.c           |  4 ++--\n builtin/rev-parse.c         |  4 ++--\n builtin/show-branch.c       | 12 +++++-----\n builtin/show-ref.c          |  2 +-\n builtin/submodule--helper.c |  2 +-\n builtin/symbolic-ref.c      |  6 ++---\n bundle.c                    |  8 +++----\n delta-islands.c             |  2 +-\n fetch-pack.c                |  4 ++--\n http-backend.c              |  4 ++--\n log-tree.c                  |  2 +-\n ls-refs.c                   | 18 +++++++-------\n midx.c                      |  4 ++--\n negotiator/default.c        |  2 +-\n negotiator/skipping.c       |  2 +-\n notes.c                     |  2 +-\n object-name.c               |  2 +-\n reachable.c                 |  4 ++--\n ref-filter.c                |  8 +++----\n refs.c                      | 29 ++++++++++++-----------\n refs/files-backend.c        | 47 +++++++++++++++++++------------------\n remote.c                    | 26 ++++++++++----------\n replace-object.c            |  4 ++--\n revision.c                  |  6 ++---\n server-info.c               |  2 +-\n shallow.c                   |  4 ++--\n submodule.c                 |  4 ++--\n transport-helper.c          | 12 ++++++----\n transport.c                 | 10 ++++----\n upload-pack.c               | 12 +++++-----\n walker.c                    |  2 +-\n worktree.c                  |  9 ++++---\n 46 files changed, 183 insertions(+), 179 deletions(-)\n\ndiff --git a/bisect.c b/bisect.c\nindex 44af2081987..c062209c439 100644\n--- a/bisect.c\n+++ b/bisect.c\n@@ -441,7 +441,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,\n }\n \n static int register_ref(const char *refname, const struct object_id *oid,\n-\t\t\tunsigned int flags, void *cb_data)\n+\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct strbuf good_prefix = STRBUF_INIT;\n \tstrbuf_addstr(&good_prefix, term_good);\n@@ -1147,7 +1147,7 @@ int estimate_bisect_steps(int all)\n }\n \n static int mark_for_removal(const char *refname, const struct object_id *oid,\n-\t\t\t    unsigned int flag, void *cb_data)\n+\t\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstruct string_list *refs = cb_data;\n \tchar *ref = xstrfmt(\"refs/bisect%s\", refname);\ndiff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c\nindex e8b0c049f34..8eb4b8cc303 100644\n--- a/builtin/bisect--helper.c\n+++ b/builtin/bisect--helper.c\n@@ -330,7 +330,7 @@ static int check_and_set_terms(struct bisect_terms *terms, const char *cmd)\n }\n \n static int mark_good(const char *refname, const struct object_id *oid,\n-\t\t     unsigned int flag, void *cb_data)\n+\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tint *m_good = (int *)cb_data;\n \t*m_good = 0;\n@@ -477,7 +477,7 @@ finish:\n }\n \n static int add_bisect_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  unsigned int flags, void *cb)\n+\t\t\t  unsigned int unused_flags, void *cb)\n {\n \tstruct add_bisect_ref_data *data = cb;\n \n@@ -618,7 +618,7 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \tint first_parent_only = 0;\n \tint i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0;\n \tint pathspec_pos;\n-\tunsigned int flags;\n+\tunsigned int unused_flags;\n \tenum bisect_error res = BISECT_OK;\n \tstruct string_list revs = STRING_LIST_INIT_DUP;\n \tstruct string_list states = STRING_LIST_INIT_DUP;\n@@ -708,7 +708,7 @@ static enum bisect_error bisect_start(struct bisect_terms *terms, const char **a\n \t/*\n \t * Verify HEAD\n \t */\n-\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &flags);\n+\thead = resolve_ref_unsafe(\"HEAD\", 0, &head_oid, &unused_flags);\n \tif (!head)\n \t\tif (get_oid(\"HEAD\", &head_oid))\n \t\t\treturn error(_(\"bad HEAD - I need a HEAD\"));\n@@ -1091,7 +1091,7 @@ static int bisect_visualize(struct bisect_terms *terms, const char **argv, int a\n }\n \n static int get_first_good(const char *refname, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  unsigned int flag, void *cb_data)\n {\n \toidcpy(cb_data, oid);\n \treturn 1;\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex 742c4ac2ab7..761f9ac9483 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -974,7 +974,8 @@ static void update_refs_for_switch(const struct checkout_opts *opts,\n \n static int add_pending_uninteresting_ref(const char *refname,\n \t\t\t\t\t const struct object_id *oid,\n-\t\t\t\t\t unsigned int flags, void *cb_data)\n+\t\t\t\t\t unsigned int unused_flags,\n+\t\t\t\t\t void *cb_data)\n {\n \tadd_pending_oid(cb_data, refname, oid, UNINTERESTING);\n \treturn 0;\n@@ -1084,16 +1085,16 @@ static int switch_branches(const struct checkout_opts *opts,\n \tstruct branch_info old_branch_info = { 0 };\n \tstruct object_id rev;\n \tint writeout_error = 0;\n-\tunsigned int flag;\n+\tunsigned int flags;\n \tint do_merge = 1;\n \n \ttrace2_cmd_mode(\"branch\");\n \n \tmemset(&old_branch_info, 0, sizeof(old_branch_info));\n-\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flag);\n+\told_branch_info.path = resolve_refdup(\"HEAD\", 0, &rev, &flags);\n \tif (old_branch_info.path)\n \t\told_branch_info.commit = lookup_commit_reference_gently(the_repository, &rev, 1);\n-\tif (!(flag & REF_ISSYMREF))\n+\tif (!(flags & REF_ISSYMREF))\n \t\tFREE_AND_NULL(old_branch_info.path);\n \n \tif (old_branch_info.path) {\n@@ -1510,20 +1511,20 @@ static int checkout_branch(struct checkout_opts *opts,\n \n \tif (new_branch_info->path && !opts->force_detach && !opts->new_branch &&\n \t    !opts->ignore_other_worktrees) {\n-\t\tunsigned int flag;\n-\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flag);\n-\t\tif (head_ref &&\n-\t\t    (!(flag & REF_ISSYMREF) || strcmp(head_ref, new_branch_info->path)))\n+\t\tunsigned int flags;\n+\t\tchar *head_ref = resolve_refdup(\"HEAD\", 0, NULL, &flags);\n+\t\tif (head_ref && (!(flags & REF_ISSYMREF) ||\n+\t\t\t\t strcmp(head_ref, new_branch_info->path)))\n \t\t\tdie_if_checked_out(new_branch_info->path, 1);\n \t\tfree(head_ref);\n \t}\n \n \tif (!new_branch_info->commit && opts->new_branch) {\n \t\tstruct object_id rev;\n-\t\tunsigned int flag;\n+\t\tunsigned int flags;\n \n-\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flag) &&\n-\t\t    (flag & REF_ISSYMREF) && is_null_oid(&rev))\n+\t\tif (!read_ref_full(\"HEAD\", 0, &rev, &flags) &&\n+\t\t    (flags & REF_ISSYMREF) && is_null_oid(&rev))\n \t\t\treturn switch_unborn_to_new_branch(opts);\n \t}\n \treturn switch_branches(opts, new_branch_info);\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 5fa5b0bb424..c7b24390ca6 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -141,7 +141,7 @@ static void add_to_known_names(const char *path,\n }\n \n static int get_name(const char *path, const struct object_id *oid,\n-\t\t    unsigned int flag, void *cb_data)\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tint is_tag = 0;\n \tstruct object_id peeled;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 0d2eab174c4..2f341aef13a 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -325,7 +325,7 @@ static struct refname_hash_entry *refname_hash_add(struct hashmap *map,\n }\n \n static int add_one_refname(const char *refname, const struct object_id *oid,\n-\t\t\t   unsigned int flag, void *cbdata)\n+\t\t\t   unsigned int unused_flags, void *cbdata)\n {\n \tstruct hashmap *refname_map = cbdata;\n \n@@ -1430,7 +1430,7 @@ static void set_option(struct transport *transport, const char *name, const char\n }\n \n static int add_oid(const char *refname, const struct object_id *oid,\n-\t\t   unsigned int flags, void *cb_data)\n+\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct oid_array *oids = cb_data;\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 8e3f773e3dd..c52bd1843d1 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -502,7 +502,7 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid\n }\n \n static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n-\t\t\t      unsigned int flag, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct strbuf refname = STRBUF_INIT;\n \n@@ -513,7 +513,7 @@ static int fsck_handle_reflog(const char *logname, const struct object_id *oid,\n }\n \n static int fsck_handle_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   unsigned int flag, void *cb_data)\n+\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *obj;\n \ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 1c045962766..544aae1a7e8 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -770,7 +770,7 @@ struct cg_auto_data {\n };\n \n static int dfs_on_ref(const char *refname, const struct object_id *oid,\n-\t\t      unsigned int flags, void *cb_data)\n+\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct cg_auto_data *data = (struct cg_auto_data *)cb_data;\n \tint result = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 93f622331fb..a9dd2fbb22e 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -306,7 +306,7 @@ static int cmp_by_tag_and_age(const void *a_, const void *b_)\n }\n \n static int name_ref(const char *path, const struct object_id *oid,\n-\t\t    unsigned int flags, void *cb_data)\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = parse_object(the_repository, oid);\n \tstruct name_ref_data *data = cb_data;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 7af3cbf9688..a8a4907588a 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -759,7 +759,7 @@ static enum write_one_status write_one(struct hashfile *f,\n }\n \n static int mark_tagged(const char *path, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \tstruct object_entry *entry = packlist_find(&to_pack, oid);\n@@ -3013,7 +3013,7 @@ static void add_tag_chain(const struct object_id *oid)\n }\n \n static int add_ref_tag(const char *tag, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id peeled;\n \ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex d4015b72610..ec131afa2cc 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1025,7 +1025,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\n \tint ret, total_argc, in_progress = 0;\n-\tunsigned int flags;\n \tint keep_base = 0;\n \tint ok_to_skip_pre_rebase = 0;\n \tstruct strbuf msg = STRBUF_INIT;\n@@ -1639,6 +1638,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t}\n \t} else if (argc == 0) {\n \t\t/* Do not need to switch branches, we are already on it. */\n+\t\tunsigned int flags;\n \t\toptions.head_name =\n \t\t\txstrdup_or_null(resolve_ref_unsafe(\"HEAD\", 0, NULL,\n \t\t\t\t\t &flags));\n@@ -1696,7 +1696,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \tif (can_fast_forward(options.onto, options.upstream, options.restrict_revision,\n \t\t    &options.orig_head, &merge_base) &&\n \t    allow_preemptive_ff) {\n-\t\tunsigned int flag;\n+\t\tunsigned int unused_flags;\n \n \t\tif (!(options.flags & REBASE_FORCE)) {\n \t\t\t/* Lazily switch to the target branch if needed... */\n@@ -1709,7 +1709,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t\tif (!(options.flags & REBASE_NO_QUIET))\n \t\t\t\t; /* be quiet */\n \t\t\telse if (!strcmp(branch_name, \"HEAD\") &&\n-\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n+\t\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL,\n+\t\t\t\t\t\t    &unused_flags))\n \t\t\t\tputs(_(\"HEAD is up to date.\"));\n \t\t\telse\n \t\t\t\tprintf(_(\"Current branch %s is up to date.\\n\"),\n@@ -1719,7 +1720,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t} else if (!(options.flags & REBASE_NO_QUIET))\n \t\t\t; /* be quiet */\n \t\telse if (!strcmp(branch_name, \"HEAD\") &&\n-\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n+\t\t\t resolve_ref_unsafe(\"HEAD\", 0, NULL, &unused_flags))\n \t\t\tputs(_(\"HEAD is up to date, rebase forced.\"));\n \t\telse\n \t\t\tprintf(_(\"Current branch %s is up to date, rebase \"\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex b189487a17b..9ba14922352 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -291,7 +291,7 @@ static void show_ref(const char *path, const struct object_id *oid)\n }\n \n static int show_ref_cb(const char *path_full, const struct object_id *oid,\n-\t\t       unsigned int flag, void *data)\n+\t\t       unsigned int unused_flags, void *data)\n {\n \tstruct oidset *seen = data;\n \tconst char *path = strip_namespace(path_full);\n@@ -1645,12 +1645,13 @@ static void run_update_post_hook(struct command *commands)\n \n static void check_aliased_update_internal(struct command *cmd,\n \t\t\t\t\t  struct string_list *list,\n-\t\t\t\t\t  const char *dst_name, int flag)\n+\t\t\t\t\t  const char *dst_name,\n+\t\t\t\t\t  unsigned int flags)\n {\n \tstruct string_list_item *item;\n \tstruct command *dst_cmd;\n \n-\tif (!(flag & REF_ISSYMREF))\n+\tif (!(flags & REF_ISSYMREF))\n \t\treturn;\n \n \tif (!dst_name) {\n@@ -1691,11 +1692,11 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tconst char *dst_name;\n-\tunsigned int flag;\n+\tunsigned int flags;\n \n \tstrbuf_addf(&buf, \"%s%s\", get_git_namespace(), cmd->ref_name);\n-\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flag);\n-\tcheck_aliased_update_internal(cmd, list, dst_name, flag);\n+\tdst_name = resolve_ref_unsafe(buf.buf, 0, NULL, &flags);\n+\tcheck_aliased_update_internal(cmd, list, dst_name, flags);\n \tstrbuf_release(&buf);\n }\n \ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 278e895cc57..87d09c941a7 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -417,7 +417,7 @@ static void reflog_expiry_cleanup(void *cb_data)\n }\n \n static int collect_reflog(const char *ref, const struct object_id *oid,\n-\t\t\t  unsigned int unused, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct worktree_reflogs *cb = cb_data;\n \tstruct worktree *worktree = cb->worktree;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 92ac729aeab..b95c5aa2fdf 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -534,7 +534,7 @@ struct branches_for_remote {\n \n static int add_branch_for_removal(const char *refname,\n \t\t\t\t  const struct object_id *oid,\n-\t\t\t\t  unsigned int flags, void *cb_data)\n+\t\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct branches_for_remote *branches = cb_data;\n \tstruct refspec_item refspec;\n@@ -575,21 +575,21 @@ struct rename_info {\n };\n \n static int read_remote_branches(const char *refname,\n-\t\t\t\tconst struct object_id *oid, unsigned int flags,\n-\t\t\t\tvoid *cb_data)\n+\t\t\t\tconst struct object_id *oid,\n+\t\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct rename_info *rename = cb_data;\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct string_list_item *item;\n-\tunsigned int flag;\n \tconst char *symref;\n \n \tstrbuf_addf(&buf, \"refs/remotes/%s/\", rename->old_name);\n \tif (starts_with(refname, buf.buf)) {\n+\t\tunsigned int flags;\n \t\titem = string_list_append(rename->remote_branches, refname);\n-\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,\n-\t\t\t\t\t    NULL, &flag);\n-\t\tif (symref && (flag & REF_ISSYMREF))\n+\t\tsymref = resolve_ref_unsafe(refname, RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t    &flags);\n+\t\tif (symref && (flags & REF_ISSYMREF))\n \t\t\titem->util = xstrdup(symref);\n \t\telse\n \t\t\titem->util = NULL;\n@@ -768,10 +768,10 @@ static int mv(int argc, const char **argv)\n \tfor_each_ref(read_remote_branches, &rename);\n \tfor (i = 0; i < remote_branches.nr; i++) {\n \t\tstruct string_list_item *item = remote_branches.items + i;\n-\t\tunsigned int flag = 0;\n+\t\tunsigned int flags = 0;\n \n-\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);\n-\t\tif (!(flag & REF_ISSYMREF))\n+\t\tread_ref_full(item->string, RESOLVE_REF_READING, NULL, &flags);\n+\t\tif (!(flags & REF_ISSYMREF))\n \t\t\tcontinue;\n \t\tif (delete_ref(NULL, item->string, NULL, REF_NO_DEREF))\n \t\t\tdie(_(\"deleting '%s' failed\"), item->string);\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex ff6ddc0f357..f995f829970 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -464,8 +464,8 @@ struct midx_snapshot_ref_data {\n };\n \n static int midx_snapshot_ref_one(const char *refname,\n-\t\t\t\t const struct object_id *oid, unsigned int flag,\n-\t\t\t\t void *_data)\n+\t\t\t\t const struct object_id *oid,\n+\t\t\t\t unsigned int unused_flag, void *_data)\n {\n \tstruct midx_snapshot_ref_data *data = _data;\n \tstruct object_id peeled;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 26bc9daba35..55677f4df45 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -40,8 +40,8 @@ struct show_data {\n };\n \n static int show_reference(struct repository *r, const char *refname,\n-\t\t\t  const struct object_id *oid, unsigned int flag,\n-\t\t\t  void *cb_data)\n+\t\t\t  const struct object_id *oid,\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct show_data *data = cb_data;\n \ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex b842c958f20..46f09c25db6 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -196,7 +196,7 @@ static int show_default(void)\n }\n \n static int show_reference(const char *refname, const struct object_id *oid,\n-\t\t\t  unsigned int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tif (ref_excluded(ref_excludes, refname))\n \t\treturn 0;\n@@ -205,7 +205,7 @@ static int show_reference(const char *refname, const struct object_id *oid,\n }\n \n static int anti_reference(const char *refname, const struct object_id *oid,\n-\t\t\t  unsigned int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tshow_rev(REVERSED, oid, refname);\n \treturn 0;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 625ba0c28ce..8c392afcd74 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -403,7 +403,7 @@ static int append_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t   unsigned int flag, void *cb_data)\n+\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 11;\n@@ -418,7 +418,7 @@ static int append_head_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_remote_ref(const char *refname, const struct object_id *oid,\n-\t\t\t     unsigned int flag, void *cb_data)\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id tmp;\n \tint ofs = 13;\n@@ -433,7 +433,7 @@ static int append_remote_ref(const char *refname, const struct object_id *oid,\n }\n \n static int append_tag_ref(const char *refname, const struct object_id *oid,\n-\t\t\t  int flag, void *cb_data)\n+\t\t\t  int unused_flags, void *cb_data)\n {\n \tif (!starts_with(refname, \"refs/tags/\"))\n \t\treturn 0;\n@@ -444,7 +444,7 @@ static const char *match_ref_pattern = NULL;\n static int match_ref_slash = 0;\n \n static int append_matching_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       unsigned int flag, void *cb_data)\n+\t\t\t       unsigned int flags, void *cb_data)\n {\n \t/* we want to allow pattern hold/<asterisk> to show all\n \t * branches under refs/heads/hold/, and v0.99.9? to show\n@@ -460,9 +460,9 @@ static int append_matching_ref(const char *refname, const struct object_id *oid,\n \tif (wildmatch(match_ref_pattern, tail, 0))\n \t\treturn 0;\n \tif (starts_with(refname, \"refs/heads/\"))\n-\t\treturn append_head_ref(refname, oid, flag, cb_data);\n+\t\treturn append_head_ref(refname, oid, flags, cb_data);\n \tif (starts_with(refname, \"refs/tags/\"))\n-\t\treturn append_tag_ref(refname, oid, flag, cb_data);\n+\t\treturn append_tag_ref(refname, oid, flags, cb_data);\n \treturn append_ref(refname, oid, 0);\n }\n \ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 09b708daf5b..ff017b1202a 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -86,7 +86,7 @@ match:\n }\n \n static int add_existing(const char *refname, const struct object_id *oid,\n-\t\t\tunsigned int flag, void *cbdata)\n+\t\t\tunsigned int unused_flags, void *cbdata)\n {\n \tstruct string_list *list = (struct string_list *)cbdata;\n \tstring_list_insert(list, refname);\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 320ecd04117..bbced5a3ef7 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -741,7 +741,7 @@ static void print_status(unsigned int flags, char state, const char *path,\n \n static int handle_submodule_head_ref(const char *refname,\n \t\t\t\t     const struct object_id *oid,\n-\t\t\t\t     unsigned int flags, void *cb_data)\n+\t\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct object_id *output = cb_data;\n \tif (oid)\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 1ad2997e979..478ae36b4da 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -12,12 +12,12 @@ static const char * const git_symbolic_ref_usage[] = {\n \n static int check_symref(const char *HEAD, int quiet, int shorten, int print)\n {\n-\tunsigned int flag;\n-\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flag);\n+\tunsigned int flags;\n+\tconst char *refname = resolve_ref_unsafe(HEAD, 0, NULL, &flags);\n \n \tif (!refname)\n \t\tdie(\"No such ref: %s\", HEAD);\n-\telse if (!(flag & REF_ISSYMREF)) {\n+\telse if (!(flags & REF_ISSYMREF)) {\n \t\tif (!quiet)\n \t\t\tdie(\"ref %s is not a symbolic ref\", HEAD);\n \t\telse\ndiff --git a/bundle.c b/bundle.c\nindex da4442d4f1a..a6658dab789 100644\n--- a/bundle.c\n+++ b/bundle.c\n@@ -371,15 +371,15 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)\n \t\tstruct object_id oid;\n \t\tchar *ref;\n \t\tconst char *display_ref;\n-\t\tunsigned int flag;\n+\t\tunsigned int flags;\n \n \t\tif (e->item->flags & UNINTERESTING)\n \t\t\tcontinue;\n \t\tif (dwim_ref(e->name, strlen(e->name), &oid, &ref, 0) != 1)\n \t\t\tgoto skip_write_ref;\n-\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flag))\n-\t\t\tflag = 0;\n-\t\tdisplay_ref = (flag & REF_ISSYMREF) ? e->name : ref;\n+\t\tif (read_ref_full(e->name, RESOLVE_REF_READING, &oid, &flags))\n+\t\t\tflags = 0;\n+\t\tdisplay_ref = (flags & REF_ISSYMREF) ? e->name : ref;\n \n \t\tif (e->item->type == OBJ_TAG &&\n \t\t\t\t!is_tag_in_date_range(e->item, revs)) {\ndiff --git a/delta-islands.c b/delta-islands.c\nindex dba5454ba01..b53b8dc7f4a 100644\n--- a/delta-islands.c\n+++ b/delta-islands.c\n@@ -365,7 +365,7 @@ static void add_ref_to_island(const char *island_name, const struct object_id *o\n }\n \n static int find_island_for_ref(const char *refname, const struct object_id *oid,\n-\t\t\t       unsigned int flags, void *data)\n+\t\t\t       unsigned int unused_flags, void *data)\n {\n \t/*\n \t * We should advertise 'ARRAY_SIZE(matches) - 2' as the max,\ndiff --git a/fetch-pack.c b/fetch-pack.c\nindex 19671a30089..43a74beeb10 100644\n--- a/fetch-pack.c\n+++ b/fetch-pack.c\n@@ -166,7 +166,7 @@ static int rev_list_insert_ref(struct fetch_negotiator *negotiator,\n \n static int rev_list_insert_ref_oid(const char *refname,\n \t\t\t\t   const struct object_id *oid,\n-\t\t\t\t   unsigned int flag, void *cb_data)\n+\t\t\t\t   unsigned int unused_flags, void *cb_data)\n {\n \treturn rev_list_insert_ref(cb_data, oid);\n }\n@@ -549,7 +549,7 @@ static int mark_complete(const struct object_id *oid)\n }\n \n static int mark_complete_oid(const char *refname, const struct object_id *oid,\n-\t\t\t     unsigned int flag, void *cb_data)\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \treturn mark_complete(oid);\n }\ndiff --git a/http-backend.c b/http-backend.c\nindex c8757e601d1..351a124333b 100644\n--- a/http-backend.c\n+++ b/http-backend.c\n@@ -559,11 +559,11 @@ static void get_info_refs(struct strbuf *hdr, char *arg)\n }\n \n static int show_head_ref(const char *refname, const struct object_id *oid,\n-\t\t\t unsigned int flag, void *cb_data)\n+\t\t\t unsigned int flags, void *cb_data)\n {\n \tstruct strbuf *buf = cb_data;\n \n-\tif (flag & REF_ISSYMREF) {\n+\tif (flags & REF_ISSYMREF) {\n \t\tconst char *target = resolve_ref_unsafe(refname,\n \t\t\t\t\t\t\tRESOLVE_REF_READING,\n \t\t\t\t\t\t\tNULL, NULL);\ndiff --git a/log-tree.c b/log-tree.c\nindex 555a08b45c0..0e5452b0505 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -135,7 +135,7 @@ static int ref_filter_match(const char *refname,\n }\n \n static int add_ref_decoration(const char *refname, const struct object_id *oid,\n-\t\t\t      unsigned int flags, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *obj;\n \tenum object_type objtype;\ndiff --git a/ls-refs.c b/ls-refs.c\nindex 42ba85b371b..26bfd49556d 100644\n--- a/ls-refs.c\n+++ b/ls-refs.c\n@@ -77,7 +77,7 @@ struct ls_refs_data {\n };\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    unsigned int flag, void *cb_data)\n+\t\t    unsigned int flags, void *cb_data)\n {\n \tstruct ls_refs_data *data = cb_data;\n \tconst char *refname_nons = strip_namespace(refname);\n@@ -94,11 +94,10 @@ static int send_ref(const char *refname, const struct object_id *oid,\n \t\tstrbuf_addf(&data->buf, \"%s %s\", oid_to_hex(oid), refname_nons);\n \telse\n \t\tstrbuf_addf(&data->buf, \"unborn %s\", refname_nons);\n-\tif (data->symrefs && flag & REF_ISSYMREF) {\n+\tif (data->symrefs && flags & REF_ISSYMREF) {\n \t\tstruct object_id unused;\n-\t\tconst char *symref_target = resolve_ref_unsafe(refname, 0,\n-\t\t\t\t\t\t\t       &unused,\n-\t\t\t\t\t\t\t       &flag);\n+\t\tconst char *symref_target =\n+\t\t\tresolve_ref_unsafe(refname, 0, &unused, &flags);\n \n \t\tif (!symref_target)\n \t\t\tdie(\"'%s' is a symref but it is not?\", refname);\n@@ -123,16 +122,17 @@ static void send_possibly_unborn_head(struct ls_refs_data *data)\n {\n \tstruct strbuf namespaced = STRBUF_INIT;\n \tstruct object_id oid;\n-\tunsigned int flag;\n+\tunsigned int flags;\n \tint oid_is_null;\n \n \tstrbuf_addf(&namespaced, \"%sHEAD\", get_git_namespace());\n-\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flag))\n+\tif (!resolve_ref_unsafe(namespaced.buf, 0, &oid, &flags))\n \t\treturn; /* bad ref */\n \toid_is_null = is_null_oid(&oid);\n \tif (!oid_is_null ||\n-\t    (data->unborn && data->symrefs && (flag & REF_ISSYMREF)))\n-\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flag, data);\n+\t    (data->unborn && data->symrefs && (flags & REF_ISSYMREF)))\n+\t\tsend_ref(namespaced.buf, oid_is_null ? NULL : &oid, flags,\n+\t\t\t data);\n \tstrbuf_release(&namespaced);\n }\n \ndiff --git a/midx.c b/midx.c\nindex 41cad25e099..0adb5b0c228 100644\n--- a/midx.c\n+++ b/midx.c\n@@ -939,12 +939,12 @@ static void prepare_midx_packing_data(struct packing_data *pdata,\n }\n \n static int add_ref_to_pending(const char *refname, const struct object_id *oid,\n-\t\t\t      unsigned int flag, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info*)cb_data;\n \tstruct object *object;\n \n-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n \t\twarning(\"symbolic ref is dangling: %s\", refname);\n \t\treturn 0;\n \t}\ndiff --git a/negotiator/default.c b/negotiator/default.c\nindex 3f911f6b633..7ddc40e480b 100644\n--- a/negotiator/default.c\n+++ b/negotiator/default.c\n@@ -36,7 +36,7 @@ static void rev_list_push(struct negotiation_state *ns,\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/negotiator/skipping.c b/negotiator/skipping.c\nindex 0e6f72987c1..6ac6310b247 100644\n--- a/negotiator/skipping.c\n+++ b/negotiator/skipping.c\n@@ -72,7 +72,7 @@ static struct entry *rev_list_push(struct data *data, struct commit *commit, int\n }\n \n static int clear_marks(const char *refname, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct object *o = deref_tag(the_repository, parse_object(the_repository, oid), refname, 0);\n \ndiff --git a/notes.c b/notes.c\nindex e9638a40f0e..1b6f747baf9 100644\n--- a/notes.c\n+++ b/notes.c\n@@ -926,7 +926,7 @@ out:\n \n static int string_list_add_one_ref(const char *refname,\n \t\t\t\t   const struct object_id *oid,\n-\t\t\t\t   unsigned int flag, void *cb)\n+\t\t\t\t   unsigned int unused_flags, void *cb)\n {\n \tstruct string_list *refs = cb;\n \tif (!unsorted_string_list_has_string(refs, refname))\ndiff --git a/object-name.c b/object-name.c\nindex 5561365c9a1..36820a58275 100644\n--- a/object-name.c\n+++ b/object-name.c\n@@ -1305,7 +1305,7 @@ struct handle_one_ref_cb {\n };\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  unsigned int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct handle_one_ref_cb *cb = cb_data;\n \tstruct commit_list **list = cb->list;\ndiff --git a/reachable.c b/reachable.c\nindex 74e8ee81bbe..fc04a57cbf6 100644\n--- a/reachable.c\n+++ b/reachable.c\n@@ -27,12 +27,12 @@ static void update_progress(struct connectivity_progress *cp)\n }\n \n static int add_one_ref(const char *path, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tstruct rev_info *revs = (struct rev_info *)cb_data;\n \tstruct object *object;\n \n-\tif ((flag & REF_ISSYMREF) && (flag & REF_ISBROKEN)) {\n+\tif ((flags & REF_ISSYMREF) && (flags & REF_ISBROKEN)) {\n \t\twarning(\"symbolic ref is dangling: %s\", path);\n \t\treturn 0;\n \t}\ndiff --git a/ref-filter.c b/ref-filter.c\nindex f51779bd725..addb7a237a4 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -2234,7 +2234,7 @@ struct ref_filter_cbdata {\n  * later object processing.\n  */\n static int ref_filter_handler(const char *refname, const struct object_id *oid,\n-\t\t\t      unsigned int flag, void *cb_data)\n+\t\t\t      unsigned int flags, void *cb_data)\n {\n \tstruct ref_filter_cbdata *ref_cbdata = cb_data;\n \tstruct ref_filter *filter = ref_cbdata->filter;\n@@ -2242,12 +2242,12 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,\n \tstruct commit *commit = NULL;\n \tunsigned int kind;\n \n-\tif (flag & REF_BAD_NAME) {\n+\tif (flags & REF_BAD_NAME) {\n \t\twarning(_(\"ignoring ref with broken name %s\"), refname);\n \t\treturn 0;\n \t}\n \n-\tif (flag & REF_ISBROKEN) {\n+\tif (flags & REF_ISBROKEN) {\n \t\twarning(_(\"ignoring broken ref %s\"), refname);\n \t\treturn 0;\n \t}\n@@ -2290,7 +2290,7 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,\n \t */\n \tref = ref_array_push(ref_cbdata->array, refname, oid);\n \tref->commit = commit;\n-\tref->flag = flag;\n+\tref->flag = flags;\n \tref->kind = kind;\n \n \treturn 0;\ndiff --git a/refs.c b/refs.c\nindex 2ca398b8527..a8f60fe73cb 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -438,11 +438,11 @@ int head_ref_namespaced(each_ref_fn fn, void *cb_data)\n \tstruct strbuf buf = STRBUF_INIT;\n \tint ret = 0;\n \tstruct object_id oid;\n-\tunsigned int flag;\n+\tunsigned int flags;\n \n \tstrbuf_addf(&buf, \"%sHEAD\", get_git_namespace());\n-\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flag))\n-\t\tret = fn(buf.buf, &oid, flag, cb_data);\n+\tif (!read_ref_full(buf.buf, RESOLVE_REF_READING, &oid, &flags))\n+\t\tret = fn(buf.buf, &oid, flags, cb_data);\n \tstrbuf_release(&buf);\n \n \treturn ret;\n@@ -653,23 +653,24 @@ int expand_ref(struct repository *repo, const char *str, int len,\n \tfor (p = ref_rev_parse_rules; *p; p++) {\n \t\tstruct object_id oid_from_ref;\n \t\tstruct object_id *this_result;\n-\t\tunsigned int flag;\n+\t\tunsigned int flags;\n \t\tstruct ref_store *refs = get_main_ref_store(repo);\n \n \t\tthis_result = refs_found ? &oid_from_ref : oid;\n \t\tstrbuf_reset(&fullref);\n \t\tstrbuf_addf(&fullref, *p, len, str);\n \t\tr = refs_resolve_ref_unsafe(refs, fullref.buf,\n-\t\t\t\t\t    RESOLVE_REF_READING,\n-\t\t\t\t\t    this_result, &flag);\n+\t\t\t\t\t    RESOLVE_REF_READING, this_result,\n+\t\t\t\t\t    &flags);\n \t\tif (r) {\n \t\t\tif (!refs_found++)\n \t\t\t\t*ref = xstrdup(r);\n \t\t\tif (!warn_ambiguous_refs)\n \t\t\t\tbreak;\n-\t\t} else if ((flag & REF_ISSYMREF) && strcmp(fullref.buf, \"HEAD\")) {\n+\t\t} else if ((flags & REF_ISSYMREF) &&\n+\t\t\t   strcmp(fullref.buf, \"HEAD\")) {\n \t\t\twarning(_(\"ignoring dangling symref %s\"), fullref.buf);\n-\t\t} else if ((flag & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n+\t\t} else if ((flags & REF_ISBROKEN) && strchr(fullref.buf, '/')) {\n \t\t\twarning(_(\"ignoring broken ref %s\"), fullref.buf);\n \t\t}\n \t}\n@@ -1386,11 +1387,11 @@ const char *find_descendant_ref(const char *dirname,\n int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)\n {\n \tstruct object_id oid;\n-\tunsigned int flag;\n+\tunsigned int flags;\n \n-\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING,\n-\t\t\t\t    &oid, &flag))\n-\t\treturn fn(\"HEAD\", &oid, flag, cb_data);\n+\tif (refs_resolve_ref_unsafe(refs, \"HEAD\", RESOLVE_REF_READING, &oid,\n+\t\t\t\t    &flags))\n+\t\treturn fn(\"HEAD\", &oid, flags, cb_data);\n \n \treturn 0;\n }\n@@ -1778,14 +1779,14 @@ int resolve_gitlink_ref(const char *submodule, const char *refname,\n \t\t\tstruct object_id *oid)\n {\n \tstruct ref_store *refs;\n-\tunsigned int flags;\n+\tunsigned int unused_flags;\n \n \trefs = get_submodule_ref_store(submodule);\n \n \tif (!refs)\n \t\treturn -1;\n \n-\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &flags) ||\n+\tif (!refs_resolve_ref_unsafe(refs, refname, 0, oid, &unused_flags) ||\n \t    is_null_oid(oid))\n \t\treturn -1;\n \treturn 0;\ndiff --git a/refs/files-backend.c b/refs/files-backend.c\nindex b3149ca493b..fe2e1a43e00 100644\n--- a/refs/files-backend.c\n+++ b/refs/files-backend.c\n@@ -261,7 +261,6 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \twhile ((de = readdir(d)) != NULL) {\n \t\tstruct object_id oid;\n \t\tstruct stat st;\n-\t\tunsigned int flag;\n \n \t\tif (de->d_name[0] == '.')\n \t\t\tcontinue;\n@@ -277,12 +276,12 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\t\t create_dir_entry(dir->cache, refname.buf,\n \t\t\t\t\t\t\t  refname.len));\n \t\t} else {\n-\t\t\tif (!refs_resolve_ref_unsafe(&refs->base,\n-\t\t\t\t\t\t     refname.buf,\n-\t\t\t\t\t\t     RESOLVE_REF_READING,\n-\t\t\t\t\t\t     &oid, &flag)) {\n+\t\t\tunsigned int flags;\n+\t\t\tif (!refs_resolve_ref_unsafe(&refs->base, refname.buf,\n+\t\t\t\t\t\t     RESOLVE_REF_READING, &oid,\n+\t\t\t\t\t\t     &flags)) {\n \t\t\t\toidclr(&oid);\n-\t\t\t\tflag |= REF_ISBROKEN;\n+\t\t\t\tflags |= REF_ISBROKEN;\n \t\t\t} else if (is_null_oid(&oid)) {\n \t\t\t\t/*\n \t\t\t\t * It is so astronomically unlikely\n@@ -292,7 +291,7 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\t * file to be repo corruption\n \t\t\t\t * (probably due to a software bug).\n \t\t\t\t */\n-\t\t\t\tflag |= REF_ISBROKEN;\n+\t\t\t\tflags |= REF_ISBROKEN;\n \t\t\t}\n \n \t\t\tif (check_refname_format(refname.buf,\n@@ -300,10 +299,10 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,\n \t\t\t\tif (!refname_is_safe(refname.buf))\n \t\t\t\t\tdie(\"loose refname is dangerous: %s\", refname.buf);\n \t\t\t\toidclr(&oid);\n-\t\t\t\tflag |= REF_BAD_NAME | REF_ISBROKEN;\n+\t\t\t\tflags |= REF_BAD_NAME | REF_ISBROKEN;\n \t\t\t}\n-\t\t\tadd_entry_to_dir(dir,\n-\t\t\t\t\t create_ref_entry(refname.buf, &oid, flag));\n+\t\t\tadd_entry_to_dir(dir, create_ref_entry(refname.buf,\n+\t\t\t\t\t\t\t       &oid, flags));\n \t\t}\n \t\tstrbuf_setlen(&refname, dirnamelen);\n \t\tstrbuf_setlen(&path, path_baselen);\n@@ -1400,7 +1399,7 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \t\tfiles_downcast(ref_store, REF_STORE_WRITE, \"rename_ref\");\n \tstruct object_id orig_oid;\n \tint logmoved = 0;\n-\tunsigned int flag = 0;\n+\tunsigned int flags = 0;\n \tstruct ref_lock *lock;\n \tstruct stat loginfo;\n \tstruct strbuf sb_oldref = STRBUF_INIT;\n@@ -1420,13 +1419,14 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \t}\n \n \tif (!refs_resolve_ref_unsafe(&refs->base, oldrefname,\n-\t\t\t\t     RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,\n-\t\t\t\t     &orig_oid, &flag)) {\n+\t\t\t\t     RESOLVE_REF_READING |\n+\t\t\t\t\t     RESOLVE_REF_NO_RECURSE,\n+\t\t\t\t     &orig_oid, &flags)) {\n \t\tret = error(\"refname %s not found\", oldrefname);\n \t\tgoto out;\n \t}\n \n-\tif (flag & REF_ISSYMREF) {\n+\tif (flags & REF_ISSYMREF) {\n \t\tif (copy)\n \t\t\tret = error(\"refname %s is a symbolic ref, copying it is not supported\",\n \t\t\t\t    oldrefname);\n@@ -1522,14 +1522,14 @@ static int files_copy_or_rename_ref(struct ref_store *ref_store,\n \t\tgoto rollbacklog;\n \t}\n \n-\tflag = log_all_ref_updates;\n+\tflags = log_all_ref_updates;\n \tlog_all_ref_updates = LOG_REFS_NONE;\n \tif (write_ref_to_lockfile(lock, &orig_oid, 0, &err) ||\n \t    commit_ref_update(refs, lock, &orig_oid, NULL, &err)) {\n \t\terror(\"unable to write current sha1 into %s: %s\", oldrefname, err.buf);\n \t\tstrbuf_release(&err);\n \t}\n-\tlog_all_ref_updates = flag;\n+\tlog_all_ref_updates = flags;\n \n  rollbacklog:\n \tif (logmoved && rename(sb_newref.buf, sb_oldref.buf))\n@@ -1710,9 +1710,10 @@ static int log_ref_write_fd(int fd, const struct object_id *old_oid,\n }\n \n static int files_log_ref_write(struct files_ref_store *refs,\n-\t\t\t       const char *refname, const struct object_id *old_oid,\n+\t\t\t       const char *refname,\n+\t\t\t       const struct object_id *old_oid,\n \t\t\t       const struct object_id *new_oid, const char *msg,\n-\t\t\t       int flags, struct strbuf *err)\n+\t\t\t       unsigned int flags, struct strbuf *err)\n {\n \tint logfd, result;\n \n@@ -1834,13 +1835,13 @@ static int commit_ref_update(struct files_ref_store *refs,\n \t\t * check with HEAD only which should cover 99% of all usage\n \t\t * scenarios (even 100% of the default ones).\n \t\t */\n-\t\tunsigned int head_flag;\n+\t\tunsigned int head_flags;\n \t\tconst char *head_ref;\n \n \t\thead_ref = refs_resolve_ref_unsafe(&refs->base, \"HEAD\",\n-\t\t\t\t\t\t   RESOLVE_REF_READING,\n-\t\t\t\t\t\t   NULL, &head_flag);\n-\t\tif (head_ref && (head_flag & REF_ISSYMREF) &&\n+\t\t\t\t\t\t   RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t\t   &head_flags);\n+\t\tif (head_ref && (head_flags & REF_ISSYMREF) &&\n \t\t    !strcmp(head_ref, lock->ref_name)) {\n \t\t\tstruct strbuf log_err = STRBUF_INIT;\n \t\t\tif (files_log_ref_write(refs, \"HEAD\",\n@@ -2984,7 +2985,7 @@ static int files_transaction_abort(struct ref_store *ref_store,\n }\n \n static int ref_present(const char *refname, const struct object_id *oid,\n-\t\t       unsigned int flags, void *cb_data)\n+\t\t       unsigned int unused_flags, void *cb_data)\n {\n \tstruct string_list *affected_refnames = cb_data;\n \ndiff --git a/remote.c b/remote.c\nindex ff21b77f643..402ec7d9472 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -500,7 +500,7 @@ static void alias_all_urls(struct remote_state *remote_state)\n \n static void read_config(struct repository *repo)\n {\n-\tunsigned int flag;\n+\tunsigned int flags;\n \n \tif (repo->remote_state->initialized)\n \t\treturn;\n@@ -509,8 +509,8 @@ static void read_config(struct repository *repo)\n \trepo->remote_state->current_branch = NULL;\n \tif (startup_info->have_repository) {\n \t\tconst char *head_ref = refs_resolve_ref_unsafe(\n-\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flag);\n-\t\tif (head_ref && (flag & REF_ISSYMREF) &&\n+\t\t\tget_main_ref_store(repo), \"HEAD\", 0, NULL, &flags);\n+\t\tif (head_ref && (flags & REF_ISSYMREF) &&\n \t\t    skip_prefix(head_ref, \"refs/heads/\", &head_ref)) {\n \t\t\trepo->remote_state->current_branch = make_branch(\n \t\t\t\trepo->remote_state, head_ref, strlen(head_ref));\n@@ -1271,14 +1271,12 @@ static int match_explicit(struct ref *src, struct ref *dst,\n \t\treturn -1;\n \n \tif (!dst_value) {\n-\t\tunsigned int flag;\n-\n-\t\tdst_value = resolve_ref_unsafe(matched_src->name,\n-\t\t\t\t\t       RESOLVE_REF_READING,\n-\t\t\t\t\t       NULL, &flag);\n-\t\tif (!dst_value ||\n-\t\t    ((flag & REF_ISSYMREF) &&\n-\t\t     !starts_with(dst_value, \"refs/heads/\")))\n+\t\tunsigned int flags;\n+\n+\t\tdst_value = resolve_ref_unsafe(\n+\t\t\tmatched_src->name, RESOLVE_REF_READING, NULL, &flags);\n+\t\tif (!dst_value || ((flags & REF_ISSYMREF) &&\n+\t\t\t\t   !starts_with(dst_value, \"refs/heads/\")))\n \t\t\tdie(_(\"%s cannot be resolved to branch\"),\n \t\t\t    matched_src->name);\n \t}\n@@ -1947,11 +1945,11 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)\n \n static int ignore_symref_update(const char *refname)\n {\n-\tunsigned int flag;\n+\tunsigned int flags;\n \n-\tif (!resolve_ref_unsafe(refname, 0, NULL, &flag))\n+\tif (!resolve_ref_unsafe(refname, 0, NULL, &flags))\n \t\treturn 0; /* non-existing refs are OK */\n-\treturn (flag & REF_ISSYMREF);\n+\treturn (flags & REF_ISSYMREF);\n }\n \n /*\ndiff --git a/replace-object.c b/replace-object.c\nindex 1a9ed348661..d00486305a5 100644\n--- a/replace-object.c\n+++ b/replace-object.c\n@@ -7,8 +7,8 @@\n #include \"commit.h\"\n \n static int register_replace_ref(struct repository *r, const char *refname,\n-\t\t\t\tconst struct object_id *oid, unsigned int flag,\n-\t\t\t\tvoid *cb_data)\n+\t\t\t\tconst struct object_id *oid,\n+\t\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \t/* Get sha1 from refname */\n \tconst char *slash = strrchr(refname, '/');\ndiff --git a/revision.c b/revision.c\nindex ccdb069af1a..80984f583de 100644\n--- a/revision.c\n+++ b/revision.c\n@@ -1535,7 +1535,7 @@ int ref_excluded(struct string_list *ref_excludes, const char *path)\n }\n \n static int handle_one_ref(const char *path, const struct object_id *oid,\n-\t\t\t  unsigned int flag, void *cb_data)\n+\t\t\t  unsigned int unused_flags, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct object *object;\n@@ -1619,8 +1619,8 @@ static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,\n }\n \n static int handle_one_reflog(const char *refname_in_wt,\n-\t\t\t     const struct object_id *oid, unsigned int flag,\n-\t\t\t     void *cb_data)\n+\t\t\t     const struct object_id *oid,\n+\t\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tstruct all_refs_cb *cb = cb_data;\n \tstruct strbuf refname = STRBUF_INIT;\ndiff --git a/server-info.c b/server-info.c\nindex 78119897d30..06e3eb388ea 100644\n--- a/server-info.c\n+++ b/server-info.c\n@@ -147,7 +147,7 @@ out:\n }\n \n static int add_info_ref(const char *path, const struct object_id *oid,\n-\t\t\tunsigned int flag, void *cb_data)\n+\t\t\tunsigned int unused_flags, void *cb_data)\n {\n \tstruct update_info_ctx *uic = cb_data;\n \tstruct object *o = parse_object(the_repository, oid);\ndiff --git a/shallow.c b/shallow.c\nindex da9f1e28e93..189cfa4d90a 100644\n--- a/shallow.c\n+++ b/shallow.c\n@@ -596,7 +596,7 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,\n }\n \n static int mark_uninteresting(const char *refname, const struct object_id *oid,\n-\t\t\t      unsigned int flags, void *cb_data)\n+\t\t\t      unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\n@@ -707,7 +707,7 @@ struct commit_array {\n };\n \n static int add_ref(const char *refname, const struct object_id *oid,\n-\t\t   unsigned int flags, void *cb_data)\n+\t\t   unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit_array *ca = cb_data;\n \tALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);\ndiff --git a/submodule.c b/submodule.c\nindex e5c5d9aa6be..fac2bee0bec 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -916,7 +916,7 @@ static void free_submodules_oids(struct string_list *submodules)\n }\n \n static int has_remote(const char *refname, const struct object_id *oid,\n-\t\t      unsigned int flags, void *cb_data)\n+\t\t      unsigned int unused_flags, void *cb_data)\n {\n \treturn 1;\n }\n@@ -1223,7 +1223,7 @@ int push_unpushed_submodules(struct repository *r,\n }\n \n static int append_oid_to_array(const char *ref, const struct object_id *oid,\n-\t\t\t       unsigned int flags, void *data)\n+\t\t\t       unsigned int unused_flags, void *data)\n {\n \tstruct oid_array *array = data;\n \toid_array_append(array, oid);\ndiff --git a/transport-helper.c b/transport-helper.c\nindex c207103aaff..b31c1198b8e 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -1090,13 +1090,15 @@ static int push_refs_with_export(struct transport *transport,\n \t\t\tif (strcmp(ref->name, ref->peer_ref->name)) {\n \t\t\t\tif (!ref->deletion) {\n \t\t\t\t\tconst char *name;\n-\t\t\t\t\tunsigned int flag;\n+\t\t\t\t\tunsigned int ref_flags;\n \n \t\t\t\t\t/* Follow symbolic refs (mainly for HEAD). */\n-\t\t\t\t\tname = resolve_ref_unsafe(ref->peer_ref->name,\n-\t\t\t\t\t\t\t\t  RESOLVE_REF_READING,\n-\t\t\t\t\t\t\t\t  &oid, &flag);\n-\t\t\t\t\tif (!name || !(flag & REF_ISSYMREF))\n+\t\t\t\t\tname = resolve_ref_unsafe(\n+\t\t\t\t\t\tref->peer_ref->name,\n+\t\t\t\t\t\tRESOLVE_REF_READING, &oid,\n+\t\t\t\t\t\t&ref_flags);\n+\t\t\t\t\tif (!name ||\n+\t\t\t\t\t    !(ref_flags & REF_ISSYMREF))\n \t\t\t\t\t\tname = ref->peer_ref->name;\n \n \t\t\t\t\tstrbuf_addf(&buf, \"%s:%s\", name, ref->name);\ndiff --git a/transport.c b/transport.c\nindex 5b6d5d29388..00f4906e12b 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -80,7 +80,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\tconst char *localname;\n \t\tconst char *tmp;\n \t\tconst char *remotename;\n-\t\tunsigned int flag = 0;\n+\t\tunsigned int ref_flags = 0;\n \t\t/*\n \t\t * Check suitability for tracking. Must be successful /\n \t\t * already up-to-date ref create/modify (not delete).\n@@ -96,10 +96,10 @@ static void set_upstreams(struct transport *transport, struct ref *refs,\n \t\t/* Follow symbolic refs (mainly for HEAD). */\n \t\tlocalname = ref->peer_ref->name;\n \t\tremotename = ref->name;\n-\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING,\n-\t\t\t\t\t NULL, &flag);\n-\t\tif (tmp && flag & REF_ISSYMREF &&\n-\t\t\tstarts_with(tmp, \"refs/heads/\"))\n+\t\ttmp = resolve_ref_unsafe(localname, RESOLVE_REF_READING, NULL,\n+\t\t\t\t\t &ref_flags);\n+\t\tif (tmp && ref_flags & REF_ISSYMREF &&\n+\t\t    starts_with(tmp, \"refs/heads/\"))\n \t\t\tlocalname = tmp;\n \n \t\t/* Both source and destination must be local branches. */\ndiff --git a/upload-pack.c b/upload-pack.c\nindex cb652db4f78..6300af75f20 100644\n--- a/upload-pack.c\n+++ b/upload-pack.c\n@@ -1169,7 +1169,7 @@ static int mark_our_ref(const char *refname, const char *refname_full,\n }\n \n static int check_ref(const char *refname_full, const struct object_id *oid,\n-\t\t     unsigned int flag, void *cb_data)\n+\t\t     unsigned int unused_flags, void *cb_data)\n {\n \tconst char *refname = strip_namespace(refname_full);\n \n@@ -1193,7 +1193,7 @@ static void format_session_id(struct strbuf *buf, struct upload_pack_data *d) {\n }\n \n static int send_ref(const char *refname, const struct object_id *oid,\n-\t\t    unsigned int flag, void *cb_data)\n+\t\t    unsigned int unused_flags, void *cb_data)\n {\n \tstatic const char *capabilities = \"multi_ack thin-pack side-band\"\n \t\t\" side-band-64k ofs-delta shallow deepen-since deepen-not\"\n@@ -1236,15 +1236,15 @@ static int send_ref(const char *refname, const struct object_id *oid,\n }\n \n static int find_symref(const char *refname, const struct object_id *oid,\n-\t\t       unsigned int flag, void *cb_data)\n+\t\t       unsigned int flags, void *cb_data)\n {\n \tconst char *symref_target;\n \tstruct string_list_item *item;\n \n-\tif ((flag & REF_ISSYMREF) == 0)\n+\tif ((flags & REF_ISSYMREF) == 0)\n \t\treturn 0;\n-\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flag);\n-\tif (!symref_target || (flag & REF_ISSYMREF) == 0)\n+\tsymref_target = resolve_ref_unsafe(refname, 0, NULL, &flags);\n+\tif (!symref_target || (flags & REF_ISSYMREF) == 0)\n \t\tdie(\"'%s' is a symref but it is not?\", refname);\n \titem = string_list_append(cb_data, strip_namespace(refname));\n \titem->util = xstrdup(strip_namespace(symref_target));\ndiff --git a/walker.c b/walker.c\nindex c1b82504f51..af8ce53a15b 100644\n--- a/walker.c\n+++ b/walker.c\n@@ -216,7 +216,7 @@ static int interpret_target(struct walker *walker, char *target, struct object_i\n }\n \n static int mark_complete(const char *path, const struct object_id *oid,\n-\t\t\t unsigned int flag, void *cb_data)\n+\t\t\t unsigned int unused_flags, void *cb_data)\n {\n \tstruct commit *commit = lookup_commit_reference_gently(the_repository,\n \t\t\t\t\t\t\t       oid, 1);\ndiff --git a/worktree.c b/worktree.c\nindex 58c958e055a..69291ce4985 100644\n--- a/worktree.c\n+++ b/worktree.c\n@@ -559,7 +559,7 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \tfor (p = worktrees; *p; p++) {\n \t\tstruct worktree *wt = *p;\n \t\tstruct object_id oid;\n-\t\tunsigned int flag;\n+\t\tunsigned int flags;\n \n \t\tif (wt->is_current)\n \t\t\tcontinue;\n@@ -567,10 +567,9 @@ int other_head_refs(each_ref_fn fn, void *cb_data)\n \t\tstrbuf_reset(&refname);\n \t\tstrbuf_worktree_ref(wt, &refname, \"HEAD\");\n \t\tif (refs_resolve_ref_unsafe(get_main_ref_store(the_repository),\n-\t\t\t\t\t    refname.buf,\n-\t\t\t\t\t    RESOLVE_REF_READING,\n-\t\t\t\t\t    &oid, &flag))\n-\t\t\tret = fn(refname.buf, &oid, flag, cb_data);\n+\t\t\t\t\t    refname.buf, RESOLVE_REF_READING,\n+\t\t\t\t\t    &oid, &flags))\n+\t\t\tret = fn(refname.buf, &oid, flags, cb_data);\n \t\tif (ret)\n \t\t\tbreak;\n \t}\n-- \ngitgitgadget\n"},{"id":"447614","messageId":"CAFQ2z_Oxq67XO20oG7Tokk48wm5ZzHRR3GDi4PG5wg7FMJ89aA@mail.gmail.com","threadId":"57344","inReplyTo":"xmqq8ruub35i.fsf@gitster.g","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@google.com","sentAt":"2022-02-03T14:29:42Z","receivedAt":"2022-02-03T14:29:56Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"On Wed, Feb 2, 2022 at 12:03 AM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>\n> > The post-image LGTM, but I'm also a bit \"meh\" on the churn just for\n> > signed->unsigned, especially given the conflict with my in-flight\n> > ab/no-errno-from-resolve-ref-unsafe. But it's not too bad, and if Junio\n> > hasn't complained about it...\n>\n> I won't complain myself.  I'd still try to help newer developers,\n> but my intention is to make it the responsibility for individual\n> developers to make sure their topic works well with topics in\n> flight ;-)\n\nI'm sending v3 based on seen.\n\n> Between \"enum\" and #define that is stored in \"unsigned\", neither\n> gives us much type safety in C; \"enum\" may be somewhat worse by\n> giving a false sense of having a type safety that does not really\n> exist, than \"unsigned int\" that is more honestly defeats such a\n> false sense of safety.  So I have no strong preference either way.\n\nNeither gives true type safety, and I don't know if an enum is kosher\nat all; shouldn't the value always be one of the enumerees, strictly\nspeaking?\n\nI proposed both options because a distinct typename lets me jump to\nthe definition of the flags easily through ctags.\n\nAnother idea is to mark the type of the flags by its name, eg.\ntransaction_flags, resolve_flags, reftype_flags etc. This wouldn't\nhelp with ctags, but it does help with readability.\n\n-- \nHan-Wen Nienhuys - Google Munich\nI work 80%. Don't expect answers from me on Fridays.\n--\n\nGoogle Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich\n\nRegistergericht und -nummer: Hamburg, HRB 86891\n\nSitz der Gesellschaft: Hamburg\n\nGeschäftsführer: Paul Manicle, Halimah DeLaine Prado\n"},{"id":"447627","messageId":"220203.8635kz6d2o.gmgdl@evledraar.gmail.com","threadId":"57344","inReplyTo":"CAFQ2z_Oxq67XO20oG7Tokk48wm5ZzHRR3GDi4PG5wg7FMJ89aA@mail.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-02-03T17:53:55Z","receivedAt":"2022-02-03T18:05:08Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Feb 03 2022, Han-Wen Nienhuys wrote:\n\n> On Wed, Feb 2, 2022 at 12:03 AM Junio C Hamano <gitster@pobox.com> wrote:\n>>\n>> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>>\n>> > The post-image LGTM, but I'm also a bit \"meh\" on the churn just for\n>> > signed->unsigned, especially given the conflict with my in-flight\n>> > ab/no-errno-from-resolve-ref-unsafe. But it's not too bad, and if Junio\n>> > hasn't complained about it...\n>>\n>> I won't complain myself.  I'd still try to help newer developers,\n>> but my intention is to make it the responsibility for individual\n>> developers to make sure their topic works well with topics in\n>> flight ;-)\n>\n> I'm sending v3 based on seen.\n>\n>> Between \"enum\" and #define that is stored in \"unsigned\", neither\n>> gives us much type safety in C; \"enum\" may be somewhat worse by\n>> giving a false sense of having a type safety that does not really\n>> exist, than \"unsigned int\" that is more honestly defeats such a\n>> false sense of safety.  So I have no strong preference either way.\n>\n> Neither gives true type safety, and I don't know if an enum is kosher\n> at all; shouldn't the value always be one of the enumerees, strictly\n> speaking?\n\nNo, it's nice so you can use it in switch/case, but it's also a\nperfectly legit use-case to use it for bitfields.\n\nAnd as I noted e.g. gdb will understand that and give you pretty-printed\nflags based on that, which is very nice for debugging.\n\nAnd it's also just nice for readability and source navigation. I.e. if\nit's \"unsigned int foo_flags\" and I find \"foo_flags\" with [ce]tags I'll\nonly find all other uses of \"foo_flags\".\n\nWhereas the enum will give me its definition, which usually has comments\netc.\n\nTo be fair it's usually easy to find it even without that, because\nyou'll find a use of a relevant \"#define\" pretty soon, and can navigate\nto that. But sometimes that's 1-2 functions away if the flag is being\npassed along.\n\nSo being able to navigate straight from the function arguments is nice,\nas you can do with structs and other types.\n\n> I proposed both options because a distinct typename lets me jump to\n> the definition of the flags easily through ctags.\n\nI'm not sure I understand you here. I use ctags (via Emacs) and it's\nperfectly capable of finding both \"enum xyz\" and \"typedef enum { ... }\nxyz\":\n    \n    $ make TAGS\n    $ grep -e rewrite_result -e parse_opt_option_flags TAGS\n    static enum rewrite_result line_log_rewrite_one(1285,32804\n    enum parse_opt_option_flags 39,772\n            enum parse_opt_option_flags flags;137,4133\n    static enum rewrite_result rewrite_one_1(3608,101152\n    static enum rewrite_result rewrite_one(3645,102081\n    enum rewrite_result 445,12193\n    typedef enum rewrite_result (*rewrite_parent_fn_t)rewrite_parent_fn_t451,12279\n\nHrm, that's etags actually, but the same is true of \"make tags\":\n    \n    $ grep -e rewrite_result -e parse_opt_option_flags tags\n    line_log_rewrite_one    line-log.c      /^static enum rewrite_result line_log_rewrite_one(st/\n    parse_opt_option_flags  parse-options.h 39\n    rewrite_one_1   revision.c      /^static enum rewrite_result rewrite_one_1(struct re/\n    rewrite_one     revision.c      /^static enum rewrite_result rewrite_one(struct rev_/\n    rewrite_result  revision.h      445\n\nIn any case, both [ce]tags find a typdef'd and non-typedef'd variant,\ndon't they?\n\n> Another idea is to mark the type of the flags by its name, eg.\n> transaction_flags, resolve_flags, reftype_flags etc. This wouldn't\n> help with ctags, but it does help with readability.\n\nYes, enums or not, what I was also pointing out in\nhttps://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\nis that changing just one logical set of flags at a time would make this\nmuch easier to review.\n\nIt doesn't matter for the end result as long as we end up with \"unsigned\nint\" everywhere, but would with enums.\n\n"},{"id":"447632","messageId":"CAFQ2z_NWM0F1uY==rCrc2pvJYjgPyOHz5aLFLSng-DvgiQVxqw@mail.gmail.com","threadId":"57344","inReplyTo":"220203.8635kz6d2o.gmgdl@evledraar.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@google.com","sentAt":"2022-02-03T18:16:04Z","receivedAt":"2022-02-03T18:16:24Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"On Thu, Feb 3, 2022 at 7:05 PM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:\n> > I proposed both options because a distinct typename lets me jump to\n> > the definition of the flags easily through ctags.\n>\n> I'm not sure I understand you here. I use ctags (via Emacs) and it's\n\n\"I proposed both options\" (ie. enum or typedef) , so we are in\nresounding agreement.\n\n> > Another idea is to mark the type of the flags by its name, eg.\n> > transaction_flags, resolve_flags, reftype_flags etc. This wouldn't\n> > help with ctags, but it does help with readability.\n>\n> Yes, enums or not, what I was also pointing out in\n> https://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\n> is that changing just one logical set of flags at a time would make this\n> much easier to review.\n>\n> It doesn't matter for the end result as long as we end up with \"unsigned\n> int\" everywhere, but would with enums.\n\nNot sure if you need to review it in that detail. If you change a\ndefinition in the .h file,  the compiler will complain about all\nmismatches. So it doesn't need human verification once you know it\ncompiles.\n\n-- \nHan-Wen Nienhuys - Google Munich\nI work 80%. Don't expect answers from me on Fridays.\n--\n\nGoogle Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich\n\nRegistergericht und -nummer: Hamburg, HRB 86891\n\nSitz der Gesellschaft: Hamburg\n\nGeschäftsführer: Paul Manicle, Halimah DeLaine Prado\n"},{"id":"447634","messageId":"xmqqo83nvm8w.fsf@gitster.g","threadId":"57344","inReplyTo":"220203.8635kz6d2o.gmgdl@evledraar.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-02-03T18:27:43Z","receivedAt":"2022-02-03T18:27:47Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> Yes, enums or not, what I was also pointing out in\n> https://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\n> is that changing just one logical set of flags at a time would make this\n> much easier to review.\n\nAnother thing to consider is how to make this play better with other\ntopics in flight.  Basing a huge single patch on top of 'seen' is a\nway to ensure that the patch will never be useful.  There won't be a\ngood time when such a topic can graduate.  The topic will also have\na hard time keeping up with what new topics add while waiting for\nwhat happen to be in 'seen' today (some of which may even go away\nwithout graduating) all graduate.\n\nLimiting the scope to small and more stable subset of flags that are\nin 'master' and does not conflict (e.g. no new bit defined to the\nset of flags, no existing bit gets removed, no new callers that use\nthe bitset introduced) with other topics would incrementally improve\nthe code base, and makes progress in the sense that it reduces the\nremaining work.\n\n> It doesn't matter for the end result as long as we end up with \"unsigned\n> int\" everywhere, but would with enums.\n\nAs it won't be an error to assign to what has converted to enum a\nvalue that is in int or unsigned that comes from the part of the\ncode base that is not yet converted, so it may be OK either way.\n\nAssigning between converted \"unsigned\" and unconverted \"int\" may add\nunnecessary warnings during transitory period, but I think the story\nwould be the same for a flag bitset that is conveted into an \"enum\",\nwhich the compiler happens to make it \"unsigned\", which was originally\na signed \"int\".\n\nThanks.\n\n\n\n"},{"id":"447636","messageId":"CAFQ2z_Mmfp4wrHNo92ke7i7UF2bDL9v4oddRC4UKN0R9h2C-6Q@mail.gmail.com","threadId":"57344","inReplyTo":"xmqqo83nvm8w.fsf@gitster.g","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@google.com","sentAt":"2022-02-03T18:33:02Z","receivedAt":"2022-02-03T18:33:16Z","isPatch":true,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"On Thu, Feb 3, 2022 at 7:27 PM Junio C Hamano <gitster@pobox.com> wrote:\n> > Yes, enums or not, what I was also pointing out in\n> > https://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\n> > is that changing just one logical set of flags at a time would make this\n> > much easier to review.\n>\n> Another thing to consider is how to make this play better with other\n> topics in flight.  Basing a huge single patch on top of 'seen' is a\n> way to ensure that the patch will never be useful.  There won't be a\n> good time when such a topic can graduate.  The topic will also have\n> a hard time keeping up with what new topics add while waiting for\n> what happen to be in 'seen' today (some of which may even go away\n> without graduating) all graduate.\n>\n> Limiting the scope to small and more stable subset of flags that are\n> in 'master' and does not conflict (e.g. no new bit defined to the\n> set of flags, no existing bit gets removed, no new callers that use\n> the bitset introduced) with other topics would incrementally improve\n> the code base, and makes progress in the sense that it reduces the\n> remaining work.\n\nOK. But do we agree we want to use enums? Me and AEvar are in favor,\nanyone against?\n\n-- \nHan-Wen Nienhuys - Google Munich\nI work 80%. Don't expect answers from me on Fridays.\n--\n\nGoogle Germany GmbH, Erika-Mann-Strasse 33, 80636 Munich\n\nRegistergericht und -nummer: Hamburg, HRB 86891\n\nSitz der Gesellschaft: Hamburg\n\nGeschäftsführer: Paul Manicle, Halimah DeLaine Prado\n"},{"id":"447644","messageId":"xmqqtudfu5g8.fsf@gitster.g","threadId":"57344","inReplyTo":"CAFQ2z_Mmfp4wrHNo92ke7i7UF2bDL9v4oddRC4UKN0R9h2C-6Q@mail.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-02-03T19:15:51Z","receivedAt":"2022-02-03T19:15:54Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Han-Wen Nienhuys <hanwen@google.com> writes:\n\n> On Thu, Feb 3, 2022 at 7:27 PM Junio C Hamano <gitster@pobox.com> wrote:\n>> > Yes, enums or not, what I was also pointing out in\n>> > https://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\n>> > is that changing just one logical set of flags at a time would make this\n>> > much easier to review.\n>>\n>> Another thing to consider is how to make this play better with other\n>> topics in flight.  Basing a huge single patch on top of 'seen' is a\n>> way to ensure that the patch will never be useful.  There won't be a\n>> good time when such a topic can graduate.  The topic will also have\n>> a hard time keeping up with what new topics add while waiting for\n>> what happen to be in 'seen' today (some of which may even go away\n>> without graduating) all graduate.\n>>\n>> Limiting the scope to small and more stable subset of flags that are\n>> in 'master' and does not conflict (e.g. no new bit defined to the\n>> set of flags, no existing bit gets removed, no new callers that use\n>> the bitset introduced) with other topics would incrementally improve\n>> the code base, and makes progress in the sense that it reduces the\n>> remaining work.\n>\n> OK. But do we agree we want to use enums? Me and AEvar are in favor,\n> anyone against?\n\nNo strong preference either way from me.\n"},{"id":"447656","messageId":"220203.86tudf4oyd.gmgdl@evledraar.gmail.com","threadId":"57344","inReplyTo":"CAFQ2z_NWM0F1uY==rCrc2pvJYjgPyOHz5aLFLSng-DvgiQVxqw@mail.gmail.com","subject":"Re: [PATCH v2] refs.h: make all flags arguments unsigned","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-02-03T21:20:39Z","receivedAt":"2022-02-03T21:31:37Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Feb 03 2022, Han-Wen Nienhuys wrote:\n\n> On Thu, Feb 3, 2022 at 7:05 PM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:\n>> > I proposed both options because a distinct typename lets me jump to\n>> > the definition of the flags easily through ctags.\n>>\n>> I'm not sure I understand you here. I use ctags (via Emacs) and it's\n>\n> \"I proposed both options\" (ie. enum or typedef) , so we are in\n> resounding agreement.\n\nAh, so by \"because a distinct typename lets me jump to the definition of\nthe flags easily through ctags.\" you mean one of \"enum x\" or \"typedef\nenum { ... } x\", not just the latter?\n\n>> > Another idea is to mark the type of the flags by its name, eg.\n>> > transaction_flags, resolve_flags, reftype_flags etc. This wouldn't\n>> > help with ctags, but it does help with readability.\n>>\n>> Yes, enums or not, what I was also pointing out in\n>> https://lore.kernel.org/git/220201.86ilty9vq2.gmgdl@evledraar.gmail.com/\n>> is that changing just one logical set of flags at a time would make this\n>> much easier to review.\n>>\n>> It doesn't matter for the end result as long as we end up with \"unsigned\n>> int\" everywhere, but would with enums.\n>\n> Not sure if you need to review it in that detail. If you change a\n> definition in the .h file,  the compiler will complain about all\n> mismatches. So it doesn't need human verification once you know it\n> compiles.\n\nThat's true in C++ I think, but not C. Or do you have a compiler that'll\nwarn about e.g. this change:\n\t\n\tdiff --git a/refs.c b/refs.c\n\tindex addb26293b4..e6c3931ec00 100644\n\t--- a/refs.c\n\t+++ b/refs.c\n\t@@ -1078,7 +1078,7 @@ int ref_transaction_update(struct ref_transaction *transaction,\n\t \t\t\t   const char *refname,\n\t \t\t\t   const struct object_id *new_oid,\n\t \t\t\t   const struct object_id *old_oid,\n\t-\t\t\t   unsigned int flags, const char *msg,\n\t+\t\t\t   enum foobar flags, const char *msg,\n\t \t\t\t   struct strbuf *err)\n\t {\n\t \tassert(err);\n\tdiff --git a/refs.h b/refs.h\n\tindex 8f91a7f9ff2..63dde1da4de 100644\n\t--- a/refs.h\n\t+++ b/refs.h\n\t@@ -670,11 +670,12 @@ struct ref_transaction *ref_transaction_begin(struct strbuf *err);\n\t  * See the above comment \"Reference transaction updates\" for more\n\t  * information.\n\t  */\n\t+enum foobar { FOOBAR = 0 };\n\t int ref_transaction_update(struct ref_transaction *transaction,\n\t \t\t\t   const char *refname,\n\t \t\t\t   const struct object_id *new_oid,\n\t \t\t\t   const struct object_id *old_oid,\n\t-\t\t\t   unsigned int flags, const char *msg,\n\t+\t\t\t   enum foobar flags, const char *msg,\n\t \t\t\t   struct strbuf *err);\n\t \n\t /*\n\nWhat I'm referring to, keeping in mind that that doesn't warn, is that\nsince we can't get the compiler to whine about e.g. that \"flags\" being\ncompared against values not in the enum, or when I pass that \"enum\" to a\nnot-that-enum right after in ref_transaction_add_update() is that it's\nextra useful for reviewing these sorts of changes if what's logically\none flag is changed at a time, as opposed to a big search/replacement\n(and tracking things down for s/int/enum/ would force one to do that).\n\nFor doing this sort of change in C I find it to be a useful technique to do this:\n\t\n\tdiff --git a/refs.c b/refs.c\n\tindex addb26293b4..ab58dd8948d 100644\n\t--- a/refs.c\n\t+++ b/refs.c\n\t@@ -1078,7 +1078,7 @@ int ref_transaction_update(struct ref_transaction *transaction,\n\t \t\t\t   const char *refname,\n\t \t\t\t   const struct object_id *new_oid,\n\t \t\t\t   const struct object_id *old_oid,\n\t-\t\t\t   unsigned int flags, const char *msg,\n\t+\t\t\t   unsigned int *flags, const char *msg,\n\t \t\t\t   struct strbuf *err)\n\t {\n\t \tassert(err);\n\tdiff --git a/refs.h b/refs.h\n\tindex 8f91a7f9ff2..80ef4616838 100644\n\t--- a/refs.h\n\t+++ b/refs.h\n\t@@ -674,7 +674,7 @@ int ref_transaction_update(struct ref_transaction *transaction,\n\t \t\t\t   const char *refname,\n\t \t\t\t   const struct object_id *new_oid,\n\t \t\t\t   const struct object_id *old_oid,\n\t-\t\t\t   unsigned int flags, const char *msg,\n\t+\t\t\t   unsigned int *flags, const char *msg,\n\t \t\t\t   struct strbuf *err);\n\t \n\t /*\n\n\nWhich will get you a hard compilation error, e.g.:\n\t\n\t$ make builtin/update-ref.o\n\t    CC builtin/update-ref.o\n\tbuiltin/update-ref.c:205:8: error: incompatible integer to pointer conversion passing 'unsigned int' to parameter of type 'unsigned int *' [-Werror,-Wint-conversion]\n\t                                   update_flags | create_reflog_flag,\n\t                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\t./refs.h:677:21: note: passing argument to parameter 'flags' here\n\t                           unsigned int *flags, const char *msg,\n\t                                         ^\n\t1 error generated.\n\tmake: *** [Makefile:2542: builtin/update-ref.o] Error 1\n\nWhich you'd then \"fix\" like this:\n\t\t\n\tdiff --git a/builtin/update-ref.c b/builtin/update-ref.c\n\tindex a84e7b47a20..33bcde36871 100644\n\t--- a/builtin/update-ref.c\n\t+++ b/builtin/update-ref.c\n\t@@ -185,6 +185,7 @@ static void parse_cmd_update(struct ref_transaction *transaction,\n\t \tchar *refname;\n\t \tstruct object_id new_oid, old_oid;\n\t \tint have_old;\n\t+\tunsigned int f = update_flags | create_reflog_flag;\n\t \n\t \trefname = parse_refname(&next);\n\t \tif (!refname)\n\t@@ -202,7 +203,7 @@ static void parse_cmd_update(struct ref_transaction *transaction,\n\t \n\t \tif (ref_transaction_update(transaction, refname,\n\t \t\t\t\t   &new_oid, have_old ? &old_oid : NULL,\n\t-\t\t\t\t   update_flags | create_reflog_flag,\n\t+\t\t\t\t   &f,\n\t \t\t\t\t   msg, &err))\n\t \t\tdie(\"%s\", err.buf);\n\t \nNow, obviously those changes suck, but the point is that if you do it\nlike that you can be assured that you got all callsites, so if you first\nchange it to an \"int *\", then get it to compile, and then search/replace\nthe resulting hunks you just changed & repeat, you can be assured that\nyou got all the callers, and that we don't have cases left where an\n\"int\" becomes \"unsigned int\", or that our shiny new \"enum\" is\nimmediately passed as an \"int\" etc.\n"}]}