mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
bookmarks: factor out rename logic from commands
We keep the lock in the caller so that future devs are aware of the locking implications.
This commit is contained in:
parent
da73ed7374
commit
55d19ae197
@ -705,3 +705,24 @@ def delete(repo, tr, names):
|
|||||||
deactivate(repo)
|
deactivate(repo)
|
||||||
del marks[mark]
|
del marks[mark]
|
||||||
marks.recordchange(tr)
|
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)
|
||||||
|
@ -982,15 +982,7 @@ def bookmark(ui, repo, *names, **opts):
|
|||||||
raise error.Abort(_("new bookmark name required"))
|
raise error.Abort(_("new bookmark name required"))
|
||||||
elif len(names) > 1:
|
elif len(names) > 1:
|
||||||
raise error.Abort(_("only one new bookmark name allowed"))
|
raise error.Abort(_("only one new bookmark name allowed"))
|
||||||
mark = bookmarks.checkformat(repo, names[0])
|
bookmarks.rename(repo, tr, rename, names[0], force, inactive)
|
||||||
if rename not in marks:
|
|
||||||
raise error.Abort(_("bookmark '%s' does not exist")
|
|
||||||
% rename)
|
|
||||||
marks.checkconflict(mark, force)
|
|
||||||
marks[mark] = marks[rename]
|
|
||||||
if repo._activebookmark == rename and not inactive:
|
|
||||||
bookmarks.activate(repo, mark)
|
|
||||||
del marks[rename]
|
|
||||||
elif names:
|
elif names:
|
||||||
tr = repo.transaction('bookmark')
|
tr = repo.transaction('bookmark')
|
||||||
newact = None
|
newact = None
|
||||||
|
Loading…
Reference in New Issue
Block a user