view tests/test-subrepo.out @ 11109:a2bc2f2d77a9

subrepo: normalize path part of URLs so that pulling subrepos from webdir works For a "all projects at root" repo layout eg: /main /sub Where subrepos are used such that a clone of main has this layout: ./main/ ./main/.hgsub ./main/sub/ And the .hgsub content is: sub = ../sub This allows a pull from a hgweb where main and sub are exposed at the root (or same directory level) The current code doesn't normalize the path component of a pull url. this results in trying to pull from http://server.com/hg/main/../sub Current hgweb implementation doesn't reduce the path component so this results in a 404 error though everything is setup logically. This patch adresses this 404 error on the puller side normalizing the URLs used for pulling sub repos. For this example, the URL would be reduced to http://server.com/hg/sub Fix + test
author Edouard Gomez <ed.gomez@free.fr>
date Sat, 01 May 2010 23:05:19 +0200
parents c4347e48b0d0
children d2da9e6dd13e
line wrap: on
line source

% first revision, no sub
adding a
% add first sub
adding a
parent: 0:f7b1eb17ad24 tip
 0
branch: default
commit: 1 added, 1 subrepos
update: (current)
committing subrepository s
% add sub sub
parent: 1:7cf8cfea66e4 tip
 1
branch: default
commit: 1 subrepos
update: (current)
committing subrepository s
committing subrepository ss
parent: 2:df30734270ae tip
 2
branch: default
commit: (clean)
update: (current)
% bump sub rev
committing subrepository s
% leave sub dirty
committing subrepository s
changeset:   3:1c833a7a9e3a
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
summary:     4

% check caching
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
% restore
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
path s
 source   s
 revision 1c833a7a9e3a4445c711aaf0f012379cd0d4034e
% new branch for merge tests
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding t/t
% 5
committing subrepository t
created new head
% 6
committing subrepository t
path s
 source   s
 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
path t
 source   t
 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
% 7
committing subrepository t
% 8
% merge tests
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
path s
 source   s
 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
 source   t
 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
created new head
  searching for copies back to rev 2
resolving manifests
 overwrite None partial False
 ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
 .hgsubstate: versions differ -> m
update: .hgsubstate 1/1 files (100.00%)
subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
  subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
getting subrepo t
resolving manifests
 overwrite True partial False
 ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
 t: remote is newer -> g
update: t 1/1 files (100.00%)
getting t
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
path s
 source   s
 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
 source   t
 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
committing subrepository t
  searching for copies back to rev 2
resolving manifests
 overwrite None partial False
 ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
 .hgsubstate: versions differ -> m
update: .hgsubstate 1/1 files (100.00%)
subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
  subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
merging subrepo t
  searching for copies back to rev 2
resolving manifests
 overwrite None partial False
 ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
 t: versions differ -> m
preserving t for resolve of t
update: t 1/1 files (100.00%)
picked tool 'internal:merge' for t (binary False symlink False)
merging t
my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
warning: conflicts during merge.
merging t failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% should conflict
<<<<<<< local
conflict
=======
t3
>>>>>>> other
% clone
updating to branch default
pulling subrepo s from .../sub/t/s
requesting all changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 5 changes to 3 files
pulling subrepo ss from .../sub/t/s/ss
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
pulling subrepo t from .../sub/t/t
requesting all changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 1 files (+1 heads)
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
path s
 source   s
 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
path t
 source   t
 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
% push
committing subrepository t
pushing ...sub/t
pushing ...subrepo ss
searching for changes
no changes found
pushing ...subrepo s
searching for changes
no changes found
pushing ...subrepo 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
committing subrepository s
abort: push creates new remote heads on branch 'default'!
pushing ...sub/t
pushing ...subrepo ss
searching for changes
no changes found
pushing ...subrepo s
searching for changes
(did you forget to merge? use push -f to force)
pushing ...sub/t
pushing ...subrepo ss
searching for changes
no changes found
pushing ...subrepo 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
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
% update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
committing subrepository t
% pull
pulling ...sub/t
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
pulling subrepo t from .../sub/t/t
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
blah
% bogus subrepo path aborts
abort: missing ] in subrepo source
% issue 1986
adding a
marked working directory as branch br
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b
created new head
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding c
created new head
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
adding .hgsub
committing subrepository s
marked working directory as branch br
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b
committing subrepository s
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
adding c
created new head
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding d
committing subrepository s
created new head
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding e
committing subrepository s
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% test subrepo delete from .hgsubstate
adding testdelete/nested/foo
adding testdelete/nested2/foo
adding testdelete/.hgsub
committing subrepository nested2
committing subrepository nested
nested
% test repository cloning
adding nested_absolute/foo
adding nested_relative/foo2
adding main/.hgsub
committing subrepository nested_relative
committing subrepository nested_absolute
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
[paths]
default = $HGTMP/test-subrepo/sub/mercurial/nested_absolute
[paths]
default = $HGTMP/test-subrepo/sub/mercurial/nested_relative
% issue 1977
adding a
adding .hgsub
committing subrepository s
updating to branch default
pulling subrepo s from .../sub/repo/s
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
committing subrepository s
abort: push creates new remote heads on branch 'default'!
0 files updated, 0 files merged, 0 files removed, 0 files unresolved