Patchwork D2875: remotenames: introduce a config option to allow creation of remote bookmarks

login
register
mail settings
Submitter phabricator
Date March 15, 2018, 1:49 p.m.
Message ID <differential-rev-PHID-DREV-jbfkzukqoeksvycfsnsm-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/29534/
State New
Headers show

Comments

phabricator - March 15, 2018, 1:49 p.m.
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  This patch introduces another config option which if set to true, we can create
  new bookmarks on the server using push command. An earlier patch added
  capability to push to a certain bookmark on the server. If bookmark was not
  already present on the server, we errored out. With
  remotenames.createremotebookmark config set, the push will create that bookmark
  on the server.
  
  This series serves as a great feature for people who use bookmarks as after this
  you can push changesets to a bookmark which does not exists locally. In other
  words, you can push your changesets to a bookmark without having it locally.
  
  This series will help people in having a non-local bookmark workflow involving
  remotenames.
  
  The functionality added in this patch is equivalent to --create flag to push
  command added by hgremotenames extension.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2875

AFFECTED FILES
  hgext/remotenames.py
  tests/test-logexchange.t

CHANGE DETAILS




To: pulkit, #hg-reviewers
Cc: mercurial-devel

Patch

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
+  
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)