Mercurial > evolve
view tests/test-share.t @ 4848:535ab2609e45
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).
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Mon, 16 Sep 2019 12:44:38 -0700 |
parents | 6c0992ce05f7 |
children |
line wrap: on
line source
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