Mercurial > hg
comparison tests/test-narrow-shallow.t @ 36079:a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Adjustments:
* renamed src to hgext/narrow
* marked extension experimental
* added correct copyright header where it was missing
* updated hgrc extension enable line in library.sh
* renamed library.sh to narrow-library.sh
* dropped all files from repo root as they're not interesting
* dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
* renamed remaining tests to all be test-narrow-* when they didn't already
* fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
* fixed tests that wanted `update -C .` instead of `merge --abort`
* corrected a two-space indent in narrowspec.py
* added a missing _() in narrowcommands.py
* fixed imports to pass the import checker
* narrow only adds its --include and --exclude to clone if sparse isn't
enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
and we'll need to come up with a better solution in the future.
These were more or less the minimum to import something that would
pass tests and not create a bunch of files we'll never use.
Changes I intend to make as followups:
* rework the test-narrow-*-tree.t tests to use the new testcases
functionality in run-tests.py
* remove lots of monkeypatches of core things
Differential Revision: https://phab.mercurial-scm.org/D1974
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 29 Jan 2018 16:19:33 -0500 |
parents | |
children | 8d033b348d85 |
comparison
equal
deleted
inserted
replaced
36078:7f68235f23ff | 36079:a2a6e724d61a |
---|---|
1 $ . "$TESTDIR/narrow-library.sh" | |
2 | |
3 $ hg init master | |
4 $ cd master | |
5 $ cat >> .hg/hgrc <<EOF | |
6 > [narrow] | |
7 > serveellipses=True | |
8 > EOF | |
9 $ for x in `$TESTDIR/seq.py 10` | |
10 > do | |
11 > echo $x > "f$x" | |
12 > hg add "f$x" | |
13 > done | |
14 $ hg commit -m "Add root files" | |
15 $ mkdir d1 d2 | |
16 $ for x in `$TESTDIR/seq.py 10` | |
17 > do | |
18 > echo d1/$x > "d1/f$x" | |
19 > hg add "d1/f$x" | |
20 > echo d2/$x > "d2/f$x" | |
21 > hg add "d2/f$x" | |
22 > done | |
23 $ hg commit -m "Add d1 and d2" | |
24 $ for x in `$TESTDIR/seq.py 10` | |
25 > do | |
26 > echo f$x rev2 > "f$x" | |
27 > echo d1/f$x rev2 > "d1/f$x" | |
28 > echo d2/f$x rev2 > "d2/f$x" | |
29 > hg commit -m "Commit rev2 of f$x, d1/f$x, d2/f$x" | |
30 > done | |
31 $ cd .. | |
32 | |
33 narrow and shallow clone the d2 directory | |
34 | |
35 $ hg clone --narrow ssh://user@dummy/master shallow --include "d2" --depth 2 | |
36 requesting all changes | |
37 adding changesets | |
38 adding manifests | |
39 adding file changes | |
40 added 4 changesets with 13 changes to 10 files | |
41 new changesets *:* (glob) | |
42 updating to branch default | |
43 10 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
44 $ cd shallow | |
45 $ hg log -T '{rev}{if(ellipsis,"...")}: {desc}\n' | |
46 3: Commit rev2 of f10, d1/f10, d2/f10 | |
47 2: Commit rev2 of f9, d1/f9, d2/f9 | |
48 1: Commit rev2 of f8, d1/f8, d2/f8 | |
49 0...: Commit rev2 of f7, d1/f7, d2/f7 | |
50 $ hg update 0 | |
51 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
52 $ cat d2/f7 d2/f8 | |
53 d2/f7 rev2 | |
54 d2/8 | |
55 | |
56 $ cd .. | |
57 | |
58 change every upstream file once | |
59 | |
60 $ cd master | |
61 $ for x in `$TESTDIR/seq.py 10` | |
62 > do | |
63 > echo f$x rev3 > "f$x" | |
64 > echo d1/f$x rev3 > "d1/f$x" | |
65 > echo d2/f$x rev3 > "d2/f$x" | |
66 > hg commit -m "Commit rev3 of f$x, d1/f$x, d2/f$x" | |
67 > done | |
68 $ cd .. | |
69 | |
70 pull new changes with --depth specified. There were 10 changes to the d2 | |
71 directory but the shallow pull should only fetch 3. | |
72 | |
73 $ cd shallow | |
74 $ hg pull --depth 2 | |
75 pulling from ssh://user@dummy/master | |
76 searching for changes | |
77 adding changesets | |
78 adding manifests | |
79 adding file changes | |
80 added 4 changesets with 10 changes to 10 files | |
81 new changesets *:* (glob) | |
82 (run 'hg update' to get a working copy) | |
83 $ hg log -T '{rev}{if(ellipsis,"...")}: {desc}\n' | |
84 7: Commit rev3 of f10, d1/f10, d2/f10 | |
85 6: Commit rev3 of f9, d1/f9, d2/f9 | |
86 5: Commit rev3 of f8, d1/f8, d2/f8 | |
87 4...: Commit rev3 of f7, d1/f7, d2/f7 | |
88 3: Commit rev2 of f10, d1/f10, d2/f10 | |
89 2: Commit rev2 of f9, d1/f9, d2/f9 | |
90 1: Commit rev2 of f8, d1/f8, d2/f8 | |
91 0...: Commit rev2 of f7, d1/f7, d2/f7 | |
92 $ hg update 4 | |
93 merging d2/f1 | |
94 merging d2/f2 | |
95 merging d2/f3 | |
96 merging d2/f4 | |
97 merging d2/f5 | |
98 merging d2/f6 | |
99 merging d2/f7 | |
100 3 files updated, 7 files merged, 0 files removed, 0 files unresolved | |
101 $ cat d2/f7 d2/f8 | |
102 d2/f7 rev3 | |
103 d2/f8 rev2 | |
104 $ hg update 7 | |
105 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
106 $ cat d2/f10 | |
107 d2/f10 rev3 | |
108 | |
109 $ cd .. | |
110 | |
111 cannot clone with zero or negative depth | |
112 | |
113 $ hg clone --narrow ssh://user@dummy/master bad --include "d2" --depth 0 | |
114 requesting all changes | |
115 remote: abort: depth must be positive, got 0 | |
116 abort: pull failed on remote | |
117 [255] | |
118 $ hg clone --narrow ssh://user@dummy/master bad --include "d2" --depth -1 | |
119 requesting all changes | |
120 remote: abort: depth must be positive, got -1 | |
121 abort: pull failed on remote | |
122 [255] |