Same reasoning as previous patch.
Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Automatic diff as part of commit; lint not applicable. - Unit
Automatic diff as part of commit; unit tests not applicable.
Same reasoning as previous patch.
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
Path | Packages | |||
---|---|---|---|---|
M | mercurial/copies.py (3 lines) | |||
M | tests/test-graft.t (2 lines) | |||
M | tests/test-rename-merge2.t (21 lines) |
Status | Author | Revision | |
---|---|---|---|
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz | ||
Closed | martinvonz |
if of not in c1 and of not in c2: | if of not in c1 and of not in c2: | ||||
# renamed on one side, deleted on the other side, but filter | # renamed on one side, deleted on the other side, but filter | ||||
# out files that have been renamed and then deleted | # out files that have been renamed and then deleted | ||||
renamedelete[of] = [f for f in fl if f in c1 or f in c2] | renamedelete[of] = [f for f in fl if f in c1 or f in c2] | ||||
renamedeleteset.update(fl) # reverse map for below | renamedeleteset.update(fl) # reverse map for below | ||||
else: | else: | ||||
divergeset.update(fl) # reverse map for below | divergeset.update(fl) # reverse map for below | ||||
if bothnew: | |||||
repo.ui.debug(" unmatched files new in both:\n %s\n" | |||||
% "\n ".join(bothnew)) | |||||
bothdiverge = {} | bothdiverge = {} | ||||
bothincompletediverge = {} | bothincompletediverge = {} | ||||
remainder = {} | remainder = {} | ||||
both1 = {'copy': {}, | both1 = {'copy': {}, | ||||
'fullcopy': {}, | 'fullcopy': {}, | ||||
'incomplete': {}, | 'incomplete': {}, | ||||
'diverge': bothdiverge, | 'diverge': bothdiverge, | ||||
'incompletediverge': bothincompletediverge | 'incompletediverge': bothincompletediverge |
user: foo | user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | summary: 2 | ||||
... grafts of grafts unfortunately can't | ... grafts of grafts unfortunately can't | ||||
$ hg graft -q 13 --debug | $ hg graft -q 13 --debug | ||||
scanning for duplicate grafts | scanning for duplicate grafts | ||||
grafting 13:7a4785234d87 "2" | grafting 13:7a4785234d87 "2" | ||||
unmatched files new in both: | |||||
b | |||||
all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
checking for directory renames | checking for directory renames | ||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: True, partial: False | branchmerge: True, force: True, partial: False | ||||
ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87 | ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87 | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
committing files: | committing files: |
C b | C b | ||||
-------------- | -------------- | ||||
$ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:um a b R:um a b W: - 9 do merge with ancestor in a | test L:um a b R:um a b W: - 9 do merge with ancestor in a | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
src: 'a' -> dst: 'b' * | src: 'a' -> dst: 'b' * | ||||
checking for directory renames | checking for directory renames | ||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
C b | C b | ||||
-------------- | -------------- | ||||
$ tm "nc a b" "up b " " " "12 merge b no ancestor" | $ tm "nc a b" "up b " " " "12 merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:nc a b R:up b W: - 12 merge b no ancestor | test L:nc a b R:up b W: - 12 merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
C a | C a | ||||
-------------- | -------------- | ||||
$ tm "up b " "nm a b" " " "13 merge b no ancestor" | $ tm "up b " "nm a b" " " "13 merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:up b R:nm a b W: - 13 merge b no ancestor | test L:up b R:nm a b W: - 13 merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
a: other deleted -> r | a: other deleted -> r | ||||
removing a | removing a | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
M b | M b | ||||
-------------- | -------------- | ||||
$ tm "nc a b" "up a b" " " "14 merge b no ancestor" | $ tm "nc a b" "up a b" " " "14 merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:nc a b R:up a b W: - 14 merge b no ancestor | test L:nc a b R:up a b W: - 14 merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
a: remote is newer -> g | a: remote is newer -> g | ||||
getting a | getting a | ||||
b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
M b | M b | ||||
-------------- | -------------- | ||||
$ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" | $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:up b R:nm a b W: - 15 merge b no ancestor, remove a | test L:up b R:nm a b W: - 15 merge b no ancestor, remove a | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
a: other deleted -> r | a: other deleted -> r | ||||
removing a | removing a | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
M b | M b | ||||
-------------- | -------------- | ||||
$ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
a: remote is newer -> g | a: remote is newer -> g | ||||
getting a | getting a | ||||
b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
M b | M b | ||||
-------------- | -------------- | ||||
$ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
C a | C a | ||||
-------------- | -------------- | ||||
$ tm "nm a b" "up a b" " " "18 merge b no ancestor" | $ tm "nm a b" "up a b" " " "18 merge b no ancestor" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:nm a b R:up a b W: - 18 merge b no ancestor | test L:nm a b R:up a b W: - 18 merge b no ancestor | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a | ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
a: prompt deleted/changed -> m (premerge) | a: prompt deleted/changed -> m (premerge) | ||||
picked tool ':prompt' for a (binary False symlink False changedelete True) | picked tool ':prompt' for a (binary False symlink False changedelete True) | ||||
abort: unresolved merge conflicts (see 'hg help resolve') | abort: unresolved merge conflicts (see 'hg help resolve') | ||||
-------------- | -------------- | ||||
$ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" | $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" | ||||
created new head | created new head | ||||
-------------- | -------------- | ||||
test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a | test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a | ||||
-------------- | -------------- | ||||
unmatched files new in both: | |||||
b | |||||
resolving manifests | resolving manifests | ||||
branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a | ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a | ||||
preserving a for resolve of a | preserving a for resolve of a | ||||
preserving b for resolve of b | preserving b for resolve of b | ||||
preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
a: prompt changed/deleted -> m (premerge) | a: prompt changed/deleted -> m (premerge) | ||||
$ hg merge -f --tool internal:dump -v --debug -r2 | sed '/^resolving manifests/,$d' 2> /dev/null | $ hg merge -f --tool internal:dump -v --debug -r2 | sed '/^resolving manifests/,$d' 2> /dev/null | ||||
unmatched files in local: | unmatched files in local: | ||||
5/g | 5/g | ||||
6/g | 6/g | ||||
unmatched files in other: | unmatched files in other: | ||||
3/g | 3/g | ||||
4/g | 4/g | ||||
7/f | 7/f | ||||
unmatched files new in both: | |||||
0/f | |||||
1/g | |||||
all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
src: '1/f' -> dst: '1/g' * | src: '1/f' -> dst: '1/g' * | ||||
src: '3/f' -> dst: '3/g' * | src: '3/f' -> dst: '3/g' * | ||||
src: '4/f' -> dst: '4/g' * | src: '4/f' -> dst: '4/g' * | ||||
src: '5/f' -> dst: '5/g' * | src: '5/f' -> dst: '5/g' * | ||||
src: '6/f' -> dst: '6/g' * | src: '6/f' -> dst: '6/g' * | ||||
checking for directory renames | checking for directory renames | ||||
$ hg mani | $ hg mani |