tests/test-share.t
author Kyle Lippincott <spectral@google.com>
Mon, 16 Sep 2019 12:44:38 -0700
changeset 4848 535ab2609e45
parent 4488 6c0992ce05f7
permissions -rw-r--r--
cmdstate: introduce a "saver" contextmanager and use it in place of save() Previously, the state was only saved in some paths out of these functions. This can be problematic, if the user ctrl-c's (or `kill -9`'s) the process, or we exit out of `relocate` for anything besides the "expected" reason, we won't record that we were in the middle of an evolve. One of our users has discovered that this leaves hg in a weird state; the user did something like this: ``` $ hg evolve <something goes wrong with the merge tool, hits ctrl-c> <deals with the merge conflicts> $ hg evolve --continue abort: no interrupted evolve to continue $ hg evolve abort: uncommitted changes # Note: commands.status.verbose=True is set. $ hg status M foo # The repository is in an unfinished *update* state. # No unresolved merge conflicts # To continue: hg update ``` The user did an `hg update`, but it didn't actually do anything besides take it out of the unfinished update state (the files were still dirty in the working directory).

Test that share-clones use the cache in the original repository.

  $ . $TESTDIR/testlib/common.sh

  $ hg init share-base
  $ cd share-base/
  $ cat >> .hg/hgrc <<EOF
  > [extensions]
  > evolve=
  > share=
  > EOF
  $ hg debugbuilddag .+3:branchpoint+4*branchpoint+2
  $ cd ..
  $ hg --config extensions.share= share -U share-base share-client
  $ cd share-client
  $ hg debugupdatecache
  $ test -d .hg/cache
  [1]
  $ test -d ../share-base/.hg/cache