Subject: 28.2; `vc-cvs-parse-root' returns wrong results
From: "Farblos" <[email-masked]>
To: [email-masked]
Date: Mon, 06 Feb 2023 13:43:44 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

This reproduces also in master.

Not sure why nobody has reported this.  Most likely because the current
callers of `vc-cvs-parse-root' care only about some aspects of the
actual result of `vc-cvs-parse-root'.

$ emacs -Q

In scratch buffer evaluate the following (specification of Ctrl-J
omitted for clarity):

(load-library "vc-cvs")
t

;; this one is correct in the sense that 3rd element of the list is nil
;; (making it a local root for `vc-cvs-repository-hostname'), but
;; probably is not what the author has intended:
(vc-cvs-parse-root ":local:/var/lib/cvs")
("local" nil nil "var:/lib/cvs")

;; but this one is completely broken:
(vc-cvs-parse-root "/var/lib/cvs")
("ext" nil "var" "/lib/cvs")

There might be different fixes, but IMHO the regexp used in function
`vc-cvs-parse-uhp' should be anchored to beginning of line or string:

  "\\`\\([^/]+\\)\\(/.*\\)"