git: df834e06bbc7 - main - git-arc: Just strip escape sequences form arc log

From: Warner Losh <imp_at_FreeBSD.org>
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"