Comments
Patch
@@ -215,6 +215,31 @@
return bookmarks
def updatecmd(orig, ui, repo, node=None, rev=None, **kwargs):
+ if rev and node:
+ raise error.Abort(_("please specify just one revision"))
+
+ isselectivepull = repo.ui.configbool('remotenames', 'selectivepull', False)
+ if isselectivepull and ('date' not in kwargs or not kwargs['date']):
+ # Make sure that rev or node is present in the repo.
+ # Otherwise pull it from remote
+ try:
+ scmutil.revsingle(repo, rev or node)
+ except (error.RepoLookupError, error.Abort):
+ mayberemotebookmark = rev or node
+ ui.status(_('`%s` not found. Assuming it is a remote bookmark '
+ 'and trying to pull it\n') % mayberemotebookmark)
+ revrenames = dict((v, k) for k, v in _getrenames(ui).iteritems())
+ remote, rname = splitremotename(mayberemotebookmark)
+ paths = dict((path, url) for path, url in ui.configitems('paths'))
+ if remote in revrenames:
+ source = revrenames[remote]
+ elif remote in paths:
+ source = remote
+ else:
+ source = 'default'
+ rname = mayberemotebookmark
+ commands.pull(ui, repo, source=source, bookmark=[rname])
+
book = kwargs.get('bookmark')
if book:
del kwargs['bookmark']
@@ -156,3 +156,44 @@
$ hg bookmarks --remote
default/master 1:0238718db2b1
secondremote/master 1:0238718db2b1
+
+Update to the remote bookmark
+ $ hg update thirdbook
+ `thirdbook` not found. Assuming it is a remote bookmark and trying to pull it
+ pulling from ssh://user@dummy/remoterepo
+ no changes found
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg book --verbose
+ no bookmarks set
+ $ hg book --remote
+ default/master 1:0238718db2b1
+ default/thirdbook 0:1449e7934ec1
+ secondremote/master 1:0238718db2b1
+
+Trying to update to unknown bookmark
+ $ hg update unknownbook
+ `unknownbook` not found. Assuming it is a remote bookmark and trying to pull it
+ pulling from ssh://user@dummy/remoterepo
+ abort: remote bookmark unknownbook not found!
+ [255]
+
+Update to the remote bookmark from secondremote
+ $ hg update secondremote/secondbook
+ `secondremote/secondbook` not found. Assuming it is a remote bookmark and trying to pull it
+ pulling from ssh://user@dummy/secondremoterepo
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ (run 'hg update' to get a working copy)
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg book --remote
+ default/master 1:0238718db2b1
+ default/thirdbook 0:1449e7934ec1
+ secondremote/master 1:0238718db2b1
+ secondremote/secondbook 4:0022441e80e5
+
+Update make sure revsets work
+ $ hg up '.^'
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved