diff -r f12804d3ff80 -r 4034b8d551b1 mercurial/util.py --- a/mercurial/util.py Mon Feb 11 14:50:54 2013 -0800 +++ b/mercurial/util.py Mon Feb 11 16:15:12 2013 -0800 @@ -880,6 +880,16 @@ if mode is not None: os.chmod(name, mode) +def ensuredirs(name, mode=None): + """race-safe recursive directory creation""" + try: + makedirs(name, mode) + except OSError, err: + if err.errno == errno.EEXIST and os.path.isdir(name): + # someone else seems to have won a directory creation race + return + raise + def readfile(path): fp = open(path, 'rb') try: