tests/test-dirstate.t
author Patrick Mezard <patrick@mezard.eu>
Tue, 31 Jul 2012 17:39:32 +0200
branchstable
changeset 17319 a189d4470a34
parent 17095 45cf6a91a02d
child 17733 3c775c5a6c03
permissions -rw-r--r--
transplant: handle non-empty patches doing nothing (issue2806) If patch.patch() reports patched files when applying a changeset and the following commit says nothing changed, transplant used to abort with a RuntimeError, assuming something went wrong with patching. The mismatch is patch.patch() reports patched files, not changed ones. It could be modified to report changed files but it means duplicating work from status, may be expensive in the case of binary files, and is probably not that useful at API level. For instance, if two patches are applied on the working directory, the outcome may be nothing changed while each call would have returned modified files. The caller would have to call status() itself again. This patch fixes the issue by trusting patching code: if the patch succeeded and commit reports nothing changed, then nothing changed, patch() did not "dropped changes on the floor".

------ Test dirstate._dirs refcounting

  $ hg init t
  $ cd t
  $ mkdir -p a/b/c/d
  $ touch a/b/c/d/x
  $ touch a/b/c/d/y
  $ touch a/b/c/d/z
  $ hg ci -Am m
  adding a/b/c/d/x
  adding a/b/c/d/y
  adding a/b/c/d/z
  $ hg mv a z
  moving a/b/c/d/x to z/b/c/d/x (glob)
  moving a/b/c/d/y to z/b/c/d/y (glob)
  moving a/b/c/d/z to z/b/c/d/z (glob)

Test name collisions

  $ rm z/b/c/d/x
  $ mkdir z/b/c/d/x
  $ touch z/b/c/d/x/y
  $ hg add z/b/c/d/x/y
  abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y'
  [255]
  $ rm -rf z/b/c/d
  $ touch z/b/c/d
  $ hg add z/b/c/d
  abort: directory 'z/b/c/d' already in dirstate
  [255]

  $ cd ..

Issue1790: dirstate entry locked into unset if file mtime is set into
the future

Prepare test repo:

  $ hg init u
  $ cd u
  $ echo a > a
  $ hg add
  adding a
  $ hg ci -m1

Set mtime of a into the future:

  $ touch -t 202101011200 a

Status must not set a's entry to unset (issue1790):

  $ hg status
  $ hg debugstate
  n 644          2 2021-01-01 12:00:00 a
  $ cd ..