Mercurial > hg
view tests/test-merge-force.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 | 94c394653b2a |
children | eeecf29cc397 |
line wrap: on
line source
$ hg init $ echo a > a $ hg ci -qAm 'add a' $ echo b > b $ hg ci -qAm 'add b' $ hg up -qC 0 $ hg rm a $ hg ci -m 'rm a' created new head $ hg up -qC 1 $ rm a Local deleted a file, remote removed Should fail, since there are deleted files: $ hg merge abort: uncommitted changes (use 'hg status' to list changes) [255] Should succeed with --force: $ hg -v merge --force resolving manifests removing a 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) Should show 'a' as removed: $ hg status R a $ hg ci -m merge Should not show 'a': $ hg manifest b