Mercurial > hg
view tests/test-bookmarks-current.t @ 44261:04a3ae7aba14
chg: force-set LC_CTYPE on server start to actual value from the environment
Python 3.7+ will "coerce" the LC_CTYPE variable in many instances, and this can
cause issues with chg being able to start up. D7550 attempted to fix this, but a
combination of a misreading of the way that python3.7 does the coercion and an
untested state (LC_CTYPE being set to an invalid value) meant that this was
still not quite working.
This change will cause differences between chg and hg: hg will have the LC_CTYPE
environment variable coerced, while chg will not. This is unlikely to cause any
detectable behavior differences in what Mercurial itself outputs, but it does
have two known effects:
- When using hg, the coerced LC_CTYPE will be passed to subprocesses, even
non-python ones. Using chg will remove the coercion, and this will not
happen. This is arguably more correct behavior on chg's part.
- On macOS, if you set your region to Brazil but your language to English,
this isn't representable in locale strings, so macOS sets LC_CTYPE=UTF-8. If
this value is passed along when ssh'ing to a non-macOS machine, some
functions (such as locale.setlocale()) may raise an exception due to an
unsupported locale setting. This is most easily encountered when doing an
interactive commit/split/etc. when using ui.interface=curses.
Differential Revision: https://phab.mercurial-scm.org/D8039
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Wed, 29 Jan 2020 13:39:50 -0800 |
parents | c48738923dba |
children | 95c4cca641f6 |
line wrap: on
line source
$ hg init no bookmarks $ hg bookmarks no bookmarks set set bookmark X $ hg bookmark X list bookmarks $ hg bookmark * X -1:000000000000 list bookmarks with color $ hg --config extensions.color= --config color.mode=ansi \ > bookmark --color=always \x1b[0;32m * \x1b[0m\x1b[0;32mX\x1b[0m\x1b[0;32m -1:000000000000\x1b[0m (esc) update to bookmark X $ hg bookmarks * X -1:000000000000 $ hg update X 0 files updated, 0 files merged, 0 files removed, 0 files unresolved list bookmarks $ hg bookmarks * X -1:000000000000 rename $ hg bookmark -m X Z list bookmarks $ cat .hg/bookmarks.current Z (no-eol) $ cat .hg/bookmarks 0000000000000000000000000000000000000000 Z $ hg bookmarks * Z -1:000000000000 new bookmarks X and Y, first one made active $ hg bookmark Y X list bookmarks $ hg bookmark X -1:000000000000 * Y -1:000000000000 Z -1:000000000000 $ hg bookmark -d X commit $ echo 'b' > b $ hg add b $ hg commit -m'test' list bookmarks $ hg bookmark * Y 0:719295282060 Z -1:000000000000 Verify that switching to Z updates the active bookmark: $ hg update Z 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (activating bookmark Z) $ hg bookmark Y 0:719295282060 * Z -1:000000000000 Switch back to Y for the remaining tests in this file: $ hg update Y 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (activating bookmark Y) delete bookmarks $ hg bookmark -d Y $ hg bookmark -d Z list bookmarks $ hg bookmark no bookmarks set update to tip $ hg update tip 0 files updated, 0 files merged, 0 files removed, 0 files unresolved set bookmark Y using -r . but make sure that the active bookmark is not activated $ hg bookmark -r . Y list bookmarks, Y should not be active $ hg bookmark Y 0:719295282060 now, activate Y $ hg up -q Y set bookmark Z using -i $ hg bookmark -r . -i Z $ hg bookmarks * Y 0:719295282060 Z 0:719295282060 deactivate active bookmark using -i $ hg bookmark -i Y $ hg bookmarks Y 0:719295282060 Z 0:719295282060 $ hg up -q Y $ hg bookmark -i $ hg bookmarks Y 0:719295282060 Z 0:719295282060 $ hg bookmark -i no active bookmark $ hg up -q Y $ hg bookmarks * Y 0:719295282060 Z 0:719295282060 deactivate active bookmark while renaming $ hg bookmark -i -m Y X $ hg bookmarks X 0:719295282060 Z 0:719295282060 bare update moves the active bookmark forward and clear the divergent bookmarks $ echo a > a $ hg ci -Am1 adding a $ echo b >> a $ hg ci -Am2 $ hg bookmark X@1 -r 1 $ hg bookmark X@2 -r 2 $ hg update X 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (activating bookmark X) $ hg bookmarks * X 0:719295282060 X@1 1:cc586d725fbe X@2 2:49e1c4e84c58 Z 0:719295282060 $ hg update 1 files updated, 0 files merged, 0 files removed, 0 files unresolved updating bookmark X $ hg bookmarks * X 2:49e1c4e84c58 Z 0:719295282060 test deleting .hg/bookmarks.current when explicitly updating to a revision $ echo a >> b $ hg ci -m. $ hg up -q X $ test -f .hg/bookmarks.current try to update to it again to make sure we don't set and then unset it $ hg up -q X $ test -f .hg/bookmarks.current $ hg up -q 1 $ test -f .hg/bookmarks.current [1] when a bookmark is active, hg up -r . is analogous to hg book -i <active bookmark> $ hg up -q X $ hg up -q . $ test -f .hg/bookmarks.current [1] issue 4552 -- simulate a pull moving the active bookmark $ hg up -q X $ printf "Z" > .hg/bookmarks.current $ hg log -T '{activebookmark}\n' -r Z Z $ hg log -T '{bookmarks % "{active}\n"}' -r Z Z test that updating to closed branch head also advances active bookmark $ hg commit --close-branch -m "closed" $ hg update -q ".^1" $ hg bookmark Y $ hg bookmarks X 3:4d6bd4bfb1ae * Y 3:4d6bd4bfb1ae Z 0:719295282060 $ hg update 0 files updated, 0 files merged, 0 files removed, 0 files unresolved updating bookmark Y $ hg bookmarks X 3:4d6bd4bfb1ae * Y 4:8fa964221e8e Z 0:719295282060 $ hg parents -q 4:8fa964221e8e Checks command to retrieve active bookmark ------------------------------------------ display how "{activebookmark}" template is unsuitable for the task $ hg book -T '- {activebookmark}\n' - - Y - $ hg book -r . W $ hg book -T '- {activebookmark}\n' - Y - - Y - $ hg bookmarks -ql . Y $ hg bookmarks --inactive $ hg bookmarks -ql . abort: no active bookmark! [255]