tests/test-transaction-rollback-on-revlog-split.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 23 Feb 2024 14:07:33 +0100
changeset 51436 827b89714a8d
parent 50819 3ccef7902070
child 51997 3f70ea5bcaeb
permissions -rw-r--r--
perf: add a --as-push option to perf::unbundle This turned out to make a quite significant difference.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
     1
Test correctness of revlog inline -> non-inline transition
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
     2
----------------------------------------------------------
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
     3
50366
a445194f0a4d backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50364
diff changeset
     4
We test various file length and naming pattern as this created issue in the
a445194f0a4d backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50364
diff changeset
     5
past.
a445194f0a4d backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50364
diff changeset
     6
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
     7
Helper extension to intercept renames and kill process
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
     8
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
     9
  $ cat > $TESTTMP/intercept_before_rename.py << EOF
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    10
  > import os
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    11
  > import signal
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    12
  > from mercurial import extensions, util
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    13
  > 
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    14
  > def extsetup(ui):
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    15
  >     def rename(orig, src, dest, *args, **kwargs):
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    16
  >         path = util.normpath(dest)
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    17
  >         if path.endswith(b'data/file.i'):
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    18
  >             os.kill(os.getpid(), signal.SIGKILL)
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    19
  >         return orig(src, dest, *args, **kwargs)
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    20
  >     extensions.wrapfunction(util, 'rename', rename)
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    21
  > EOF
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
    22
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    23
  $ cat > $TESTTMP/intercept_after_rename.py << EOF
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    24
  > import os
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    25
  > import signal
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    26
  > from mercurial import extensions, util
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    27
  > 
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    28
  > def extsetup(ui):
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    29
  >     def close(orig, *args, **kwargs):
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    30
  >         path = util.normpath(args[0]._atomictempfile__name)
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    31
  >         r = orig(*args, **kwargs)
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    32
  >         if path.endswith(b'/.hg/store/data/file.i'):
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    33
  >             os.kill(os.getpid(), signal.SIGKILL)
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    34
  >         return r
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    35
  >     extensions.wrapfunction(util.atomictempfile, 'close', close)
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    36
  > def extsetup(ui):
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    37
  >     def rename(orig, src, dest, *args, **kwargs):
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    38
  >         path = util.normpath(dest)
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    39
  >         r = orig(src, dest, *args, **kwargs)
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    40
  >         if path.endswith(b'data/file.i'):
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    41
  >             os.kill(os.getpid(), signal.SIGKILL)
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    42
  >         return r
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
    43
  >     extensions.wrapfunction(util, 'rename', rename)
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    44
  > EOF
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
    45
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    46
  $ cat > $TESTTMP/killme.py << EOF
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    47
  > import os
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    48
  > import signal
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    49
  > 
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    50
  > def killme(ui, repo, hooktype, **kwargs):
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    51
  >     os.kill(os.getpid(), signal.SIGKILL)
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    52
  > EOF
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    53
50313
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    54
  $ cat > $TESTTMP/reader_wait_split.py << EOF
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    55
  > import os
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    56
  > import signal
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    57
  > from mercurial import extensions, revlog, testing
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    58
  > def _wait_post_load(orig, self, *args, **kwargs):
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    59
  >     wait = b'data/file' in self.radix
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    60
  >     if wait:
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    61
  >         testing.wait_file(b"$TESTTMP/writer-revlog-split")
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    62
  >     r = orig(self, *args, **kwargs)
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    63
  >     if wait:
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    64
  >         testing.write_file(b"$TESTTMP/reader-index-read")
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    65
  >         testing.wait_file(b"$TESTTMP/writer-revlog-unsplit")
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    66
  >     return r
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    67
  > 
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    68
  > def extsetup(ui):
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    69
  >     extensions.wrapfunction(revlog.revlog, '_loadindex', _wait_post_load)
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    70
  > EOF
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
    71
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    72
setup a repository for tests
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    73
----------------------------
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    74
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    75
  $ cat >> $HGRCPATH << EOF
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    76
  > [format]
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    77
  > revlog-compression=none
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    78
  > EOF
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    79
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    80
  $ hg init troffset-computation
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    81
  $ cd troffset-computation
50364
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    82
  $ files="
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    83
  > file
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    84
  > Directory_With,Special%Char/Complex_File.babar
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    85
  > foo/bar/babar_celeste/foo
50366
a445194f0a4d backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50364
diff changeset
    86
  > 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/f
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
    87
  > some_dir/sub_dir/foo_bar
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
    88
  > some_dir/sub_dir/foo_bar.i.s/tutu
50364
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    89
  > "
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    90
  $ for f in $files; do
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    91
  >     mkdir -p `dirname $f`
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    92
  > done
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    93
  $ for f in $files; do
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    94
  >     printf '%20d' '1' > $f
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    95
  > done
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
    96
  $ hg commit -Aqma
50364
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    97
  $ for f in $files; do
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    98
  >     printf '%1024d' '1' > $f
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
    99
  > done
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   100
  $ hg commit -Aqmb
50364
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   101
  $ for f in $files; do
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   102
  >     printf '%20d' '1' > $f
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   103
  > done
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   104
  $ hg commit -Aqmc
50364
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   105
  $ for f in $files; do
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   106
  >     dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1
f930af431193 revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50334
diff changeset
   107
  > done
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   108
  $ hg commit -AqmD --traceback
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   109
  $ for f in $files; do
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   110
  >     dd if=/dev/zero of=$f bs=1k count=132 > /dev/null 2>&1
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   111
  > done
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   112
  $ hg commit -AqmD --traceback
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   113
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   114
Reference size:
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   115
  $ f -s file
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   116
  file: size=135168
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   117
  $ f -s .hg/store/data*/file*
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   118
  .hg/store/data/file.d: size=267307
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   119
  .hg/store/data/file.i: size=320
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   120
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   121
  $ cd ..
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   122
50686
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   123
Test a succesful pull
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   124
=====================
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   125
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   126
Make sure everything goes though as expect if we don't do any crash
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   127
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   128
  $ hg clone --quiet --rev 1 troffset-computation troffset-success
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   129
  $ cd troffset-success
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   130
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   131
Reference size:
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   132
  $ f -s file
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   133
  file: size=1024
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   134
  $ f -s .hg/store/data/file*
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   135
  .hg/store/data/file.i: size=1174
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   136
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   137
  $ hg pull ../troffset-computation
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   138
  pulling from ../troffset-computation
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   139
  searching for changes
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   140
  adding changesets
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   141
  adding manifests
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   142
  adding file changes
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   143
  added 3 changesets with 18 changes to 6 files
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   144
  new changesets c99a94cae9b1:64874a3b0160
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   145
  (run 'hg update' to get a working copy)
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   146
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   147
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   148
The inline revlog has been replaced
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   149
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   150
  $ f -s .hg/store/data/file*
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   151
  .hg/store/data/file.d: size=267307
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   152
  .hg/store/data/file.i: size=320
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   153
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   154
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   155
  $ hg verify -q
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   156
  $ cd ..
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   157
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   158
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   159
Test a hard crash after the file was split but before the transaction was committed
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   160
===================================================================================
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   161
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   162
Test offset computation to correctly factor in the index entries themselves.
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   163
Also test that the new data size has the correct size if the transaction is aborted
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   164
after the index has been replaced.
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   165
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   166
Test repo has commits a, b, c, D, where D is large (grows the revlog enough that it
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   167
transitions to non-inline storage). The clone initially has changes a, b
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   168
and will transition to non-inline storage when adding c, D.
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   169
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   170
If the transaction adding c, D is rolled back, then we don't undo the revlog split,
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   171
but truncate the index and the data to remove both c and D.
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   172
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   173
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   174
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   175
  $ cd troffset-computation-copy
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   176
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   177
Reference size:
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   178
  $ f -s file
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   179
  file: size=1024
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   180
  $ f -s .hg/store/data*/file*
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   181
  .hg/store/data/file.i: size=1174
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   182
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   183
  $ cat > .hg/hgrc <<EOF
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   184
  > [hooks]
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   185
  > pretxnchangegroup = python:$TESTTMP/killme.py:killme
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   186
  > EOF
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   187
#if chg
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   188
  $ hg pull ../troffset-computation
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   189
  pulling from ../troffset-computation
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   190
  [255]
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   191
#else
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   192
  $ hg pull ../troffset-computation
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   193
  pulling from ../troffset-computation
50334
2231f7d8a602 test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents: 50316
diff changeset
   194
  *Killed* (glob)
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   195
  [137]
47284
21ed126bab53 revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff changeset
   196
#endif
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   197
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   198
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   199
The inline revlog still exist, but a split version exist next to it
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   200
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   201
  $ cat .hg/store/journal | tr '\0' ' ' | grep '\.s'
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   202
  data/some_dir/sub_dir/foo_bar.i.s/tutu.i 1174
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   203
  data/some_dir/sub_dir/foo_bar.i.s/tutu.d 0
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   204
  $ f -s .hg/store/data*/file*
50814
4a3a9d961561 revlog: fix the naming scheme use by split temporary file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50813
diff changeset
   205
  .hg/store/data-s/file.i: size=320
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   206
  .hg/store/data/file.d: size=267307
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   207
  .hg/store/data/file.i: size=132395
50813
4ee64ff1d49f revlog: show that temporary split file use broken name scheme
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50812
diff changeset
   208
  $ f -s .hg/store/data*/foo*/bar*/babar__celeste*/foo*
50814
4a3a9d961561 revlog: fix the naming scheme use by split temporary file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50813
diff changeset
   209
  .hg/store/data-s/foo/bar/babar__celeste/foo.i: size=320
50813
4ee64ff1d49f revlog: show that temporary split file use broken name scheme
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50812
diff changeset
   210
  .hg/store/data/foo/bar/babar__celeste/foo.d: size=267307
4ee64ff1d49f revlog: show that temporary split file use broken name scheme
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50812
diff changeset
   211
  .hg/store/data/foo/bar/babar__celeste/foo.i: size=132395
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   212
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   213
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   214
The first file.i entry should match the "Reference size" above.
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   215
The first file.d entry is the temporary record during the split,
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   216
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   217
A "temporary file" entry exist for the split index.
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   218
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   219
  $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   220
  data/file.i 1174
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   221
  data/file.d 0
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   222
  $ cat .hg/store/journal.backupfiles | tr -s '\000' ' ' | tr -s '\00' ' '| grep 'data.*/file'
50686
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   223
   data/file.i data/journal.backup.file.i.bck 0
50814
4a3a9d961561 revlog: fix the naming scheme use by split temporary file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50813
diff changeset
   224
   data-s/file.i 0
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   225
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   226
recover is rolling the split back, the fncache is still valid
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   227
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   228
  $ hg recover
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   229
  rolling back interrupted transaction
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   230
  (verify step skipped, run `hg verify` to check your repository content)
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   231
  $ f -s .hg/store/data*/file*
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   232
  .hg/store/data/file.i: size=1174
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   233
  $ hg tip
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   234
  changeset:   1:64b04c8dc267
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   235
  tag:         tip
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   236
  user:        test
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   237
  date:        Thu Jan 01 00:00:00 1970 +0000
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   238
  summary:     b
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   239
  
47874
308e843f24b1 test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 47561
diff changeset
   240
  $ hg verify -q
47875
0fb328bb2459 debugrebuildfncache: add a cheaper option to rebuild the fncache
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 47874
diff changeset
   241
  $ hg debugrebuildfncache --only-data
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   242
  fncache already up to date
47875
0fb328bb2459 debugrebuildfncache: add a cheaper option to rebuild the fncache
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 47874
diff changeset
   243
  $ hg verify -q
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   244
  $ cd ..
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   245
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   246
Test a hard crash right before the index is move into place
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   247
===========================================================
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   248
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   249
Now retry the procedure but intercept the rename of the index and check that
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   250
the journal does not contain the new index size. This demonstrates the edge case
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   251
where the data file is left as garbage.
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   252
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   253
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy2
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   254
  $ cd troffset-computation-copy2
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   255
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   256
Reference size:
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   257
  $ f -s file
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   258
  file: size=1024
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   259
  $ f -s .hg/store/data*/file*
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   260
  .hg/store/data/file.i: size=1174
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   261
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   262
  $ cat > .hg/hgrc <<EOF
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   263
  > [extensions]
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   264
  > intercept_rename = $TESTTMP/intercept_before_rename.py
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   265
  > EOF
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   266
#if chg
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   267
  $ hg pull ../troffset-computation
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   268
  pulling from ../troffset-computation
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   269
  searching for changes
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   270
  adding changesets
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   271
  adding manifests
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   272
  adding file changes
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   273
  [255]
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   274
#else
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   275
  $ hg pull ../troffset-computation
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   276
  pulling from ../troffset-computation
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   277
  searching for changes
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   278
  adding changesets
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   279
  adding manifests
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   280
  adding file changes
50334
2231f7d8a602 test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents: 50316
diff changeset
   281
  *Killed* (glob)
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   282
  [137]
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   283
#endif
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   284
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   285
The inline revlog still exist, but a split version exist next to it
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   286
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   287
  $ f -s .hg/store/data*/file*
50814
4a3a9d961561 revlog: fix the naming scheme use by split temporary file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50813
diff changeset
   288
  .hg/store/data-s/file.i: size=320
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   289
  .hg/store/data/file.d: size=267307
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   290
  .hg/store/data/file.i: size=132395
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   291
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   292
  $ cat .hg/store/journal | tr -s '\000' ' ' | grep 'data.*/file'
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   293
  data/file.i 1174
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   294
  data/file.d 0
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   295
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   296
recover is rolling the split back, the fncache is still valid
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   297
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   298
  $ hg recover
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   299
  rolling back interrupted transaction
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   300
  (verify step skipped, run `hg verify` to check your repository content)
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   301
  $ f -s .hg/store/data*/file*
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   302
  .hg/store/data/file.i: size=1174
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   303
  $ hg tip
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   304
  changeset:   1:64b04c8dc267
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   305
  tag:         tip
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   306
  user:        test
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   307
  date:        Thu Jan 01 00:00:00 1970 +0000
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   308
  summary:     b
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   309
  
47874
308e843f24b1 test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 47561
diff changeset
   310
  $ hg verify -q
47285
46b828b85eb7 revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents: 47284
diff changeset
   311
  $ cd ..
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   312
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   313
Test a hard crash right after the index is move into place
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   314
===========================================================
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   315
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   316
Now retry the procedure but intercept the rename of the index.
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   317
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   318
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-crash-after-rename
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   319
  $ cd troffset-computation-crash-after-rename
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   320
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   321
Reference size:
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   322
  $ f -s file
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   323
  file: size=1024
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   324
  $ f -s .hg/store/data*/file*
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   325
  .hg/store/data/file.i: size=1174
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   326
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   327
  $ cat > .hg/hgrc <<EOF
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   328
  > [extensions]
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   329
  > intercept_rename = $TESTTMP/intercept_after_rename.py
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   330
  > EOF
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   331
#if chg
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   332
  $ hg pull ../troffset-computation
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   333
  pulling from ../troffset-computation
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   334
  searching for changes
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   335
  adding changesets
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   336
  adding manifests
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   337
  adding file changes
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   338
  [255]
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   339
#else
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   340
  $ hg pull ../troffset-computation
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   341
  pulling from ../troffset-computation
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   342
  searching for changes
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   343
  adding changesets
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   344
  adding manifests
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   345
  adding file changes
50334
2231f7d8a602 test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents: 50316
diff changeset
   346
  *Killed* (glob)
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   347
  [137]
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   348
#endif
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   349
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   350
The inline revlog was over written on disk
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   351
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   352
  $ f -s .hg/store/data*/file*
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   353
  .hg/store/data/file.d: size=267307
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   354
  .hg/store/data/file.i: size=320
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   355
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   356
  $ cat .hg/store/journal | tr -s '\000' ' ' | grep 'data.*/file'
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   357
  data/file.i 1174
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   358
  data/file.d 0
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   359
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   360
recover is rolling the split back, the fncache is still valid
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   361
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   362
  $ hg recover
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   363
  rolling back interrupted transaction
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   364
  (verify step skipped, run `hg verify` to check your repository content)
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   365
  $ f -s .hg/store/data*/file*
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   366
  .hg/store/data/file.i: size=1174
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   367
  $ hg tip
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   368
  changeset:   1:64b04c8dc267
50312
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   369
  tag:         tip
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   370
  user:        test
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   371
  date:        Thu Jan 01 00:00:00 1970 +0000
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   372
  summary:     b
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   373
  
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   374
  $ hg verify -q
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   375
  $ cd ..
c185545a4c69 revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50311
diff changeset
   376
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   377
Have the transaction rollback itself without any hard crash
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   378
===========================================================
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   379
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   380
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   381
Repeat the original test but let hg rollback the transaction.
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   382
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   383
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy-rb
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   384
  $ cd troffset-computation-copy-rb
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   385
  $ cat > .hg/hgrc <<EOF
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   386
  > [hooks]
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   387
  > pretxnchangegroup = false
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   388
  > EOF
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   389
  $ hg pull ../troffset-computation
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   390
  pulling from ../troffset-computation
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   391
  searching for changes
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   392
  adding changesets
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   393
  adding manifests
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   394
  adding file changes
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   395
  transaction abort!
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   396
  rollback completed
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   397
  abort: pretxnchangegroup hook exited with status 1
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   398
  [40]
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   399
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   400
The split was rollback
50311
e2ba2234bf1c revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48571
diff changeset
   401
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   402
  $ f -s .hg/store/data*/file*
50316
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   403
  .hg/store/data/file.i: size=1174
87f0155d68aa revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50314
diff changeset
   404
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   405
  $ hg tip
50662
12f13b13f414 revlog: avoid possible collision between directory and temporary index
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50642
diff changeset
   406
  changeset:   1:64b04c8dc267
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   407
  tag:         tip
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   408
  user:        test
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   409
  date:        Thu Jan 01 00:00:00 1970 +0000
48570
f38ae2d7390e revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 47875
diff changeset
   410
  summary:     b
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   411
  
47874
308e843f24b1 test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 47561
diff changeset
   412
  $ hg verify -q
50811
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   413
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   414
  $ cat > .hg/hgrc <<EOF
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   415
  > [hooks]
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   416
  > EOF
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   417
  $ hg pull ../troffset-computation
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   418
  pulling from ../troffset-computation
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   419
  searching for changes
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   420
  adding changesets
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   421
  adding manifests
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   422
  adding file changes
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   423
  added 3 changesets with 18 changes to 6 files
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   424
  new changesets c99a94cae9b1:64874a3b0160
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   425
  (run 'hg update' to get a working copy)
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   426
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   427
  $ f -s .hg/store/data*/file*
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   428
  .hg/store/data/file.d: size=267307
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   429
  .hg/store/data/file.i: size=320
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   430
  $ hg verify -q
5d77a6f37fe1 fncache: add a test demonstrating fncache corruption
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50686
diff changeset
   431
47286
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   432
  $ cd ..
18415fc918a1 recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents: 47285
diff changeset
   433
50313
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   434
Read race
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   435
=========
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   436
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   437
We check that a client that started reading a revlog (its index) after the
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   438
split and end reading (the data) after the rollback should be fine
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   439
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   440
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-race
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   441
  $ cd troffset-computation-race
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   442
  $ cat > .hg/hgrc <<EOF
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   443
  > [hooks]
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   444
  > pretxnchangegroup=$RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/reader-index-read $TESTTMP/writer-revlog-split
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   445
  > pretxnclose = false
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   446
  > EOF
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   447
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   448
start a reader
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   449
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   450
  $ hg cat --rev 0 file \
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   451
  > --config "extensions.wait_read=$TESTTMP/reader_wait_split.py" \
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   452
  > 2> $TESTTMP/reader.stderr \
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   453
  > > $TESTTMP/reader.stdout &
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   454
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   455
Do a failed pull in //
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   456
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   457
  $ hg pull ../troffset-computation
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   458
  pulling from ../troffset-computation
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   459
  searching for changes
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   460
  adding changesets
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   461
  adding manifests
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   462
  adding file changes
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   463
  transaction abort!
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   464
  rollback completed
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   465
  abort: pretxnclose hook exited with status 1
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   466
  [40]
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   467
  $ touch $TESTTMP/writer-revlog-unsplit
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   468
  $ wait
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   469
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   470
The reader should be fine
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   471
  $ cat $TESTTMP/reader.stderr
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   472
  $ cat $TESTTMP/reader.stdout
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   473
                     1 (no-eol)
50686
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   474
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   475
  $ hg verify -q
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   476
50313
b0cdd0bea103 revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50312
diff changeset
   477
  $ cd ..
50314
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   478
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   479
pending hooks
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   480
=============
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   481
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   482
We checks that hooks properly see the inside of the transaction, while other process don't.
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   483
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   484
  $ hg clone --quiet --rev 1 troffset-computation troffset-computation-hooks
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   485
  $ cd troffset-computation-hooks
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   486
  $ cat > .hg/hgrc <<EOF
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   487
  > [hooks]
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   488
  > pretxnclose.01-echo = hg cat -r 'max(all())' file | f --size
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   489
  > pretxnclose.02-echo = $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/hook-done $TESTTMP/hook-tr-ready
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   490
  > pretxnclose.03-abort = false
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   491
  > EOF
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   492
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   493
  $ (
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   494
  >   $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/hook-tr-ready;\
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   495
  >   hg cat -r 'max(all())' file | f --size;\
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   496
  >   touch $TESTTMP/hook-done
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   497
  > ) >stdout 2>stderr &
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   498
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   499
  $ hg pull ../troffset-computation
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   500
  pulling from ../troffset-computation
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   501
  searching for changes
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   502
  adding changesets
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   503
  adding manifests
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   504
  adding file changes
50642
05d429fe84ed revlog: fix a bug in revlog splitting
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50366
diff changeset
   505
  size=135168
50314
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   506
  transaction abort!
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   507
  rollback completed
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   508
  abort: pretxnclose.03-abort hook exited with status 1
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   509
  [40]
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   510
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   511
  $ cat stdout
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   512
  size=1024
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   513
  $ cat stderr
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   514
50686
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   515
  $ hg verify -q
a41eeb877d07 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50662
diff changeset
   516
50314
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   517
6487737e0f00 revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50313
diff changeset
   518
  $ cd ..