##// END OF EJS Templates
fix pull racing with push/commit (issue1320)...
fix pull racing with push/commit (issue1320) changegroup() has a problem when nodes which does not descend from a node in <bases> are added to remote after the discovery phase. If that happens, changegroup() won't send the correct set of nodes, ie. some nodes will be missing. To correct it we have to find the set of nodes that both remote and self have (called <common>), and send all the nodes not in <common>. This fix has some overhead, in the worst case it will re-send a whole branch. A proper fix to avoid this overhead might be to change the protocol so that the <common> nodes are sent (instead of the <bases> of the missing nodes).

File last commit:

r7233:9f0e52e1 default
r7233:9f0e52e1 default
Show More
test-fetch.out
180 lines | 6.5 KiB | text/plain | TextLexer
% test fetch with default branches only
adding a
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b
1:97d72e5f12c7
% should pull one change
pulling from ../a
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
1:97d72e5f12c7
adding c
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% should merge c into a
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
updating to 2:97d72e5f12c7
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging with 1:5e056962225c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
new changeset 3:cd3a41621cf0 merges remote changes with local
a
b
c
% fetch over http, no auth
pulling from http://localhost:20059/
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
updating to 2:97d72e5f12c7
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging with 1:5e056962225c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
new changeset 3:... merges remote changes with local
Automated merge with http://localhost:20059/
% fetch over http with auth (should be hidden in desc)
pulling from http://user:***@localhost:20059/
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
updating to 2:97d72e5f12c7
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging with 1:5e056962225c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
new changeset 3:... merges remote changes with local
Automated merge with http://localhost:20059/
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding f
adding g
% should merge f into g
pulling from ../f
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
merging with 3:cc6a3744834d
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
new changeset 4:55aa4f32ec59 merges remote changes with local
% should abort, because i is modified
abort: working directory is missing some files
% test fetch with named branches
adding a
marked working directory as branch a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
marked working directory as branch b
adding b
created new head
% pull in change on foreign branch
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from n1
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 2 files
% parent should be 2 (no automatic update)
2
% pull in changes on both foreign and local branches
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from n1
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% parent should be 4 (fast forward)
4
% pull changes on foreign (2 new heads) and local (1 new head) branches
% with a local change
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
created new head
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding c
pulling from n1
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 2 files (+2 heads)
updating to 5:708c6cce3d26
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging with 3:d83427717b1f
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
new changeset 7:48f1a33f52af merges remote changes with local
% parent should be 7 (new merge changeset)
7
% pull in changes on foreign (merge of local branch) and local (2 new
% heads) with a local change
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 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)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from n1
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 1 files (+2 heads)
not merging with 1 other new branch heads (use "hg heads ." and "hg merge" to merge them)
% parent should be 3 (fetch did not merge anything)
3
% pull in change on different branch than dirstate
adding a
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
marked working directory as branch topic
abort: working dir not at branch tip (use "hg update" to check out branch tip)
% parent should be 0 (fetch did not update or merge anything)
0