diff --git a/hgext/remotenames.py b/hgext/remotenames.py --- a/hgext/remotenames.py +++ b/hgext/remotenames.py @@ -25,6 +25,10 @@ the server. Errors if bookmark does not exists on the server. If multiple bookmarks are specified using `-B` flag, fallbacks to default behavior. (default: False) + +remotenames.createremotebookmark + Boolean value indicating whether a creating a new bookmark on the server using + remotenames.pushtobookmark config is allowed or not. (default: False) """ from __future__ import absolute_import @@ -68,6 +72,9 @@ configitem('remotenames', 'pushtobookmark', default=False, ) +configitem('remotenames', 'createremotebookmark', + default=False, +) def extsetup(ui): exchange.pushdiscoverymapping['bookmarks'] = expushdiscoverybookmarks @@ -90,7 +97,7 @@ old = '' if bookmark in remotemarks: old = remotemarks[bookmark] - else: + elif not pushop.repo.ui.configbool('remotenames', 'createremotebookmark'): msg = _("bookmark '%s' does not exists on remote") raise error.Abort(msg % bookmark) diff --git a/tests/test-logexchange.t b/tests/test-logexchange.t --- a/tests/test-logexchange.t +++ b/tests/test-logexchange.t @@ -441,3 +441,52 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: Added a +Testing the remotenames.createbookmark config option + + $ hg bookmarks -R ../server2/ + bar 6:87d6d6676308 + foo 3:62615734edd5 + + $ hg push ../server2/ -B nonexistant + pushing to ../server2/ + searching for changes + abort: bookmark 'nonexistant' does not exists on remote + [255] + + $ hg push ../server2/ -r . -B nonexistant --config remotenames.createremotebookmark=True + pushing to ../server2/ + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + exporting bookmark nonexistant + + $ hg bookmarks -R ../server2/ + bar 6:87d6d6676308 + foo 3:62615734edd5 + nonexistant 9:aa6a885086c0 + + $ hg log -R ../server2/ -r tip + changeset: 9:aa6a885086c0 + branch: wat + bookmark: nonexistant + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: added foobar + +Check synchornising of remotenames after push + + $ hg log -G -r . + @ changeset: 9:aa6a885086c0 + | branch: wat + ~ tag: tip + remote bookmark: $TESTTMP/server2/nonexistant + remote bookmark: default/foo + remote branch: $TESTTMP/server2/wat + remote branch: default/wat + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: added foobar +