Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bookmarks.py @ 33022:e0a8dd6c87c7
bookmarks: factor out rename logic from commands
We keep the lock in the caller so that future devs are aware of the
locking implications.
author | Sean Farley <sean@farley.io> |
---|---|
date | Tue, 13 Jun 2017 11:10:22 -0700 |
parents | 9343fce87789 |
children | ee081f91b179 |
line wrap: on
line diff
--- a/mercurial/bookmarks.py Mon Jun 12 23:02:48 2017 -0700 +++ b/mercurial/bookmarks.py Tue Jun 13 11:10:22 2017 -0700 @@ -705,3 +705,24 @@ deactivate(repo) del marks[mark] marks.recordchange(tr) + +def rename(repo, tr, old, new, force=False, inactive=False): + """rename a bookmark from old to new + + If force is specified, then the new name can overwrite an existing + bookmark. + + If inactive is specified, then do not activate the new bookmark. + + Raises an abort error if old is not in the bookmark store. + """ + marks = repo._bookmarks + mark = checkformat(repo, new) + if old not in marks: + raise error.Abort(_("bookmark '%s' does not exist") % old) + marks.checkconflict(mark, force) + marks[mark] = marks[old] + if repo._activebookmark == old and not inactive: + activate(repo, mark) + del marks[old] + marks.recordchange(tr)