view contrib/casesmash.py @ 15410:9e99d2bbb1b1

add: support adding explicit files in subrepos Change the behavior of the add command such that explicit paths in subrepos are always added. This eliminates the previous behavior where if you called "hg add" for an explicit path in a subrepo without specifying the -S option, it would be silently ignored. If you specify patterns, or no arguments at all, the -S option will still be needed to activate recursion into subrepos.
author David M. Carr <david@carrclan.us>
date Wed, 02 Nov 2011 01:17:11 -0400
parents f5765353d430
children ff1586a3adc5
line wrap: on
line source

import sys, os, __builtin__
from mercurial import util

def lowerwrap(scope, funcname):
    f = getattr(scope, funcname)
    def wrap(fname, *args, **kwargs):
        d, base = os.path.split(fname)
        try:
            files = os.listdir(d or '.')
        except OSError, inst:
            files = []
        if base in files:
            return f(fname, *args, **kwargs)
        for fn in files:
            if fn.lower() == base.lower():
                return f(os.path.join(d, fn), *args, **kwargs)
        return f(fname, *args, **kwargs)
    scope.__dict__[funcname] = wrap

def normcase(path):
    return path.lower()

os.path.normcase = normcase

for f in 'file open'.split():
    lowerwrap(__builtin__, f)

for f in "chmod chown open lstat stat remove unlink".split():
    lowerwrap(os, f)

for f in "exists lexists".split():
    lowerwrap(os.path, f)

lowerwrap(util, 'posixfile')