Mercurial > hg
view tests/test-basic.t @ 33088:65cadeea6c22
scmutil: add a cleanupnodes method for developers
It's now common that an old node gets replaced by zero or more new nodes,
that could happen with amend, rebase, histedit, etc. And it's a common
requirement to do bookmark movements, strip or obsolete nodes and even
moving working copy parent.
Previously, amend, rebase, history have their own logic doing the above.
This patch is an attempt to unify them and future code.
This enables new developers to be able to do "replace X with Y" thing
correctly, without any knowledge about bookmarks, strip or obsstore.
The next step will be migrating rebase to the new API, so it works inside a
transaction, and its code could be simplified.
author | Jun Wu <quark@fb.com> |
---|---|
date | Sun, 25 Jun 2017 13:31:56 -0700 |
parents | 75be14993fda |
children | 29653495cece |
line wrap: on
line source
Create a repository: $ hg config devel.all-warnings=true devel.default-date=0 0 largefiles.usercache=$TESTTMP/.cache/largefiles (glob) ui.slash=True ui.interactive=False ui.mergemarkers=detailed ui.promptecho=True web.address=localhost web\.ipv6=(?:True|False) (re) $ hg init t $ cd t Prepare a changeset: $ echo a > a $ hg add a $ hg status A a Writes to stdio succeed and fail appropriately #if devfull $ hg status 2>/dev/full A a $ hg status >/dev/full abort: No space left on device [255] $ hg status >/dev/full 2>&1 [1] $ hg status ENOENT 2>/dev/full [1] #endif $ hg commit -m test This command is ancient: $ hg history changeset: 0:acb14030fe0a tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: test Verify that updating to revision 0 via commands.update() works properly $ cat <<EOF > update_to_rev0.py > from mercurial import ui, hg, commands > myui = ui.ui.load() > repo = hg.repository(myui, path='.') > commands.update(myui, repo, rev=0) > EOF $ hg up null 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ $PYTHON ./update_to_rev0.py 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg identify -n 0 Poke around at hashes: $ hg manifest --debug b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a $ hg cat a a Verify should succeed: $ hg verify checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 1 changesets, 1 total revisions At the end... $ cd ..