|
1 |
|
2 $ . "$TESTDIR/narrow-library.sh" |
|
3 |
|
4 create full repo |
|
5 |
|
6 $ hg init master |
|
7 $ cd master |
|
8 $ cat >> .hg/hgrc <<EOF |
|
9 > [narrow] |
|
10 > serveellipses=True |
|
11 > EOF |
|
12 |
|
13 $ mkdir inside |
|
14 $ echo inside1 > inside/f1 |
|
15 $ echo inside2 > inside/f2 |
|
16 $ mkdir outside |
|
17 $ echo outside1 > outside/f1 |
|
18 $ echo outside2 > outside/f2 |
|
19 $ hg ci -Aqm 'initial' |
|
20 |
|
21 $ echo modified > inside/f1 |
|
22 $ hg ci -qm 'modify inside/f1' |
|
23 |
|
24 $ hg update -q 0 |
|
25 $ echo modified > inside/f2 |
|
26 $ hg ci -qm 'modify inside/f2' |
|
27 |
|
28 $ hg update -q 0 |
|
29 $ echo modified2 > inside/f1 |
|
30 $ hg ci -qm 'conflicting inside/f1' |
|
31 |
|
32 $ hg update -q 0 |
|
33 $ echo modified > outside/f1 |
|
34 $ hg ci -qm 'modify outside/f1' |
|
35 |
|
36 $ hg update -q 0 |
|
37 $ echo modified2 > outside/f1 |
|
38 $ hg ci -qm 'conflicting outside/f1' |
|
39 |
|
40 $ cd .. |
|
41 |
|
42 $ hg clone --narrow ssh://user@dummy/master narrow --include inside |
|
43 requesting all changes |
|
44 adding changesets |
|
45 adding manifests |
|
46 adding file changes |
|
47 added 6 changesets with 5 changes to 2 files (+4 heads) |
|
48 new changesets *:* (glob) |
|
49 updating to branch default |
|
50 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
51 $ cd narrow |
|
52 |
|
53 $ hg update -q 0 |
|
54 |
|
55 Can merge in when no files outside narrow spec are involved |
|
56 |
|
57 $ hg update -q 'desc("modify inside/f1")' |
|
58 $ hg merge 'desc("modify inside/f2")' |
|
59 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
60 (branch merge, don't forget to commit) |
|
61 $ hg commit -m 'merge inside changes' |
|
62 |
|
63 Can merge conflicting changes inside narrow spec |
|
64 |
|
65 $ hg update -q 'desc("modify inside/f1")' |
|
66 $ hg merge 'desc("conflicting inside/f1")' 2>&1 | egrep -v '(warning:|incomplete!)' |
|
67 merging inside/f1 |
|
68 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
69 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
70 $ echo modified3 > inside/f1 |
|
71 $ hg resolve -m |
|
72 (no more unresolved files) |
|
73 $ hg commit -m 'merge inside/f1' |
|
74 |
|
75 TODO: Can merge non-conflicting changes outside narrow spec |
|
76 |
|
77 $ hg update -q 'desc("modify inside/f1")' |
|
78 $ hg merge 'desc("modify outside/f1")' |
|
79 abort: merge affects file 'outside/f1' outside narrow, which is not yet supported |
|
80 (merging in the other direction may work) |
|
81 [255] |
|
82 |
|
83 $ hg update -q 'desc("modify outside/f1")' |
|
84 $ hg merge 'desc("modify inside/f1")' |
|
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
86 (branch merge, don't forget to commit) |
|
87 $ hg ci -m 'merge from inside to outside' |
|
88 |
|
89 Refuses merge of conflicting outside changes |
|
90 |
|
91 $ hg update -q 'desc("modify outside/f1")' |
|
92 $ hg merge 'desc("conflicting outside/f1")' |
|
93 abort: conflict in file 'outside/f1' is outside narrow clone |
|
94 [255] |