From: Kousik Sanagavarapu <five231003@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Christian Couder <christian.couder@gmail.com>,
Eric Sunshine <sunshine@sunshineco.com>,
Oswald Buddenhagen <oswald.buddenhagen@gmx.de>,
Kousik Sanagavarapu <five231003@gmail.com>
Subject: [PATCH v3 0/2] Add new "signature" atom
Date: Sun, 4 Jun 2023 23:52:45 +0530 [thread overview]
Message-ID: <20230604185815.15761-1-five231003@gmail.com> (raw)
In-Reply-To: <20230602023105.17979-1-five231003@gmail.com>
Hi,
Thanks for the reviews.
Changes since v2:
PATCH 1/2 -
Changed "it's" to "its" in the commit message.
Changed the `case` statement in prereq GPG2 to use the glob pattern
instead. This has the advantage of being precise and less typo-prone.
PATCH 2/2 -
Changed "it's" to "its" in the commit message.
Changed the `if else` to `switch` when handling options in
grab_siganture(). This increases the readability of code unlike the
previous `if else` checking for the type of option, which also
didn't comply with the style.
The same kind of refactoring of can be done in other parts of
ref-filter as well. ZheNing Hu has done some work on it [1], but it
looks like they were generated by some kind of a script and there
are unnecessary braces around.
[1]: https://lore.kernel.org/git/2321b873d0c0223e553492d80ced2a51d8ce7281.1629189701.git.gitgitgadget@gmail.com/
Range-diff against v2:
1: 87465ef1a8 ! 1: a7ed6628e0 t/lib-gpg: introduce new prereq GPG2
@@ Commit message
is the "First stable version of GnuPG integrating OpenPGP and
S/MIME".
- Use this version or it's successors for tests that will fail
for
+ Use this version or its successors for tests that will fail for
versions less than v2.0.0 because of the difference in the
output on
stderr between the versions (v2.* vs v0.* or v2.* vs v1.*).
Skip if
the GPG version detected is less than v2.0.0.
@@ t/lib-gpg.sh: test_lazy_prereq GPG '
+ test $? != 127 || exit 1
+
+ case "$gpg_version" in
-+ "gpg (GnuPG) 0."* | "gpg (GnuPG) 1.*")
++ "gpg (GnuPG) "[01].*)
+ say "This test requires a GPG version >= v2.0.0"
+ exit 1
+ ;;
2: 690869aa47 ! 2: b6da96dab2 ref-filter: add new "signature" atom
@@ Metadata
## Commit message ##
ref-filter: add new "signature" atom
- Duplicate the code for outputting the signature and it's other
+ Duplicate the code for outputting the signature and its other
parameters for commits and tags in ref-filter from pretty. In
the
future, this will help in getting rid of the current duplicate
implementations of such logic everywhere, when ref-filter can
do
everything that pretty is doing.
- The new atom "signature" and it's friends are equivalent to the
existing
+ The new atom "signature" and its friends are equivalent to the
existing
pretty formats as follows:
%(signature) = %GG
@@ Documentation/git-for-each-ref.txt: symref::
+ The fingerprint of the GPG signature of a commit.
+
+signature:primarykeyfingerprint::
-+ The Primary Key fingerprint of the GPG signature of a commit.
++ The primary key fingerprint of the GPG signature of a commit.
+
+signature:trustlevel::
-+ The Trust level of the GPG signature of a commit. Possible
++ The trust level of the GPG signature of a commit. Possible
+ outputs are `ultimate`, `fully`, `marginal`, `never` and
`undefined`.
+
worktreepath::
@@ ref-filter.c: static struct used_atom {
} email_option;
+ struct {
+ enum { S_BARE, S_GRADE, S_SIGNER, S_KEY,
-+ S_FINGERPRINT, S_PRI_KEY_FP,
S_TRUST_LEVEL} option;
++ S_FINGERPRINT, S_PRI_KEY_FP,
S_TRUST_LEVEL } option;
+ } signature;
struct refname_atom refname;
char *head;
@@ ref-filter.c: static void grab_person(const char *who, struct
atom_value *val, i
+ struct used_atom *atom = &used_atom[i];
+ const char *name = atom->name;
+ struct atom_value *v = &val[i];
++ int opt;
+
+ if (!!deref != (*name == '*'))
+ continue;
+ if (deref)
+ name++;
+
-+ if (!skip_prefix(name, "signature", &name) || (*name &&
-+ *name != ':'))
++ if (!skip_prefix(name, "signature", &name) ||
++ (*name && *name != ':'))
+ continue;
+ if (!*name)
+ name = NULL;
+ else
+ name++;
-+ if (parse_signature_option(name) < 0)
++
++ opt = parse_signature_option(name);
++ if (opt < 0)
+ continue;
+
+ if (!signature_checked) {
@@ ref-filter.c: static void grab_person(const char *who, struct
atom_value *val, i
+ signature_checked = 1;
+ }
+
-+ if (atom->u.signature.option == S_BARE)
++ switch (opt) {
++ case S_BARE:
+ v->s = xstrdup(sigc.output ? sigc.output: "");
-+ else if (atom->u.signature.option == S_SIGNER)
++ break;
++ case S_SIGNER:
+ v->s = xstrdup(sigc.signer ? sigc.signer : "");
-+ else if (atom->u.signature.option == S_GRADE) {
++ break;
++ case S_GRADE:
+ switch (sigc.result) {
+ case 'G':
+ switch (sigc.trust_level) {
@@ ref-filter.c: static void grab_person(const char *who, struct
atom_value *val, i
+ case 'Y':
+ case 'R':
+ v->s = xstrfmt("%c", (char)sigc.result);
++ break;
+ }
-+ }
-+ else if (atom->u.signature.option == S_KEY)
++ break;
++ case S_KEY:
+ v->s = xstrdup(sigc.key ? sigc.key : "");
-+ else if (atom->u.signature.option == S_FINGERPRINT)
-+ v->s = xstrdup(sigc.fingerprint ?
sigc.fingerprint : "");
-+ else if (atom->u.signature.option == S_PRI_KEY_FP)
-+ v->s = xstrdup(sigc.primary_key_fingerprint ?
sigc.primary_key_fingerprint : "");
-+ else if (atom->u.signature.option == S_TRUST_LEVEL)
++ break;
++ case S_FINGERPRINT:
++ v->s = xstrdup(sigc.fingerprint ?
++ sigc.fingerprint : "");
++ break;
++ case S_PRI_KEY_FP:
++ v->s = xstrdup(sigc.primary_key_fingerprint ?
++ sigc.primary_key_fingerprint :
"");
++ break;
++ case S_TRUST_LEVEL:
+ v->s =
xstrdup(gpg_trust_level_to_str(sigc.trust_level));
++ break;
++ }
+ }
++
+ if (signature_checked)
+ signature_check_clear(&sigc);
+}
Kousik Sanagavarapu (2):
t/lib-gpg: introduce new prereq GPG2
ref-filter: add new "signature" atom
Documentation/git-for-each-ref.txt | 27 ++++
ref-filter.c | 126 ++++++++++++++++++-
t/lib-gpg.sh | 21 ++++
t/t6300-for-each-ref.sh | 191 +++++++++++++++++++++++++++++
t/t7510-signed-commit.sh | 7 ++
5 files changed, 370 insertions(+), 2 deletions(-)
--
2.41.0
next prev parent reply other threads:[~2023-06-04 18:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-29 18:32 [GSoC][PATCH 0/2] Add new "signature" atom Kousik Sanagavarapu
2023-05-29 18:32 ` [PATCH 1/2] t/lib-gpg: introduce new prereq GPG2 Kousik Sanagavarapu
2023-06-01 8:39 ` Christian Couder
2023-05-29 18:32 ` [PATCH 2/2] ref-filter: add new "signature" atom Kousik Sanagavarapu
2023-06-01 8:58 ` Christian Couder
2023-06-01 9:11 ` [GSoC][PATCH 0/2] Add " Christian Couder
2023-06-02 2:11 ` [PATCH v2 " Kousik Sanagavarapu
2023-06-02 2:11 ` [PATCH v2 1/2] t/lib-gpg: introduce new prereq GPG2 Kousik Sanagavarapu
2023-06-02 6:50 ` Christian Couder
2023-06-02 12:58 ` Kousik Sanagavarapu
2023-06-02 2:11 ` [PATCH v2 2/2] ref-filter: add new "signature" atom Kousik Sanagavarapu
2023-06-02 8:23 ` Oswald Buddenhagen
2023-06-02 7:29 ` [PATCH v2 0/2] Add " Junio C Hamano
2023-06-02 7:51 ` Eric Sunshine
2023-06-03 0:16 ` Junio C Hamano
2023-06-02 13:13 ` Kousik Sanagavarapu
2023-06-04 18:22 ` Kousik Sanagavarapu [this message]
2023-06-04 18:22 ` [PATCH v3 1/2] t/lib-gpg: introduce new prereq GPG2 Kousik Sanagavarapu
2023-06-04 18:22 ` [PATCH v3 2/2] ref-filter: add new "signature" atom Kousik Sanagavarapu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230604185815.15761-1-five231003@gmail.com \
--to=five231003@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=oswald.buddenhagen@gmx.de \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.