Mercurial > hg
view tests/test-update-issue1456.t @ 20275:2123d27ff75d
backout: avoid update on simple case.
Before the changeset the backout process was:
1) go to <target>
2) revert to <target> parent
3) update back to changeset we came from
The two update steps can takes a very long time to move back and forth unrelated
file change between <target> and current working directory.
The new process is just merging current working directory with the parent of
<target> using <target> as ancestor. This give the very same result but skip
the two updates. On big repo with a lot of files and changes that save a lots of
time (x20 for one week window).
The "merge" version (hg backout --merge) is still done with upgrades. We could
imagine using in memory commit to speed it up but this is another fish.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 08 Jan 2014 14:53:46 -0800 |
parents | 41abe2e3e3b7 |
children | 7a9cbb315d84 |
line wrap: on
line source
$ "$TESTDIR/hghave" execbit || exit 80 $ rm -rf a $ hg init a $ cd a $ echo foo > foo $ hg ci -qAm0 $ echo toremove > toremove $ echo todelete > todelete $ chmod +x foo toremove todelete $ hg ci -qAm1 Test that local removed/deleted, remote removed works with flags $ hg rm toremove $ rm todelete $ hg co -q 0 $ echo dirty > foo $ hg up -c abort: uncommitted changes [255] $ hg up -q $ cat foo dirty $ hg st -A M foo C todelete C toremove Validate update of standalone execute bit change: $ hg up -C 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ chmod -x foo $ hg ci -m removeexec nothing changed [1] $ hg up -C 0 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg up 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg st $ cd ..