commands: label from user is in local encoding
repo.branchtags().keys() are in UTF-8, so the label should be converted to UTF-8
before checking for a naming conflict. Keep the original label for ui.status()
--- a/mercurial/commands.py Mon Feb 01 09:34:35 2010 -0600
+++ b/mercurial/commands.py Fri Feb 05 04:33:08 2010 -0600
@@ -426,11 +426,12 @@
repo.dirstate.setbranch(label)
ui.status(_('reset working directory to branch %s\n') % label)
elif label:
- if not opts.get('force') and label in repo.branchtags():
+ utflabel = encoding.fromlocal(label)
+ if not opts.get('force') and utflabel in repo.branchtags():
if label not in [p.branch() for p in repo.parents()]:
raise util.Abort(_('a branch of the same name already exists'
' (use --force to override)'))
- repo.dirstate.setbranch(encoding.fromlocal(label))
+ repo.dirstate.setbranch(utflabel)
ui.status(_('marked working directory as branch %s\n') % label)
else:
ui.write("%s\n" % encoding.tolocal(repo.dirstate.branch()))