Handle bare Git SHA labels
ober
fe5999979dd77637acef25ac7019c715aa0de9c4
--- a/gitsafe/scanner.ss +++ b/gitsafe/scanner.ss @@ -218,14 +218,15 @@ [else (loop (+ i 1))])))) (def *git-sha-prefix-re* - (re "(?i:(^|[^A-Za-z0-9_])(?:old\\s+head|new\\s+head|head|commit|revision|rev|object|tree|parent|merge|merged|checkout|reset|rebase|tag)[^A-Za-z0-9_]{0,24}$)")) + (re "(?i:(^|[^A-Za-z0-9_])(?:old\\s+head|new\\s+head|old|new|head|commit|revision|rev|object|tree|parent|merge|merged|checkout|reset|rebase|tag)[^A-Za-z0-9_]{0,24}$)")) (def (git-object-id-length? s) (let ([n (string-length s)]) (or (= n 40) (= n 64)))) ;; Returns #t when a high-entropy hex match is in a Git object-id context, - ;; e.g. "OLD HEAD: <sha1>", "commit <sha1>", or "parent <sha1>". + ;; e.g. "OLD: <sha1>", "OLD HEAD: <sha1>", "commit <sha1>", + ;; or "parent <sha1>". (def (in-git-sha-context? line match-start matched) (and (git-object-id-length? matched) (let* ([prefix-start (max 0 (- match-start 96))] --- a/test/test-gitsafe.ss +++ b/test/test-gitsafe.ss @@ -325,6 +325,8 @@ [findings (scan-content "rebase.log" (string-append "OLD HEAD: 89ca49128bc2f2f38480be0e697d02a3a5339121\n" + "OLD: 7b01c18b510818a7eb98159139687905f1ff4845\n" + "NEW: 7b01c18b510818a7eb98159139687905f1ff4845\n" "commit 89ca49128bc2f2f38480be0e697d02a3a5339121\n" "parent 89ca49128bc2f2f38480be0e697d02a3a5339121\n") c)])