Mercurial > hg
comparison tests/test-hardlinks.t @ 12967:70b043405400 stable
tests: add test-hardlinks.t
partially testing util.opener.__call__
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Wed, 10 Nov 2010 17:28:24 +0100 |
parents | |
children | 42ac864ed394 |
comparison
equal
deleted
inserted
replaced
12966:5f80f44d23c5 | 12967:70b043405400 |
---|---|
1 $ cat > nlinks.py <<EOF | |
2 > import os, sys | |
3 > for f in sorted(sys.stdin.readlines()): | |
4 > f = f[:-1] | |
5 > print os.lstat(f).st_nlink, f | |
6 > EOF | |
7 | |
8 $ nlinksdir() | |
9 > { | |
10 > find $1 -type f | python $TESTTMP/nlinks.py | |
11 > } | |
12 | |
13 Prepare repo r1: | |
14 | |
15 $ mkdir r1 | |
16 $ cd r1 | |
17 $ hg init | |
18 | |
19 $ echo c1 > f1 | |
20 $ hg add f1 | |
21 $ hg ci -m0 | |
22 | |
23 $ mkdir d1 | |
24 $ cd d1 | |
25 $ echo c2 > f2 | |
26 $ hg add f2 | |
27 $ hg ci -m1 | |
28 $ cd ../.. | |
29 | |
30 $ nlinksdir r1/.hg/store | |
31 1 r1/.hg/store/00changelog.i | |
32 1 r1/.hg/store/00manifest.i | |
33 1 r1/.hg/store/data/d1/f2.i | |
34 1 r1/.hg/store/data/f1.i | |
35 1 r1/.hg/store/fncache | |
36 1 r1/.hg/store/undo | |
37 | |
38 | |
39 Create hardlinked clone r2: | |
40 | |
41 $ hg clone -U --debug r1 r2 | |
42 linked 7 files | |
43 | |
44 Create non-hardlinked clone r3: | |
45 | |
46 $ hg clone --pull r1 r3 | |
47 requesting all changes | |
48 adding changesets | |
49 adding manifests | |
50 adding file changes | |
51 added 2 changesets with 2 changes to 2 files | |
52 updating to branch default | |
53 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
54 | |
55 | |
56 Repos r1 and r2 should now contain hardlinked files: | |
57 | |
58 $ nlinksdir r1/.hg/store | |
59 2 r1/.hg/store/00changelog.i | |
60 2 r1/.hg/store/00manifest.i | |
61 2 r1/.hg/store/data/d1/f2.i | |
62 2 r1/.hg/store/data/f1.i | |
63 2 r1/.hg/store/fncache | |
64 1 r1/.hg/store/undo | |
65 | |
66 $ nlinksdir r2/.hg/store | |
67 2 r2/.hg/store/00changelog.i | |
68 2 r2/.hg/store/00manifest.i | |
69 2 r2/.hg/store/data/d1/f2.i | |
70 2 r2/.hg/store/data/f1.i | |
71 2 r2/.hg/store/fncache | |
72 | |
73 Repo r3 should not be hardlinked: | |
74 | |
75 $ nlinksdir r3/.hg/store | |
76 1 r3/.hg/store/00changelog.i | |
77 1 r3/.hg/store/00manifest.i | |
78 1 r3/.hg/store/data/d1/f2.i | |
79 1 r3/.hg/store/data/f1.i | |
80 1 r3/.hg/store/fncache | |
81 1 r3/.hg/store/undo | |
82 | |
83 | |
84 Create a non-inlined filelog in r3: | |
85 | |
86 $ cd r3/d1 | |
87 $ python -c 'for x in range(10000): print x' >> data1 | |
88 $ for j in 0 1 2 3 4 5 6 7 8 9; do | |
89 > cat data1 >> f2 | |
90 > hg commit -m$j | |
91 > done | |
92 $ cd ../.. | |
93 | |
94 $ nlinksdir r3/.hg/store | |
95 1 r3/.hg/store/00changelog.i | |
96 1 r3/.hg/store/00manifest.i | |
97 1 r3/.hg/store/data/d1/f2.d | |
98 1 r3/.hg/store/data/d1/f2.i | |
99 1 r3/.hg/store/data/f1.i | |
100 1 r3/.hg/store/fncache | |
101 1 r3/.hg/store/undo | |
102 | |
103 Push to repo r1 should break up most hardlinks in r2: | |
104 | |
105 $ hg -R r2 verify | |
106 checking changesets | |
107 checking manifests | |
108 crosschecking files in changesets and manifests | |
109 checking files | |
110 2 files, 2 changesets, 2 total revisions | |
111 | |
112 $ cd r3 | |
113 $ hg push | |
114 pushing to $TESTTMP/r1 | |
115 searching for changes | |
116 adding changesets | |
117 adding manifests | |
118 adding file changes | |
119 added 10 changesets with 10 changes to 1 files | |
120 | |
121 $ cd .. | |
122 | |
123 $ nlinksdir r2/.hg/store | |
124 1 r2/.hg/store/00changelog.i | |
125 1 r2/.hg/store/00manifest.i | |
126 1 r2/.hg/store/data/d1/f2.i | |
127 2 r2/.hg/store/data/f1.i | |
128 1 r2/.hg/store/fncache | |
129 | |
130 $ hg -R r2 verify | |
131 checking changesets | |
132 checking manifests | |
133 crosschecking files in changesets and manifests | |
134 checking files | |
135 2 files, 2 changesets, 2 total revisions | |
136 | |
137 | |
138 $ cd r1 | |
139 $ hg up | |
140 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
141 | |
142 Committing a change to f1 in r1 must break up hardlink f1.i in r2: | |
143 | |
144 $ echo c1c1 >> f1 | |
145 $ hg ci -m00 | |
146 $ cd .. | |
147 | |
148 $ nlinksdir r2/.hg/store | |
149 1 r2/.hg/store/00changelog.i | |
150 1 r2/.hg/store/00manifest.i | |
151 1 r2/.hg/store/data/d1/f2.i | |
152 1 r2/.hg/store/data/f1.i | |
153 1 r2/.hg/store/fncache | |
154 |