view tests/test-narrow-patch.t @ 44861:065421e12248

files: speed up `hg files` when no flags change display It's not the first time I see slowness from this command slow down tools built on top of hg. The majority of the time is spent merely printing the result before this change, which is clearly not how it should be (especially since the computation of the result also looks slow). Running `hg files` in mozilla-central: parent revision: 1,260s this commit: 0,683s this commit without batching ui.write: 0,931s this commit replacing the body of the loop with `pass`: 0,566s This looks like a prime candidate for a rust fast path, but until then, it seems reasonable to optimize the python. Differential Revision: https://phab.mercurial-scm.org/D8586
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
date Tue, 26 May 2020 08:15:09 -0400
parents dc01484606da
children
line wrap: on
line source

#testcases flat tree

  $ . "$TESTDIR/narrow-library.sh"

#if tree
  $ cat << EOF >> $HGRCPATH
  > [experimental]
  > treemanifest = 1
  > EOF
#endif

create full repo

  $ hg init master
  $ cd master

  $ mkdir inside
  $ echo inside > inside/f1
  $ mkdir outside
  $ echo outside > outside/f1
  $ hg ci -Aqm 'initial'

  $ echo modified > inside/f1
  $ hg ci -qm 'modify inside'

  $ echo modified > outside/f1
  $ hg ci -qm 'modify outside'

  $ cd ..

  $ hg clone --narrow ssh://user@dummy/master narrow --include inside
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 3 changesets with 2 changes to 1 files
  new changesets *:* (glob)
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd narrow

Can show patch touching paths outside

  $ hg log -p
  changeset:   2:* (glob)
  tag:         tip
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     modify outside
  
  
  changeset:   1:* (glob)
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     modify inside
  
  diff -r * -r * inside/f1 (glob)
  --- a/inside/f1	Thu Jan 01 00:00:00 1970 +0000
  +++ b/inside/f1	Thu Jan 01 00:00:00 1970 +0000
  @@ -1,1 +1,1 @@
  -inside
  +modified
  
  changeset:   0:* (glob)
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     initial
  
  diff -r 000000000000 -r * inside/f1 (glob)
  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  +++ b/inside/f1	Thu Jan 01 00:00:00 1970 +0000
  @@ -0,0 +1,1 @@
  +inside
  

  $ hg status --rev 1 --rev 2

Can show copies inside the narrow clone

  $ hg cp inside/f1 inside/f2
  $ hg diff --git
  diff --git a/inside/f1 b/inside/f2
  copy from inside/f1
  copy to inside/f2