tests/test-merge-force.t
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Fri, 04 Jan 2013 05:44:01 +0100
changeset 18272 95ef7a87c053
parent 15619 6c8573dd1b6b
child 19802 94c394653b2a
permissions -rw-r--r--
performance: speedup computation of hidden revisions In their current state, revset calls can be very costlys, as we test predicates on the entire repository. The hidden filter is very widely used, and needs to be very fast. This change drops revset calls in favor of direct revision manipulation. Performance test on my Mercurial checkout - 19857 total changesets, - 1584 obsolete changesets, - 13310 obsolescence markers. Before: ! hidden ! wall 0.077553 After this changes: ! hidden ! wall 0.011230 Performance test on a Mozilla central checkout: - 117293 total changesets, - 1 obsolete changeset, - 1 obsolescence marker. Before: ! hidden ! wall 0.389472 After: ! hidden ! wall 0.000079

  $ 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: outstanding 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