color: colorize based on output labels instead of parsing output
By overriding ui.write(), ui.write_err(), ui.popbuffer(), and ui.label(),
the color extension can avoid parsing command output and simply colorize
output based on labels.
As before, the color extension provides a list of default colors for
core commands/labels. Other extensions can provide their own defaults by
specifying a colortable dict (similar to cmdtable).
In this process, --color is promoted to a global option and the deprecated
--no-color option is removed.
a -> a not a symlink
% test replacing a file with a symlink
a -> b
popping symlink.patch
now at: base.patch
applying symlink.patch
now at: symlink.patch
a -> b
% test updating a symlink
a -> c
popping updatelink
now at: symlink.patch
applying updatelink
patching file a
a
now at: updatelink
a -> c
% test replacing a symlink with a file
popping replacelinkwithfile
now at: addlink
applying replacelinkwithfile
now at: replacelinkwithfile
sss
% test symlink removal
popping removesl.patch
now at: replacelinkwithfile
applying removesl.patch
now at: removesl.patch
C b
C c
C s