# HG changeset patch # User Matt Mackall # Date 1153681229 18000 # Node ID e57df017640d14c3aa7e3b15389a0b153dfddfe3 # Parent ddf404954092fbf64247aab43d48ad9457637698# Parent 56e98084e040480feaf8d5a8c3e568025091d14f Merge with crew diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2666,7 +2666,7 @@ def tag(ui, repo, name, rev_=None, **opt very useful to compare different revision, to go back to significant earlier versions or to mark branch points as releases, etc. - If no revision is given, the tip is used. + If no revision is given, the parent of the working directory is used. To facilitate version control, distribution, and merging of tags, they are stored as a file named ".hgtags" which is managed @@ -2686,7 +2686,12 @@ def tag(ui, repo, name, rev_=None, **opt if rev_: r = hex(repo.lookup(rev_)) else: - r = hex(repo.changelog.tip()) + p1, p2 = repo.dirstate.parents() + if p1 == nullid: + raise util.Abort(_('no revision to tag')) + if p2 != nullid: + raise util.Abort(_('outstanding uncommitted merges')) + r = hex(p1) repo.tag(name, r, opts['local'], opts['message'], opts['user'], opts['date']) diff --git a/mercurial/hgweb/server.py b/mercurial/hgweb/server.py --- a/mercurial/hgweb/server.py +++ b/mercurial/hgweb/server.py @@ -198,6 +198,7 @@ def create_server(ui, repo): self.webdirmaker = hgwebdir self.repoviewmaker = hgweb self.reqmaker = wsgiapplication(self.make_handler) + self.daemon_threads = True def make_handler(self): if self.webdir_conf: diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -241,6 +241,7 @@ def nl2br(text): return text.replace('\n', '
\n') def obfuscate(text): + text = unicode(text, 'utf-8', 'replace') return ''.join(['&#%d;' % ord(c) for c in text]) def domain(author): diff --git a/tests/test-tag b/tests/test-tag --- a/tests/test-tag +++ b/tests/test-tag @@ -19,6 +19,11 @@ hg tag -l -d "1000000 0" "bleah1" 1 cat .hgtags cat .hg/localtags +hg update 0 +hg tag -d "1000000 0" "foobar" +cat .hgtags +cat .hg/localtags + hg tag -l 'xx newline' hg tag -l 'xx:xx' diff --git a/tests/test-tag.out b/tests/test-tag.out --- a/tests/test-tag.out +++ b/tests/test-tag.out @@ -25,5 +25,8 @@ use of 'hg tag NAME [REV]' is deprecated 0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah 0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah0 c5c60883086f5526bd3e36814b94a73a4e75e172 bleah1 +0 files updated, 0 files merged, 1 files removed, 0 files unresolved +0acdaf8983679e0aac16e811534eb49d7ee1f2b4 foobar +c5c60883086f5526bd3e36814b94a73a4e75e172 bleah1 abort: '\n' cannot be used in a tag name abort: ':' cannot be used in a tag name