Show More
@@ -81,12 +81,20 b' class mergestate(object):' | |||||
81 | self.mark(dfile, 'r') |
|
81 | self.mark(dfile, 'r') | |
82 | return r |
|
82 | return r | |
83 |
|
83 | |||
84 | def _checkunknown(wctx, mctx): |
|
84 | def _checkunknown(wctx, mctx, folding): | |
85 | "check for collisions between unknown files and files in mctx" |
|
85 | "check for collisions between unknown files and files in mctx" | |
86 | for f in wctx.unknown(): |
|
86 | if folding: | |
87 | if f in mctx and mctx[f].cmp(wctx[f]): |
|
87 | foldf = util.normcase | |
|
88 | else: | |||
|
89 | foldf = lambda fn: fn | |||
|
90 | folded = {} | |||
|
91 | for fn in mctx: | |||
|
92 | folded[foldf(fn)] = fn | |||
|
93 | for fn in wctx.unknown(): | |||
|
94 | f = foldf(fn) | |||
|
95 | if f in folded and mctx[folded[f]].cmp(wctx[f]): | |||
88 | raise util.Abort(_("untracked file in working directory differs" |
|
96 | raise util.Abort(_("untracked file in working directory differs" | |
89 | " from file in requested revision: '%s'") % f) |
|
97 | " from file in requested revision: '%s'") % fn) | |
90 |
|
98 | |||
91 | def _checkcollision(mctx): |
|
99 | def _checkcollision(mctx): | |
92 | "check for case folding collisions in the destination context" |
|
100 | "check for case folding collisions in the destination context" | |
@@ -537,9 +545,10 b' def update(repo, node, branchmerge, forc' | |||||
537 | ### calculate phase |
|
545 | ### calculate phase | |
538 | action = [] |
|
546 | action = [] | |
539 | wc.status(unknown=True) # prime cache |
|
547 | wc.status(unknown=True) # prime cache | |
|
548 | folding = not util.checkcase(repo.path) | |||
540 | if not force: |
|
549 | if not force: | |
541 | _checkunknown(wc, p2) |
|
550 | _checkunknown(wc, p2, folding) | |
542 | if not util.checkcase(repo.path): |
|
551 | if folding: | |
543 | _checkcollision(p2) |
|
552 | _checkcollision(p2) | |
544 | action += _forgetremoved(wc, p2, branchmerge) |
|
553 | action += _forgetremoved(wc, p2, branchmerge) | |
545 | action += manifestmerge(repo, wc, p2, pa, overwrite, partial) |
|
554 | action += manifestmerge(repo, wc, p2, pa, overwrite, partial) |
@@ -1,5 +1,8 b'' | |||||
1 | $ "$TESTDIR/hghave" icasefs || exit 80 |
|
1 | $ "$TESTDIR/hghave" icasefs || exit 80 | |
2 |
|
2 | |||
|
3 | $ hg debugfs | grep 'case-sensitive:' | |||
|
4 | case-sensitive: no | |||
|
5 | ||||
3 | test file addition with bad case |
|
6 | test file addition with bad case | |
4 |
|
7 | |||
5 | $ hg init repo1 |
|
8 | $ hg init repo1 | |
@@ -56,4 +59,16 b' used to fail under case insensitive fs' | |||||
56 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
59 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
57 | $ hg up -C |
|
60 | $ hg up -C | |
58 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
61 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
62 | ||||
|
63 | no clobbering of untracked files with wrong casing | |||
|
64 | ||||
|
65 | $ hg up -r null | |||
|
66 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |||
|
67 | $ echo gold > a | |||
|
68 | $ hg up | |||
|
69 | abort: untracked file in working directory differs from file in requested revision: 'a' | |||
|
70 | [255] | |||
|
71 | $ cat a | |||
|
72 | gold | |||
|
73 | ||||
59 | $ cd .. |
|
74 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now