tests/test-subrepo-deep-nested-change.t
author Idan Kamara <idankk86@gmail.com>
Mon, 25 Jul 2011 15:03:02 +0300
changeset 14927 2aa3e07b2f07
parent 14281 ccb7240acf32
child 15321 e174353e8cda
permissions -rw-r--r--
posix, windows: introduce cachestat This class contains a stat result, and possibly other file info to reliably determine between two points in time whether a file has changed. Uniquely identifying a file gives us that reliability because we either atomic rename or append. So one of two will happen: the file 'id' will change, or the size of the file will change. posix implements it simply by calling os.stat() and checking if the result has st_ino. For now on Windows we always assume the path is uncacheable. This can be improved on NTFS due to file IDs: http://msdn.microsoft.com/en-us/library/aa363788(v=vs.85).aspx So we need to find out if a file path is on an NTFS drive, for that we have: - GetVolumeInformation, which unfortunately only works with a root path (but is available on XP) - GetVolumeInformationByHandleW, works on a full file path but requires Vista or higher
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     1
Preparing the subrepository 'sub2'
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     3
  $ hg init sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     4
  $ echo sub2 > sub2/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     5
  $ hg add -R sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     6
  adding sub2/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     7
  $ hg commit -R sub2 -m "sub2 import"
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     8
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
     9
Preparing the 'sub1' repo which depends on the subrepo 'sub2'
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    10
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    11
  $ hg init sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    12
  $ echo sub1 > sub1/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    13
  $ echo "sub2 = ../sub2" > sub1/.hgsub
12107
497c78760b37 tests: use regular expression instead of sed in test-subrepo-deep-nested-change
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11913
diff changeset
    14
  $ hg clone sub2 sub1/sub2
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    15
  updating to branch default
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    16
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    17
  $ hg add -R sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    18
  adding sub1/.hgsub
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    19
  adding sub1/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    20
  $ hg commit -R sub1 -m "sub1 import"
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    21
  committing subrepository sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    22
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    23
Preparing the 'main' repo which depends on the subrepo 'sub1'
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    24
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    25
  $ hg init main
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    26
  $ echo main > main/main
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    27
  $ echo "sub1 = ../sub1" > main/.hgsub
12107
497c78760b37 tests: use regular expression instead of sed in test-subrepo-deep-nested-change
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11913
diff changeset
    28
  $ hg clone sub1 main/sub1
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    29
  updating to branch default
14281
ccb7240acf32 subrepo: create subrepos using clone instead of pull
Martin Geisler <mg@aragost.com>
parents: 12640
diff changeset
    30
  cloning subrepo sub2 from $TESTTMP/sub2
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    31
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    32
  $ hg add -R main
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    33
  adding main/.hgsub
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    34
  adding main/main
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    35
  $ hg commit -R main -m "main import"
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    36
  committing subrepository sub1
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    37
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    38
Cleaning both repositories, just as a clone -U
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    39
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    40
  $ hg up -C -R sub2 null
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    41
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    42
  $ hg up -C -R sub1 null
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    43
  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    44
  $ hg up -C -R main null
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    45
  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    46
  $ rm -rf main/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    47
  $ rm -rf sub1/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    48
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    49
Clone main
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    50
12107
497c78760b37 tests: use regular expression instead of sed in test-subrepo-deep-nested-change
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11913
diff changeset
    51
  $ hg clone main cloned
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    52
  updating to branch default
14281
ccb7240acf32 subrepo: create subrepos using clone instead of pull
Martin Geisler <mg@aragost.com>
parents: 12640
diff changeset
    53
  cloning subrepo sub1 from $TESTTMP/sub1
ccb7240acf32 subrepo: create subrepos using clone instead of pull
Martin Geisler <mg@aragost.com>
parents: 12640
diff changeset
    54
  cloning subrepo sub1/sub2 from $TESTTMP/sub2
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    55
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    56
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    57
Checking cloned repo ids
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    58
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    59
  $ printf "cloned " ; hg id -R cloned
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    60
  cloned 7f491f53a367 tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    61
  $ printf "cloned/sub1 " ; hg id -R cloned/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    62
  cloned/sub1 fc3b4ce2696f tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    63
  $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    64
  cloned/sub1/sub2 c57a0840e3ba tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    65
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    66
debugsub output for main and sub1
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    67
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    68
  $ hg debugsub -R cloned
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    69
  path sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    70
   source   ../sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    71
   revision fc3b4ce2696f7741438c79207583768f2ce6b0dd
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    72
  $ hg debugsub -R cloned/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    73
  path sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    74
   source   ../sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    75
   revision c57a0840e3badd667ef3c3ef65471609acb2ba3c
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    76
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    77
Modifying deeply nested 'sub2'
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    78
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    79
  $ echo modified > cloned/sub1/sub2/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    80
  $ hg commit -m "deep nested modif should trigger a commit" -R cloned
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    81
  committing subrepository sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    82
  committing subrepository sub1/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    83
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    84
Checking modified node ids
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    85
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    86
  $ printf "cloned " ; hg id -R cloned
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    87
  cloned ffe6649062fe tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    88
  $ printf "cloned/sub1 " ; hg id -R cloned/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    89
  cloned/sub1 2ecb03bf44a9 tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    90
  $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    91
  cloned/sub1/sub2 53dd3430bcaf tip
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    92
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    93
debugsub output for main and sub1
11110
22f5ad0b5857 subrepo: dirtiness checks should iterate over subrepos
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
    94
11913
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    95
  $ hg debugsub -R cloned
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    96
  path sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    97
   source   ../sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    98
   revision 2ecb03bf44a94e749e8669481dd9069526ce7cb9
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
    99
  $ hg debugsub -R cloned/sub1
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
   100
  path sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
   101
   source   ../sub2
628cdd158ec0 tests: unify test-subrepo-deep-nested-change
Martin Geisler <mg@lazybytes.net>
parents: 11110
diff changeset
   102
   revision 53dd3430bcaf5ab4a7c48262bcad6d441f510487