# HG changeset patch # User Andrew Shadura # Date 1385927604 21600 # Node ID 970394b6bd9748925ae5fb1f45e8e99af016b2df # Parent 35bfe5405fb42df8e750bd5c7497c1c6a3d4a91d hgk: fix tag list parser (issue4101) As tags may have embedded spaces, and "hg tags" command doesn't escape them, the output of the command doesn't make a well-formed list, so we can't just iterate over it. Instead, apply a simple regexp to transform it to a list which we actually use. Line boundary matching should be enabled. diff -r 35bfe5405fb4 -r 970394b6bd97 contrib/hgk --- a/contrib/hgk Sun Dec 01 13:45:00 2013 -0600 +++ b/contrib/hgk Sun Dec 01 13:53:24 2013 -0600 @@ -457,12 +457,10 @@ } } - foreach {tag rev} $tags { + foreach {- tag rev id} [regexp -inline -all -line {^(.+\S)\s+(\d+):(\S+)} $tags] { # we use foreach as Tcl8.4 doesn't support lassign - foreach {- id} [split $rev :] { - lappend tagids($tag) $id - lappend idtags($id) $tag - } + lappend tagids($tag) $id + lappend idtags($id) $tag } set status [catch {exec $env(HG) --config ui.report_untrusted=false heads} heads]