git: df834e06bbc7 - main - git-arc: Just strip escape sequences form arc log
Date: Mon, 15 Jan 2024 02:24:28 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=df834e06bbc78c03cb6b35f074ae43673c9ce463
commit df834e06bbc78c03cb6b35f074ae43673c9ce463
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-01-15 02:22:04 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-01-15 02:23:45 +0000
git-arc: Just strip escape sequences form arc log
Just strip escape sequences and Warning: lines from 'arc list' output. I
upgraded and they changed and git arc list broke. This restores its
functionality.
Note: jhb didn't like this, so if others object, I'll fix...
Sponsored by: Netflix
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D36553
---
tools/tools/git/git-arc.sh | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
index d06d6be3d41e..a207899d5fbe 100644
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -142,6 +142,15 @@ __EOF__
exit 1
}
+#
+# Filter the output of arc list to remove the warnings as above, as well as any
+# stray escape sequences that are in the list (it interferes with the parsing)
+#
+arc_list()
+{
+ arc list "$@" | sed 's/\x1b\[[0-9;]*m//g' | grep -v '^Warning: '
+}
+
diff2phid()
{
local diff
@@ -194,8 +203,7 @@ title2diff()
local title
title=$(echo $1 | sed 's/"/\\"/g')
- # arc list output always includes ANSI escape sequences, strip them.
- arc list | sed 's/\x1b\[[0-9;]*m//g' | \
+ arc_list |
awk -F': ' '{
if (substr($0, index($0, FS) + length(FS)) == "'"$title"'") {
print substr($1, match($1, "D[1-9][0-9]*"))
@@ -406,7 +414,7 @@ gitarc__list()
local chash commit commits diff openrevs title
commits=$(build_commit_list "$@")
- openrevs=$(arc list)
+ openrevs=$(arc_list)
for commit in $commits; do
chash=$(git show -s --format='%C(auto)%h' "$commit")
@@ -422,7 +430,7 @@ gitarc__list()
# differently and keep the entire status.
title=$(git show -s --format=%s "$commit")
diff=$(echo "$openrevs" | \
- awk -F'D[1-9][0-9]*:\.\\[m ' \
+ awk -F'D[1-9][0-9]*: ' \
'{if ($2 == "'"$(echo $title | sed 's/"/\\"/g')"'") print $0}')
if [ -z "$diff" ]; then
echo "No Review : $title"