tests/test-convert-tagsbranch-topology.t
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Mon, 23 Dec 2013 15:29:51 -0800
changeset 20207 cd62532c62a1
parent 20117 aa9385f983fa
child 22046 7a9cbb315d84
permissions -rw-r--r--
obsolete: order of magnitude speedup in _computebumpedset Reminder: a changeset is said "bumped" if it tries to obsolete a immutable changeset. The previous algorithm for computing bumped changeset was: 1) Get all public changesets 2) Find all they successors 3) Search for stuff that are eligible for being "bumped" (mutable and non obsolete) The entry size of this algorithm is `O(len(public))` which is mostly the same as `O(len(repo))`. Even this this approach mean fewer obsolescence marker are traveled, this is not very scalable. The new algorithm is: 1) For each potential bumped changesets (non obsolete mutable) 2) iterate over precursors 3) if a precursors is public. changeset is bumped We travel more obsolescence marker, but the entry size is much smaller since the amount of potential bumped should remains mostly stable with time `O(1)`. On some confidential gigantic repo this move bumped computation from 15.19s to 0.46s (×33 speedup…). On "smaller" repo (mercurial, cubicweb's review) no significant gain were seen. The additional traversal of obsolescence marker is probably probably counter balance the advantage of it. Other optimisation could be done in the future (eg: sharing precursors cache for divergence detection)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     1
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
     2
  $ "$TESTDIR/hghave" git || exit 80
16892
cfd892b7569f test-convert: disable autocrlf for git
Eduard-Cristian Stefan <alexandrul.ct@gmail.com>
parents: 13756
diff changeset
     3
  $ echo "[core]" >> $HOME/.gitconfig
cfd892b7569f test-convert: disable autocrlf for git
Eduard-Cristian Stefan <alexandrul.ct@gmail.com>
parents: 13756
diff changeset
     4
  $ echo "autocrlf = false" >> $HOME/.gitconfig
16954
8f36806b8f6a test-convert: disable autocrlf for git
Eduard-Cristian Stefan <alexandrul.ct@gmail.com>
parents: 16913
diff changeset
     5
  $ echo "[core]" >> $HOME/.gitconfig
8f36806b8f6a test-convert: disable autocrlf for git
Eduard-Cristian Stefan <alexandrul.ct@gmail.com>
parents: 16913
diff changeset
     6
  $ echo "autocrlf = false" >> $HOME/.gitconfig
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
     7
  $ echo "[extensions]" >> $HGRCPATH
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
     8
  $ echo "convert=" >> $HGRCPATH
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
     9
  $ echo '[convert]' >> $HGRCPATH
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    10
  $ echo 'hg.usebranchnames = True' >> $HGRCPATH
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    11
  $ echo 'hg.tagsbranch = tags-update' >> $HGRCPATH
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    12
  $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    13
  $ GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    14
  $ GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    15
  $ GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    16
  $ GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    17
  $ GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    18
  $ count=10
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    19
  $ action()
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    20
  > {
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    21
  >     GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    22
  >     GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    23
  >     git "$@" >/dev/null 2>/dev/null || echo "git command error"
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    24
  >     count=`expr $count + 1`
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    25
  > }
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    26
  $ glog()
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    27
  > {
20117
aa9385f983fa tests: don't load unnecessary graphlog extension
Martin Geisler <martin@geisler.net>
parents: 16954
diff changeset
    28
  >     hg log -G --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    29
  > }
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    30
  $ convertrepo()
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    31
  > {
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    32
  >     hg convert --datesort git-repo hg-repo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    33
  > }
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    34
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    35
Build a GIT repo with at least 1 tag
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    36
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    37
  $ mkdir git-repo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    38
  $ cd git-repo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    39
  $ git init >/dev/null 2>&1
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    40
  $ echo a > a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    41
  $ git add a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    42
  $ action commit -m "rev1"
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    43
  $ action tag -m "tag1" tag1
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    44
  $ cd ..
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    45
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    46
Do a first conversion
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    47
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    48
  $ convertrepo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    49
  initializing destination hg-repo repository
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    50
  scanning source...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    51
  sorting...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    52
  converting...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    53
  0 rev1
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    54
  updating tags
13756
6b7077df4aa5 convert: add bookmarks reading support to git backend
Edouard Gomez <ed.gomez@free.fr>
parents: 12534
diff changeset
    55
  updating bookmarks
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    56
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    57
Simulate upstream  updates after first conversion
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    58
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    59
  $ cd git-repo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    60
  $ echo b > a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    61
  $ git add a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    62
  $ action commit -m "rev2"
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    63
  $ action tag -m "tag2" tag2
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    64
  $ cd ..
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    65
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    66
Perform an incremental conversion
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    67
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    68
  $ convertrepo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    69
  scanning source...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    70
  sorting...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    71
  converting...
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    72
  0 rev2
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    73
  updating tags
13756
6b7077df4aa5 convert: add bookmarks reading support to git backend
Edouard Gomez <ed.gomez@free.fr>
parents: 12534
diff changeset
    74
  updating bookmarks
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    75
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    76
Print the log
9431
d1b135f2f415 convert: fix history topology when using hg.tagsbranch
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    77
12534
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    78
  $ cd hg-repo
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    79
  $ glog
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    80
  o  3 "update tags" files: .hgtags
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    81
  |
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    82
  | o  2 "rev2" files: a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    83
  | |
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    84
  o |  1 "update tags" files: .hgtags
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    85
   /
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    86
  o  0 "rev1" files: a
3ee3d7634e94 tests: unify test-convert-tagsbranch-topology
Matt Mackall <mpm@selenic.com>
parents: 9431
diff changeset
    87
  
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16892
diff changeset
    88
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16892
diff changeset
    89
  $ cd ..