Newer
Older
$ mkdir tree1
$ hg init tree1/repo_a
$ hg init tree1/bbb/repo_b1
$ hg init tree1/bbb/repo_b2
$ hg init tree1/bbb/sub_b/repo_b3
$ hg init tree1/bbb/sub_b/repo_b4
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
and two other trees:
$ mkdir -p sub/tree2
$ mkdir tree3
as we test by local paths, we also need intermediate dirs:
$ mkdir -p sub/tree2/bbb/sub_b
Let's remember locations:
$ export T1=`pwd`/tree1
$ export T2=`pwd`/sub/tree2
$ export T3=`pwd`/tree3
Let's create custom Mercurial configuration files
$ mkdir hgrc
$ cat > hgrc/basic.rc << EOF
> [ui]
> username = Just Test <just.text@nowhere.com>
> [extensions]
> mercurial_path_pattern =
> [path_pattern]
> symm.local = $T1/{repo}
> symm.remote = $T2/{repo}
> flat.local = $T1/{repo}
> flat.remote = $T3/{repo:/=-}
> EOF
and enable them by HGRCPATH (which is PATH-like variable, see hg help
environment)
$ export HGRCPATH=`pwd`/hgrc
and let's populate first tree a little bit:
$ echo "X" > tree1/repo_a/x.txt
$ hg --cwd tree1/repo_a add
adding x.txt
$ hg --cwd tree1/repo_a commit -m "First commit (X)"
$ echo "Y" > tree1/bbb/repo_b1/y.txt
$ hg --cwd tree1/bbb/repo_b1 add
adding y.txt
$ hg --cwd tree1/bbb/repo_b1 commit -m 'First commit ("Y")'
$ echo "Z" > tree1/bbb/repo_b2/z.txt
$ hg --cwd tree1/bbb/repo_b2 add
adding z.txt
$ hg --cwd tree1/bbb/repo_b2 commit -m 'First commit ("Z")'
$ echo "A" > tree1/bbb/sub_b/repo_b3/a.txt
$ hg --cwd tree1/bbb/sub_b/repo_b3 add
adding a.txt
$ hg --cwd tree1/bbb/sub_b/repo_b3 commit -m 'First commit ("A")'
$ echo "B" > tree1/bbb/sub_b/repo_b4/b.txt
$ hg --cwd tree1/bbb/sub_b/repo_b4 add
adding b.txt
$ hg --cwd tree1/bbb/sub_b/repo_b4 commit -m 'First commit ("B")'
Let's check paths:
$ hg --cwd tree1/repo_a paths
flat = /tmp/cramtests-*/basic.t/tree3/repo_a (glob)
symm = /tmp/cramtests-*/basic.t/sub/tree2/repo_a (glob)
$ hg --cwd tree1/bbb/repo_b1 paths
flat = /tmp/cramtests-*/basic.t/tree3/bbb-repo_b1 (glob)
symm = /tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b1 (glob)
$ hg --cwd tree1/bbb/repo_b2 paths
flat = /tmp/cramtests-*/basic.t/tree3/bbb-repo_b2 (glob)
symm = /tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b2 (glob)
$ hg --cwd tree1/bbb/sub_b/repo_b3 paths
flat = /tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b3 (glob)
symm = /tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b3 (glob)
$ hg --cwd tree1/bbb/sub_b/repo_b4 paths
flat = /tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b4 (glob)
symm = /tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b4 (glob)
Then cloneto should actually create repositories:
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
$ hg --cwd tree1/repo_a cloneto symm
Cloning current repository to /tmp/*/basic.t/sub/tree2/repo_a (resolved from: symm) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find $T2 -name .hg
/tmp/cramtests-*/basic.t/sub/tree2/repo_a/.hg (glob)
$ hg --cwd tree1/repo_a cloneto flat
Cloning current repository to /tmp/cramtests-*/basic.t/tree3/repo_a (resolved from: flat) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find $T3 -name .hg
/tmp/cramtests-*/basic.t/tree3/repo_a/.hg (glob)
$ hg --cwd tree1/bbb/repo_b1 cloneto symm
Cloning current repository to /tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b1 (resolved from: symm) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/repo_b1 cloneto flat
Cloning current repository to /tmp/cramtests-*/basic.t/tree3/bbb-repo_b1 (resolved from: flat) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/repo_b2 cloneto symm
Cloning current repository to /tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b2 (resolved from: symm) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/repo_b2 cloneto flat
Cloning current repository to /tmp/cramtests-*/basic.t/tree3/bbb-repo_b2 (resolved from: flat) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/sub_b/repo_b3 cloneto symm
Cloning current repository to /tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b3 (resolved from: symm) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/sub_b/repo_b3 cloneto flat
Cloning current repository to /tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b3 (resolved from: flat) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/sub_b/repo_b4 cloneto symm
Cloning current repository to /tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b4 (resolved from: symm) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --cwd tree1/bbb/sub_b/repo_b4 cloneto flat
Cloning current repository to /tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b4 (resolved from: flat) (glob)
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ find $T2 -name .hg | sort
/tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b1/.hg (glob)
/tmp/cramtests-*/basic.t/sub/tree2/bbb/repo_b2/.hg (glob)
/tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b3/.hg (glob)
/tmp/cramtests-*/basic.t/sub/tree2/bbb/sub_b/repo_b4/.hg (glob)
/tmp/cramtests-*/basic.t/sub/tree2/repo_a/.hg (glob)
$ find $T3 -name .hg | sort
/tmp/cramtests-*/basic.t/tree3/bbb-repo_b1/.hg (glob)
/tmp/cramtests-*/basic.t/tree3/bbb-repo_b2/.hg (glob)
/tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b3/.hg (glob)
/tmp/cramtests-*/basic.t/tree3/bbb-sub_b-repo_b4/.hg (glob)
/tmp/cramtests-*/basic.t/tree3/repo_a/.hg (glob)