diff -r e6d4cc29fd60 -r 52361c4f4dac mercurial/util.py --- a/mercurial/util.py Tue Mar 21 06:50:28 2017 -0700 +++ b/mercurial/util.py Tue Mar 21 06:50:28 2017 -0700 @@ -136,7 +136,6 @@ testpid = platform.testpid umask = platform.umask unlink = platform.unlink -unlinkpath = platform.unlinkpath username = platform.username # Python compatibility @@ -1605,6 +1604,19 @@ else: self.close() +def unlinkpath(f, ignoremissing=False): + """unlink and remove the directory if it is empty""" + try: + unlink(f) + except OSError as e: + if not (ignoremissing and e.errno == errno.ENOENT): + raise + # try removing directories that might now be empty + try: + removedirs(os.path.dirname(f)) + except OSError: + pass + def makedirs(name, mode=None, notindexed=False): """recursive directory creation with parent mode inheritance