Mercurial > hg-stable
view tests/test-casecollision-merge.t @ 16423:a150923b49ba
revlog: avoid an expensive string copy
This showed up in a statprof profile of "hg svn rebuildmeta", which
is read-intensive on the changelog. This two-line patch improved
the performance of that command by 10%.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Thu, 12 Apr 2012 20:26:33 -0700 |
parents | d550168f11ce |
children | cbf2ea2f5ca1 |
line wrap: on
line source
run only on case-insensitive filesystems $ "$TESTDIR/hghave" icasefs || exit 80 ################################ test for branch merging ################################ $ hg init repo1 $ cd repo1 create base revision $ echo base > base.txt $ hg add base.txt $ hg commit -m 'base' add same file in different case on both heads $ echo a > a.txt $ hg add a.txt $ hg commit -m 'add a.txt' $ hg update 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo A > A.TXT $ hg add A.TXT $ hg commit -m 'add A.TXT' created new head merge another, and fail with case-folding collision $ hg merge abort: case-folding collision between a.txt and A.TXT [255] check clean-ness of working directory $ hg status $ hg parents --template '{rev}\n' 2 $ cd .. ################################ test for linear updates ################################ $ hg init repo2 $ cd repo2 create base revision (rev:0) $ hg import --bypass --exact - <<EOF > # HG changeset patch > # User null > # Date 1 0 > # Node ID e1bdf414b0ea9c831fd3a14e94a0a18e1410f98b > # Parent 0000000000000000000000000000000000000000 > add a > > diff --git a/a b/a > new file mode 100644 > --- /dev/null > +++ b/a > @@ -0,0 +1,3 @@ > +this is line 1 > +this is line 2 > +this is line 3 > EOF applying patch from stdin create rename revision (rev:1) $ hg import --bypass --exact - <<EOF > # HG changeset patch > # User null > # Date 1 0 > # Node ID 9dca9f19bb91851bc693544b598b0740629edfad > # Parent e1bdf414b0ea9c831fd3a14e94a0a18e1410f98b > rename a to A > > diff --git a/a b/A > rename from a > rename to A > EOF applying patch from stdin update to base revision, and modify 'a' $ hg update 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo 'this is added line' >> a update to current tip linearly $ hg update 1 merging a and A to A 0 files updated, 1 files merged, 0 files removed, 0 files unresolved check status and contents of file $ hg status -A M A $ cat A this is line 1 this is line 2 this is line 3 this is added line