Mercurial > hg
changeset 14984:cc2c22511707
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 29 Jul 2011 17:27:38 -0500 |
parents | 6312171468f7 (current diff) 192e02680d09 (diff) |
children | dbf91976f900 |
files | mercurial/scmutil.py |
diffstat | 5 files changed, 63 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Fri Jul 29 17:27:14 2011 -0500 +++ b/mercurial/merge.py Fri Jul 29 17:27:38 2011 -0500 @@ -7,7 +7,7 @@ from node import nullid, nullrev, hex, bin from i18n import _ -import scmutil, util, filemerge, copies, subrepo +import scmutil, util, filemerge, copies, subrepo, encoding import errno, os, shutil class mergestate(object): @@ -92,7 +92,7 @@ "check for case folding collisions in the destination context" folded = {} for fn in mctx: - fold = fn.lower() + fold = encoding.lower(fn) if fold in folded: raise util.Abort(_("case-folding collision between %s and %s") % (fn, folded[fold]))
--- a/mercurial/scmutil.py Fri Jul 29 17:27:14 2011 -0500 +++ b/mercurial/scmutil.py Fri Jul 29 17:27:38 2011 -0500 @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. from i18n import _ -import util, error, osutil, revset, similar +import util, error, osutil, revset, similar, encoding import match as matchmod import os, errno, re, stat, sys, glob @@ -46,10 +46,10 @@ self._abort = abort self._map = {} for f in existingiter: - self._map[f.lower()] = f + self._map[encoding.lower(f)] = f def __call__(self, f): - fl = f.lower() + fl = encoding.lower(f) map = self._map if fl in map and map[fl] != f: msg = _('possible case-folding collision for %s') % f
--- a/mercurial/setdiscovery.py Fri Jul 29 17:27:14 2011 -0500 +++ b/mercurial/setdiscovery.py Fri Jul 29 17:27:38 2011 -0500 @@ -190,4 +190,5 @@ ui.warn(_("warning: repository is unrelated\n")) return (set([nullid]), True, srvheadhashes,) - return (dag.externalizeall(result), True, srvheadhashes,) + anyincoming = (srvheadhashes != [nullid]) + return dag.externalizeall(result), anyincoming, srvheadhashes
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-casecollision-i18n.t Fri Jul 29 17:27:38 2011 -0500 @@ -0,0 +1,43 @@ +run only on case-insensitive filesystems, because collision check at +"hg update" is done only on case-insensitive filesystems + + $ "$TESTDIR/hghave" icasefs || exit 80 + +setup repository, and target files + + $ HGENCODING=cp932 + $ export HGENCODING + $ hg init t + $ cd t + $ python << EOF + > names = ["\x83\x41", # cp932(0x83, 0x41='A'), UNICODE(0x30a2) + > "\x83\x5A", # cp932(0x83, 0x5A='Z'), UNICODE(0x30bb) + > "\x83\x61", # cp932(0x83, 0x61='a'), UNICODE(0x30c2) + > "\x83\x7A", # cp932(0x83, 0x7A='z'), UNICODE(0x30db) + > ] + > for num, name in zip(range(len(names)), names): + > # file for getting target filename of "hg add" + > f = file(str(num), 'w'); f.write(name); f.close() + > # target file of "hg add" + > f = file(name, 'w'); f.write(name); f.close() + > EOF + +test filename collison check at "hg add" + + $ hg add --config ui.portablefilenames=abort `cat 0` + $ hg add --config ui.portablefilenames=abort `cat 1` + $ hg add --config ui.portablefilenames=abort `cat 2` + $ hg add --config ui.portablefilenames=abort `cat 3` + $ hg status -a + A \x83A (esc) + A \x83Z (esc) + A \x83a (esc) + A \x83z (esc) + +test filename collision check at "hg update" + + $ hg commit -m 'revision 0' + $ hg update null + 0 files updated, 0 files merged, 4 files removed, 0 files unresolved + $ hg update tip + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-incoming-outgoing.t Fri Jul 29 17:27:14 2011 -0500 +++ b/tests/test-incoming-outgoing.t Fri Jul 29 17:27:38 2011 -0500 @@ -465,3 +465,16 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: 11 + +incoming from empty remote repository + + $ hg init r1 + $ hg init r2 + $ echo a > r1/foo + $ hg -R r1 ci -Ama + adding foo + $ hg -R r1 incoming r2 --bundle x.hg + comparing with r2 + searching for changes + no changes found + [1]