fix regular expression used for matching RCS keywords
The function RcsKeywords.expand_keyword() uses a regular expression to detect keywords in lines of a file. This expression treated the closing $-sign of the keyword as optional. This fails when a line contains an invalid keyword declaration which lacks the trailing $-sign, followed by a valid keyword declaration.
For example, consider this line from a file in the ccvs CVS repository:
#ident "@(#)cvs/contrib/pcl-cvs:$Name: Id
"
Here, the CVS server expands the Id
keyword, and it does not expand
the Name
keyword (which lacks a trailing $-sign).
Our regular expression would split this line into two match groups:
1: #ident "@(#)cvs/contrib/pcl-cvs:$Name: $ 2: Id$
Neither match produces a valid keyword and hence expand_keyword() would not expand keywords on this line.
Tweak our test data to cover the above example, and fix the regular
expression such that the trailing $-sign is required. With this change
in place we match the Id
part of the above example and expand keywords
on this line just like the CVS server does.
Migrated from D6684 (view on Phabricator)