view tests/test-update-issue1456.t @ 18626:b114e41c4df3

addremove: don't audit the path for paths already in the dirstate Now that dirstate.walk returns None for paths under symlink directories, addremove doesn't need to validate each path it sees to look for files under symlinks. On a large repository this brings addremove from 6.3 seconds down to 3.65 (42%) since addremove no longer has to stat every directory of every file to determine if the file is inside a symlink directory. I put it through our benchmark and see no perf hit to any other commands.
author Durham Goode <durham@fb.com>
date Tue, 05 Feb 2013 14:36:19 -0800
parents 44bda93df90e
children ed676ed67a5c
line wrap: on
line source

  $ "$TESTDIR/hghave" execbit || exit 80

  $ rm -rf a
  $ hg init a
  $ cd a

  $ echo foo > foo
  $ hg ci -qAm0
  $ chmod +x foo
  $ hg ci -m1
  $ hg co -q 0
  $ echo dirty > foo
  $ hg up -c
  abort: uncommitted local changes
  [255]
  $ hg up -q
  $ cat foo
  dirty
  $ hg st -A
  M foo

Validate update of standalone execute bit change:

  $ hg up -C 0
  1 files updated, 0 files merged, 0 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
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg st

  $ cd ..