[PATCH] [GSOC] ref-filter: solve bugs caused by enumeration
- From
ZheNing Hu via GitGitGadget <gitgitgadget@gmail.com>
- Date
- May 5, 2021, 15:31 UTC
- Message-ID
- <pull.949.git.1620228664666.gitgitgadget@gmail.com>
From: ZheNing Hu <adlternative@gmail.com>
Johannes Schindelin seems to have introduced a bug in cc72385f(for-each-ref: let upstream/push optionally report the remote name), it use `atom->u.remote_ref.option` which is a member of enumeration in the judgment statement. When we use other members in the enumeration `used_atom.u`, and it happened to fill in `remote_ref.push`, this judgment may still be established and produces errors. So replace the judgment statement with `starts_with(name, "push")` to fix the error.
Signed-off-by: ZheNing Hu <adlternative@gmail.com>
---
[GSOC] ref-filter: solve bugs caused by enumeration
This is the problem I found in the implementation of git for-each-ref
--format="%(notes)".
I added a new option to the enum used_atom.u , but the program seems to
output the value of "%(push)".
After research, it should be the problem of incorrect use of enumeration
values here.
Thanks, may the force be with you!Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-949%2Fadlternative%2Fref-filter-enum-bug-fix-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-949/adlternative/ref-filter-enum-bug-fix-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/949
ref-filter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ref-filter.c b/ref-filter.c index a0adb4551d87..f467f2fbbb73 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1730,7 +1730,7 @@ static int populate_value(struct ref_array_item *ref, struct strbuf *err) else v->s = xstrdup(""); continue; - } else if (atom->u.remote_ref.push) { + } else if (starts_with(name, "push")) { const char *branch_name; v->s = xstrdup(""); if (!skip_prefix(ref->refname, "refs/heads/", base-commit: 311531c9de557d25ac087c1637818bd2aad6eb3a
-- gitgitgadget