Mercurial > hg
view tests/test-rename-merge1.t @ 24051:7956d17431bc
windows: seek to the end of posixfile when opening in append mode
The position is implementation defined when opening in append mode,
and it seems like Linux sets it to EOF while Windows keeps it at zero.
This has caused problems in the past when a file is opened and tell()
is immediately called, such as 48c232873a54 and 6bf93440a717.
Since the only caller of osutil.posixfile is this windows module, this seems
like a better place to fix the issue than in osutil.c and pure.osutil.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 31 Jan 2015 12:39:44 -0500 |
parents | a1a7c94def6d |
children | bd625cd4e5e7 |
line wrap: on
line source
$ hg init $ echo "[merge]" >> .hg/hgrc $ echo "followcopies = 1" >> .hg/hgrc $ echo foo > a $ echo foo > a2 $ hg add a a2 $ hg ci -m "start" $ hg mv a b $ hg mv a2 b2 $ hg ci -m "rename" $ hg co 0 2 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo blahblah > a $ echo blahblah > a2 $ hg mv a2 c2 $ hg ci -m "modify" created new head $ hg merge -y --debug searching for copies back to rev 1 unmatched files in local: c2 unmatched files in other: b b2 all copies found (* = to merge, ! = divergent, % = renamed and deleted): src: 'a' -> dst: 'b' * src: 'a2' -> dst: 'b2' ! src: 'a2' -> dst: 'c2' ! checking for directory renames resolving manifests branchmerge: True, force: False, partial: False ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c preserving a for resolve of b removing a b2: remote created -> g getting b2 updating: b2 1/2 files (50.00%) b: remote moved from a -> m updating: b 2/2 files (100.00%) picked tool 'internal:merge' for b (binary False symlink False) merging a and b to b my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c premerge successful note: possible conflict - a2 was renamed multiple times to: c2 b2 1 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg status -AC M b a M b2 R a C c2 $ cat b blahblah $ hg ci -m "merge" $ hg debugindex b rev offset length ..... linkrev nodeid p1 p2 (re) 0 0 67 ..... 1 57eacc201a7f 000000000000 000000000000 (re) 1 67 72 ..... 3 4727ba907962 000000000000 57eacc201a7f (re) $ hg debugrename b b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66 This used to trigger a "divergent renames" warning, despite no renames $ hg cp b b3 $ hg cp b b4 $ hg ci -A -m 'copy b twice' $ hg up eb92d88a9712 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg up 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg rm b3 b4 $ hg ci -m 'clean up a bit of our mess' We'd rather not warn on divergent renames done in the same changeset (issue2113) $ hg cp b b3 $ hg mv b b4 $ hg ci -A -m 'divergent renames in same changeset' $ hg up c761c6948de0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg up 2 files updated, 0 files merged, 1 files removed, 0 files unresolved Check for issue2642 $ hg init t $ cd t $ echo c0 > f1 $ hg ci -Aqm0 $ hg up null -q $ echo c1 > f1 # backport $ hg ci -Aqm1 $ hg mv f1 f2 $ hg ci -qm2 $ hg up 0 -q $ hg merge 1 -q --tool internal:local $ hg ci -qm3 $ hg merge 2 merging f1 and f2 to f2 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ cat f2 c0 $ cd .. Check for issue2089 $ hg init repo2089 $ cd repo2089 $ echo c0 > f1 $ hg ci -Aqm0 $ hg up null -q $ echo c1 > f1 $ hg ci -Aqm1 $ hg up 0 -q $ hg merge 1 -q --tool internal:local $ echo c2 > f1 $ hg ci -qm2 $ hg up 1 -q $ hg mv f1 f2 $ hg ci -Aqm3 $ hg up 2 -q $ hg merge 3 merging f1 and f2 to f2 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ cat f2 c2 $ cd .. Check for issue3074 $ hg init repo3074 $ cd repo3074 $ echo foo > file $ hg add file $ hg commit -m "added file" $ hg mv file newfile $ hg commit -m "renamed file" $ hg update 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg rm file $ hg commit -m "deleted file" created new head $ hg merge --debug searching for copies back to rev 1 unmatched files in other: newfile all copies found (* = to merge, ! = divergent, % = renamed and deleted): src: 'file' -> dst: 'newfile' % checking for directory renames resolving manifests branchmerge: True, force: False, partial: False ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0 newfile: remote created -> g getting newfile updating: newfile 1/1 files (100.00%) note: possible conflict - file was deleted and renamed to: newfile 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg status M newfile $ cd ..