Newer
Older
Let commit recurse into subrepos by default to match pre-2.0 behavior:
$ echo "[ui]" >> $HGRCPATH
$ echo "commitsubrepos = Yes" >> $HGRCPATH
$ hg init t
$ cd t
first revision, no sub
$ echo a > a
$ hg ci -Am0
adding a
add first sub
$ echo s = s > .hgsub
$ hg add .hgsub
$ hg init s
$ echo a > s/a
Issue2232: committing a subrepo without .hgsub
$ hg ci -mbad s
abort: can't commit subrepos without .hgsub
$ hg -R s add s/a
$ hg files -S
.hgsub
a
`hg files` respects ui.relative-paths
BROKEN: shows subrepo paths relative to the subrepo
$ hg files -S --config ui.relative-paths=no
.hgsub
a

Martin von Zweigbergk
committed
s/a
$ hg -R s ci -Ams0
$ hg sum
parent: 0:f7b1eb17ad24 tip
0
branch: default
commit: 1 added, 1 subrepos
update: (current)
phases: 1 draft
test handling .hgsubstate "added" explicitly.
$ hg parents --template '{node}\n{files}\n'
7cf8cfea66e410e8e3336508dfeec07b3192de51
.hgsub .hgsubstate
$ hg rollback -q
$ hg add .hgsubstate
$ hg ci -m1
$ hg parents --template '{node}\n{files}\n'
7cf8cfea66e410e8e3336508dfeec07b3192de51
.hgsub .hgsubstate
Subrepopath which overlaps with filepath, does not change warnings in remove()
$ mkdir snot
$ touch snot/file
$ hg remove -S snot/file
not removing snot/file: file is untracked
$ hg cat snot/filenot
snot/filenot: no such file in rev 7cf8cfea66e4
$ rm -r snot
Revert subrepo and test subrepo fileset keyword:
$ hg revert --dry-run "set:subrepo('glob:s*')"
reverting subrepo s
reverting s/a
$ hg revert "set:subrepo('glob:s*')"
Angel Ezquerra
committed
reverting subrepo s
reverting s/a
Angel Ezquerra
committed
$ rm s/a.orig
Angel Ezquerra
committed
Revert subrepo with no backup. The "reverting s/a" line is gone since
we're really running 'hg update' in the subrepo:
$ echo b > s/a
$ hg revert --no-backup s
reverting subrepo s
$ echo b > s/a
$ hg sum
parent: 1:7cf8cfea66e4 tip
1
branch: default
commit: 1 subrepos
update: (current)
phases: 2 draft
$ hg co -C 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg sum
parent: 1:7cf8cfea66e4 tip
1
branch: default
commit: (clean)
update: (current)
phases: 2 draft
commands that require a clean repo should respect subrepos
$ echo b >> s/a
$ hg backout tip
abort: uncommitted changes in subrepository "s"
[255]
$ hg revert -C -R s s/a
add sub sub
$ echo ss = ss > s/.hgsub
$ hg init s/ss
$ echo a > s/ss/a
$ hg -R s add s/.hgsub
$ hg -R s/ss add s/ss/a
$ hg sum
parent: 1:7cf8cfea66e4 tip
1
branch: default
commit: 1 subrepos
update: (current)
phases: 2 draft
committing subrepository s/ss
$ hg sum
parent: 2:df30734270ae tip
2
branch: default
commit: (clean)
update: (current)
phases: 3 draft
test handling .hgsubstate "modified" explicitly.
$ hg parents --template '{node}\n{files}\n'
df30734270ae757feb35e643b7018e818e78a9aa
.hgsubstate
$ hg rollback -q
$ hg status -A .hgsubstate
M .hgsubstate
$ hg ci -m2
$ hg parents --template '{node}\n{files}\n'
df30734270ae757feb35e643b7018e818e78a9aa
.hgsubstate
bump sub rev (and check it is ignored by ui.commitsubrepos)
$ hg --config ui.commitsubrepos=no ci -m3
leave sub dirty (and check ui.commitsubrepos=no aborts the commit)
$ hg --config ui.commitsubrepos=no ci -m4
abort: uncommitted changes in subrepository "s"
(use --subrepos for recursive commit)
$ hg id
f6affe3fbfaa+ tip
$ hg -R s ci -mc
$ hg id
f6affe3fbfaa+ tip
$ echo d > s/a
$ hg ci -m4
committing subrepository s
$ hg tip -R s
changeset: 4:02dcf1d70411
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 4
check caching
$ hg co 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg debugsub
restore
$ hg co
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugsub
path s
source s
revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
new branch for merge tests
$ hg co 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo t = t >> .hgsub
$ hg init t
$ echo t > t/t
$ hg -R t add t
adding t/t
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
5
$ hg ci -m5 # add sub
committing subrepository t
created new head
$ echo t2 > t/t
6
$ hg st -R s
$ hg ci -m6 # change sub
committing subrepository t
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
path t
source t
revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
$ echo t3 > t/t
7
$ hg ci -m7 # change sub again for conflict test
committing subrepository t
$ hg rm .hgsub
8
$ hg ci -m8 # remove sub
test handling .hgsubstate "removed" explicitly.
$ hg parents --template '{node}\n{files}\n'
96615c1dad2dc8e3796d7332c77ce69156f7b78e
.hgsub .hgsubstate
$ hg rollback -q
$ hg remove .hgsubstate
$ hg ci -m8
$ hg parents --template '{node}\n{files}\n'
96615c1dad2dc8e3796d7332c77ce69156f7b78e
.hgsub .hgsubstate
merge tests
$ hg co -C 3
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 5 # test adding
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg debugsub
path s
source s
revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
source t
revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
$ hg ci -m9
created new head
$ hg merge 6 --debug # test change
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
starting 4 threads for background file closing (?)
.hgsubstate: versions differ -> m
subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
getting subrepo t
resolving manifests
branchmerge: False, force: False, partial: False
ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg debugsub
path s
source s
revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
source t
revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
$ echo conflict > t/t
$ hg ci -m10
committing subrepository t
$ HGMERGE=internal:merge hg merge --debug 7 # test conflict
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
starting 4 threads for background file closing (?)
.hgsubstate: versions differ -> m
subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
Angel Ezquerra
committed
subrepo t: both sides changed
subrepository t diverged (local revision: 20a0db6fbf6c, remote revision: 7af322bc1198)
starting 4 threads for background file closing (?)
you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
what do you want to do? m
merging subrepository "t"
branchmerge: True, force: False, partial: False
ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
Matt Harbison
committed
starting 4 threads for background file closing (?)
preserving t for resolve of t
t: versions differ -> m
Siddharth Agarwal
committed
picked tool ':merge' for t (binary False symlink False changedelete False)
merging t
my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
warning: conflicts while merging t! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Angel Ezquerra
committed
subrepo t: merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
should conflict
$ cat t/t
<<<<<<< local: 20a0db6fbf6c - test: 10
>>>>>>> other: 7af322bc1198 - test: 7
11: remove subrepo t
$ hg co -C 5
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg revert -r 4 .hgsub # remove t
$ hg ci -m11
created new head
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
local removed, remote changed, keep changed
$ hg merge 6
remote [merge rev] changed subrepository t which local [working copy] removed
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
use (c)hanged version or (d)elete? c
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
BROKEN: should include subrepo t
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
6747d179aa9a688023c4b0cad32e4c92bb7f34ad t
$ hg ci -m 'local removed, remote changed, keep changed'
BROKEN: should include subrepo t
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
BROKEN: should include subrepo t
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
$ cat t/t
t2
local removed, remote changed, keep removed
$ hg co -C 11
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge --config ui.interactive=true 6 <<EOF
> d
> EOF
remote [merge rev] changed subrepository t which local [working copy] removed
use (c)hanged version or (d)elete? d
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
$ hg ci -m 'local removed, remote changed, keep removed'
created new head
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
local changed, remote removed, keep changed
$ hg co -C 6
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 11
local [working copy] changed subrepository t which remote [merge rev] removed
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
use (c)hanged version or (d)elete? c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
BROKEN: should include subrepo t
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
BROKEN: should include subrepo t
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
$ hg ci -m 'local changed, remote removed, keep changed'
created new head
BROKEN: should include subrepo t
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
BROKEN: should include subrepo t
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
$ cat t/t
t2
local changed, remote removed, keep removed
$ hg co -C 6
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge --config ui.interactive=true 11 <<EOF
> d
> EOF
local [working copy] changed subrepository t which remote [merge rev] removed
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
use (c)hanged version or (d)elete? d
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
$ hg ci -m 'local changed, remote removed, keep removed'
created new head
$ hg debugsub
path s
source s
revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
$ cat .hgsubstate
e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
clean up to avoid having to fix up the tests below
$ hg co -C 10
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat >> $HGRCPATH <<EOF
> [extensions]
> strip=
> EOF
$ hg strip -r 11:15
saved backup bundle to $TESTTMP/t/.hg/strip-backup/*-backup.hg (glob)
clone
$ cd ..
$ hg clone t tc
updating to branch default
cloning subrepo s from $TESTTMP/t/s
cloning subrepo s/ss from $TESTTMP/t/s/ss
cloning subrepo t from $TESTTMP/t/t
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd tc
$ hg debugsub
path s
source s
revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
source t
revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
$ cd ..
clone with subrepo disabled (update should fail)
$ hg clone t -U tc2 --config subrepos.allowed=false
$ hg update -R tc2 --config subrepos.allowed=false
abort: subrepos not enabled
(see 'hg help config.subrepos' for details)
[255]
$ ls -A tc2
.hg
.hgsub
.hgsubstate
a
$ hg clone t tc3 --config subrepos.allowed=false
updating to branch default
abort: subrepos not enabled
(see 'hg help config.subrepos' for details)
[255]
$ ls -A tc3
.hg
.hgsub
.hgsubstate
And again with just the hg type disabled
$ hg clone t -U tc4 --config subrepos.hg:allowed=false
$ hg update -R tc4 --config subrepos.hg:allowed=false
abort: hg subrepos not allowed
(see 'hg help config.subrepos' for details)
[255]
$ ls -A tc4
.hg
.hgsub
.hgsubstate
$ hg clone t tc5 --config subrepos.hg:allowed=false
updating to branch default
abort: hg subrepos not allowed
(see 'hg help config.subrepos' for details)
[255]
$ ls -A tc5
.hg
.hgsub
.hgsubstate
$ cd tc
$ echo bah > t/t
$ hg ci -m11
committing subrepository t
$ hg push
pushing to $TESTTMP/t
no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
no changes made to subrepo s since last push to $TESTTMP/t/s
pushing subrepo t to $TESTTMP/t/t
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
push -f
$ echo bah > s/a
$ hg ci -m12
committing subrepository s
$ hg push
pushing to $TESTTMP/t
no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
pushing subrepo s to $TESTTMP/t/s

Martin von Zweigbergk
committed
abort: push creates new remote head 12a213df6fa9 (in subrepository "s")
(merge or see 'hg help push' for details about pushing new heads)
pushing to $TESTTMP/t
pushing subrepo s/ss to $TESTTMP/t/s/ss
pushing subrepo s to $TESTTMP/t/s
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
pushing subrepo t to $TESTTMP/t/t
searching for changes
no changes found
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
check that unmodified subrepos are not pushed
$ hg clone . ../tcc
updating to branch default
cloning subrepo s from $TESTTMP/tc/s
cloning subrepo s/ss from $TESTTMP/tc/s/ss
cloning subrepo t from $TESTTMP/tc/t
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
the subrepos on the new clone have nothing to push to its source
$ hg push -R ../tcc .
pushing to .
no changes made to subrepo s/ss since last push to s/ss
no changes made to subrepo s since last push to s
no changes made to subrepo t since last push to t
searching for changes
no changes found
[1]
the subrepos on the source do not have a clean store versus the clone target
because they were never explicitly pushed to the source
$ hg push ../tcc
pushing to ../tcc
pushing subrepo s/ss to ../tcc/s/ss
searching for changes
no changes found
pushing subrepo s to ../tcc/s
searching for changes
no changes found
pushing subrepo t to ../tcc/t
searching for changes
no changes found
searching for changes
no changes found
[1]
after push their stores become clean
$ hg push ../tcc
pushing to ../tcc
no changes made to subrepo s/ss since last push to ../tcc/s/ss
no changes made to subrepo s since last push to ../tcc/s
no changes made to subrepo t since last push to ../tcc/t
searching for changes
no changes found
[1]
updating a subrepo to a different revision or changing
its working directory does not make its store dirty
$ hg -R s update '.^'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg push
pushing to $TESTTMP/t
no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
no changes made to subrepo s since last push to $TESTTMP/t/s
no changes made to subrepo t since last push to $TESTTMP/t/t
searching for changes
no changes found
[1]
$ echo foo >> s/a
$ hg push
pushing to $TESTTMP/t
no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
no changes made to subrepo s since last push to $TESTTMP/t/s
no changes made to subrepo t since last push to $TESTTMP/t/t
searching for changes
no changes found
[1]
$ hg -R s update -C tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
committing into a subrepo makes its store (but not its parent's store) dirty
$ echo foo >> s/ss/a
$ hg -R s/ss commit -m 'test dirty store detection'
Matt Harbison
committed
$ hg out -S -r `hg log -r tip -T "{node|short}"`
comparing with $TESTTMP/t
Matt Harbison
committed
searching for changes
no changes found
comparing with $TESTTMP/t/s
searching for changes
no changes found
comparing with $TESTTMP/t/s/ss
searching for changes
changeset: 1:79ea5566a333
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: test dirty store detection
comparing with $TESTTMP/t/t
searching for changes
no changes found
pushing to $TESTTMP/t
pushing subrepo s/ss to $TESTTMP/t/s/ss
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
no changes made to subrepo s since last push to $TESTTMP/t/s
no changes made to subrepo t since last push to $TESTTMP/t/t
searching for changes
no changes found
[1]
a subrepo store may be clean versus one repo but not versus another
$ hg push
pushing to $TESTTMP/t
no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
no changes made to subrepo s since last push to $TESTTMP/t/s
no changes made to subrepo t since last push to $TESTTMP/t/t
searching for changes
no changes found
[1]
$ hg push ../tcc
pushing to ../tcc
pushing subrepo s/ss to ../tcc/s/ss
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
no changes made to subrepo s since last push to ../tcc/s
no changes made to subrepo t since last push to ../tcc/t
searching for changes
no changes found
[1]
update
$ cd ../t
$ hg up -C # discard our earlier merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "c373c8102e68: 12"
2 other heads for branch "default"
$ echo blah > t/t
$ hg ci -m13
committing subrepository t
backout calls revert internally with minimal opts, which should not raise
KeyError
$ hg backout ".^" --no-commit
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
changeset c373c8102e68 backed out, don't forget to commit.
$ hg up -C # discard changes
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "925c17564ef8: 13"
2 other heads for branch "default"
pulling from $TESTTMP/t
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
committed
new changesets 925c17564ef8
(run 'hg update' to get a working copy)
should pull t
Matt Harbison
committed
$ hg incoming -S -r `hg log -r tip -T "{node|short}"`
comparing with $TESTTMP/t
Matt Harbison
committed
no changes found
comparing with $TESTTMP/t/s
searching for changes
no changes found
comparing with $TESTTMP/t/s/ss
searching for changes
no changes found
comparing with $TESTTMP/t/t
searching for changes
changeset: 5:52c0adc0515a
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 13
pulling subrepo t from $TESTTMP/t/t
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
committed
new changesets 52c0adc0515a
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "925c17564ef8: 13"
2 other heads for branch "default"
$ cat t/t
blah
bogus subrepo path aborts
$ echo 'bogus=[boguspath' >> .hgsub
$ hg ci -m 'bogus subrepo path'
abort: missing ] in subrepository source
Issue1986: merge aborts when trying to merge a subrepo that
shouldn't need merging
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
# subrepo layout
#
# o 5 br
# /|
# o | 4 default
# | |
# | o 3 br
# |/|
# o | 2 default
# | |
# | o 1 br
# |/
# o 0 default
$ cd ..
$ rm -rf sub
$ hg init main
$ cd main
$ hg init s
$ cd s
$ echo a > a
$ hg ci -Am1
adding a
$ hg branch br
marked working directory as branch br
(branches are permanent and global, did you want a bookmark?)
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
$ echo a >> a
$ hg ci -m1
$ hg up default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > b
$ hg ci -Am1
adding b
$ hg up br
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m1
$ hg up 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo c > c
$ hg ci -Am1
adding c
$ hg up 3
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m1
# main repo layout:
#
# * <-- try to merge default into br again
# .`|
# . o 5 br --> substate = 5
# . |
# o | 4 default --> substate = 4
# | |
# | o 3 br --> substate = 2
# |/|
# o | 2 default --> substate = 2
# | |
# | o 1 br --> substate = 3
# |/
# o 0 default --> substate = 2
$ cd ..
$ echo 's = s' > .hgsub
$ hg -R s up 2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg ci -Am1
adding .hgsub
$ hg branch br
marked working directory as branch br
(branches are permanent and global, did you want a bookmark?)
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
$ echo b > b
$ hg -R s up 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg ci -Am1
adding b
$ hg up default
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo c > c
$ hg ci -Am1
adding c
$ hg up 1
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m1
$ hg up 2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg -R s up 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo d > d
$ hg ci -Am1
adding d
$ hg up 3
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg -R s up 5
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo e > e
$ hg ci -Am1
adding e
$ hg up 5
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 4 # try to merge default into br again
Angel Ezquerra
committed
subrepository s diverged (local revision: f8f13b33206e, remote revision: a3f9062a4f88)
you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
what do you want to do? m
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cd ..
test subrepo delete from .hgsubstate
$ hg init testdelete
$ mkdir testdelete/nested testdelete/nested2
$ hg init testdelete/nested
$ hg init testdelete/nested2
$ echo test > testdelete/nested/foo
$ echo test > testdelete/nested2/foo
$ hg -R testdelete/nested add
adding testdelete/nested/foo
adding testdelete/nested2/foo
$ hg -R testdelete/nested ci -m test
$ hg -R testdelete/nested2 ci -m test
$ echo nested = nested > testdelete/.hgsub
$ echo nested2 = nested2 >> testdelete/.hgsub
$ hg -R testdelete add
adding testdelete/.hgsub
$ hg -R testdelete ci -m "nested 1 & 2 added"
$ echo nested = nested > testdelete/.hgsub
$ hg -R testdelete ci -m "nested 2 deleted"
$ cat testdelete/.hgsubstate
bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
$ hg -R testdelete remove testdelete/.hgsub
$ hg -R testdelete ci -m ".hgsub deleted"
$ cat testdelete/.hgsubstate
Matt Mackall
committed
bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
test repository cloning
$ mkdir mercurial mercurial2
$ hg init nested_absolute
$ echo test > nested_absolute/foo
$ hg -R nested_absolute add
adding nested_absolute/foo
$ hg -R nested_absolute ci -mtest
$ cd mercurial
$ hg init nested_relative
$ echo test2 > nested_relative/foo2
$ hg -R nested_relative add
adding nested_relative/foo2
$ hg -R nested_relative ci -mtest2
$ hg init main
$ echo "nested_relative = ../nested_relative" > main/.hgsub
$ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
$ hg -R main add
adding main/.hgsub
$ hg -R main ci -m "add subrepos"
$ cd ..
$ hg clone mercurial/main mercurial2/main
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat mercurial2/main/nested_absolute/.hg/hgrc \
> mercurial2/main/nested_relative/.hg/hgrc
[paths]
default = $TESTTMP/mercurial/nested_absolute
default = $TESTTMP/mercurial/nested_relative
Issue1977: multirepo push should fail if subrepo push fails
$ hg init repo
$ hg init repo/s
$ echo a > repo/s/a
$ hg -R repo/s ci -Am0
adding a
$ echo s = s > repo/.hgsub
$ hg -R repo ci -Am1
adding .hgsub
$ hg clone repo repo2
updating to branch default
cloning subrepo s from $TESTTMP/repo/s
2 files updated, 0 files merged, 0 files removed, 0 files unresolved