diff tests/test-share-safe.t @ 46017:705c37f22859

upgrade: add support for experimental safe share mode Recently we introduce the share-safe functionality which makes shares share requirements and config of share source. This patch adds support to `debugupgraderepo` command to upgrade repository to share-safe mode when `format.exp-share-safe` config is enabled. Differential Revision: https://phab.mercurial-scm.org/D9144
author Pulkit Goyal <7895pulkit@gmail.com>
date Thu, 25 Jun 2020 13:13:21 +0530
parents 8d72e29ad1e0
children c6a1fa42e325
line wrap: on
line diff
--- a/tests/test-share-safe.t	Mon Nov 30 14:11:03 2020 +0530
+++ b/tests/test-share-safe.t	Thu Jun 25 13:13:21 2020 +0530
@@ -292,3 +292,89 @@
   [255]
   $ hg showconfig ui.curses -R ../shared1
   false
+
+  $ cd ../
+
+Test that upgrading using debugupgraderepo works
+=================================================
+
+  $ hg init non-share-safe --config format.exp-share-safe=false
+  $ cd non-share-safe
+  $ hg debugrequirements
+  dotencode
+  fncache
+  generaldelta
+  revlogv1
+  sparserevlog
+  store
+  $ echo foo > foo
+  $ hg ci -Aqm 'added foo'
+  $ echo bar > bar
+  $ hg ci -Aqm 'added bar'
+
+Create a share before upgrading
+
+  $ cd ..
+  $ hg share non-share-safe nss-share
+  updating working directory
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg debugrequirements -R nss-share
+  dotencode
+  fncache
+  generaldelta
+  revlogv1
+  shared
+  sparserevlog
+  store
+  $ cd non-share-safe
+
+Upgrade
+
+  $ hg debugupgraderepo -q
+  requirements
+     preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
+     added: exp-sharesafe
+  
+  $ hg debugupgraderepo --run -q
+  upgrade will perform the following actions:
+  
+  requirements
+     preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
+     added: exp-sharesafe
+  
+  repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
+
+  $ hg debugrequirements
+  dotencode
+  exp-sharesafe
+  fncache
+  generaldelta
+  revlogv1
+  sparserevlog
+  store
+
+  $ cat .hg/requires
+  exp-sharesafe
+
+  $ cat .hg/store/requires
+  dotencode
+  fncache
+  generaldelta
+  revlogv1
+  sparserevlog
+  store
+
+  $ hg log -GT "{node}: {desc}\n"
+  @  f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
+  |
+  o  f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
+  
+
+Make sure existing shares still works
+
+  $ hg log -GT "{node}: {desc}\n" -R ../nss-share
+  @  f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
+  |
+  o  f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
+  
+  $ hg unshare -R ../nss-share