tests/test-issue1502.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Thu, 07 May 2015 12:07:11 +0900
changeset 24997 12f3c7144a39
parent 19798 76df01e56e7f
child 26420 2fc86d92c4a9
permissions -rw-r--r--
mq: use dirstateguard instead of dirstate.invalidate (qrefresh) Before this patch, "mq.queue.refresh()" uses "dirstate.invalidate()" as a kind of "restore .hg/dirstate to the original status" during a failure. But it just discards changes in memory, and doesn't actually restore ".hg/dirstate". Then, it can't work as expected, if "dirstate.write()" is executed while processing. This patch uses "dirstateguard" instead of "dirstate.invalidate()" to restore ".hg/dirstate" during a failure even if "dirstate.write()" is executed before a failure. This patch also removes "beginparentchage()" and "endparentchange()", because "dirstateguard" makes them useless. This is a part of preparations to fix the issue that the recent (in memory) dirstate isn't visible to external processes (e.g. "precommit" hook).

http://mercurial.selenic.com/bts/issue1502

Initialize repository

  $ hg init foo
  $ touch foo/a && hg -R foo commit -A -m "added a"
  adding a

  $ hg clone foo foo1
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ echo "bar" > foo1/a && hg -R foo1 commit -m "edit a in foo1"
  $ echo "hi" > foo/a && hg -R foo commit -m "edited a foo"
  $ hg -R foo1 pull -u
  pulling from $TESTTMP/foo (glob)
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files (+1 heads)
  not updating: not a linear update
  (merge or update --check to force update)

  $ hg -R foo1 book branchy
  $ hg -R foo1 book
   * branchy                   1:e3e522925eff

Pull. Bookmark should not jump to new head.

  $ echo "there" >> foo/a && hg -R foo commit -m "edited a again"
  $ hg -R foo1 pull
  pulling from $TESTTMP/foo (glob)
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  (run 'hg update' to get a working copy)

  $ hg -R foo1 book
   * branchy                   1:e3e522925eff