Ludovic Courtès skriver: > Marius Bakke skribis: > >> + (version (cond ((and (string-contains commit "-g") >> + (match (string-split commit #\-) >> + ((version ... revision g+commit) >> + (and (> (string-length g+commit) 4) >> + (string-every char-set:digit revision) >> + (string-every char-set:hex-digit >> + (string-drop g+commit 1)))) >> + (_ #f))) >> + ;; This looks like a 'git describe' style ID. Drop >> + ;; the 'v' prefix if applicable. >> + (if (and (string-prefix? "v" commit) >> + (char-set-contains? char-set:digit >> + (string-take >> + (string-drop commit 1) >> + 1))) >> + (string-drop commit 1) >> + commit)) >> + ((and (> (string-length commit) 1) >> + (string-prefix? "v" commit) >> + (char-set-contains? char-set:digit >> + (string-ref commit 1))) >> + (string-drop commit 1)) ;looks like a tag like "v1.0" >> + (else >> + (string-append "git." >> + (if (< (string-length commit) 7) >> + commit >> + (string-take commit 7)))))) > > For clarity, I’d extract this as a ‘commit->version-string’ procedure. > > Like Xinglu writes, it’d be great to add a sentence in the manual about > these IDs. Thanks for the feedback! Looking at this again, I realized tags would not be used as version either which seemed like an oversight. So I fixed(?) that too and vastly simplified this patch. :-) Also adjusted the test to more thoroughly excercise the new commit->version-string procedure with the different arguments, and updated the documentation. Pushed in: 1dc3825e99 git: 'resolve-reference' handles 'git describe'-style commit IDs. 16ef7b4938 transformations: Git tags and 'git describe' style IDs are used as version. Thanks, Marius