git: 3d4a61a10bb7 - main - git-arc: Try harder to get the author name and email out of phab
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 02 Jul 2025 13:43:31 UTC
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=3d4a61a10bb7a921cee7a06696034e36fb221b95
commit 3d4a61a10bb7a921cee7a06696034e36fb221b95
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-07-02 13:42:42 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-07-02 13:42:42 +0000
git-arc: Try harder to get the author name and email out of phab
When patching, we use the querydiffs endpoint to get a name and email
for the revision's author. It's possible that this info isn't recorded,
in which case the results after post-processing are just "null".
However, if the diff has multiple revisions, the endpoint returns an
entry for each one, some of which may contain author info, others not.
So, the deleted code which tries to filter out "null" isn't sufficient,
since the value in question might be something like "<valid
name>\nnull".
Try to make this filtering a bit smarter to avoid generating incorrect
author info.
Reviewed by: jlduran
Reported by: des
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D51065
---
tools/tools/git/git-arc.sh | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
index b49721159799..d953a30cb90d 100644
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -582,17 +582,10 @@ patch_commit()
echo '{"revisionIDs": [ '"${diff#D}"' ]}' | \
arc_call_conduit -- differential.querydiffs |
jq -r '.response | flatten | .[]' > "$diff_data"
- author_addr=$(jq -r ".authorEmail?" "$diff_data" | sort -u)
- author_name=$(jq -r ".authorName?" "$diff_data" | sort -u)
-
- # JSON will return "null" when a field is not populated.
- # Turn this string into an empty one.
- if [ "$author_addr" = "null" ]; then
- author_addr=""
- fi
- if [ "$author_name" = "null" ]; then
- author_name=""
- fi
+ # If the differential revision has multiple revisions, just take the first
+ # non-null value we get.
+ author_addr=$(jq -r ".authorEmail?" "$diff_data" | grep -v '^null$' | head -n 1)
+ author_name=$(jq -r ".authorName?" "$diff_data" | grep -v '^null$' | head -n 1)
author=$(find_author "$user_addr" "$user_name" "$author_addr" "$author_name")