Mercurial > public > mercurial-scm > hg-stable
diff mercurial/windows.py @ 24692:144883a8d0d4
util: add removedirs as platform depending function
According to fa901423ac23 introducing "windows._removedirs()":
If a hg repository including working directory is a reparse point
(directory symlinked or a junction point), then using
os.removedirs will remove the reparse point erroneously.
"windows._removedirs()" should be used instead of "os.removedirs()" on
Windows.
This patch adds "removedirs" as platform depending function to replace
"os.removedirs()" invocations for portability and safety
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sat, 11 Apr 2015 00:47:09 +0900 |
parents | 83f6c4733ecc |
children | eea3977e6fca |
line wrap: on
line diff
--- a/mercurial/windows.py Sat Apr 11 00:47:09 2015 +0900 +++ b/mercurial/windows.py Sat Apr 11 00:47:09 2015 +0900 @@ -270,7 +270,7 @@ If gid is None, return the name of the current group.""" return None -def _removedirs(name): +def removedirs(name): """special version of os.removedirs that does not remove symlinked directories or junction points if they actually contain files""" if osutil.listdir(name): @@ -297,7 +297,7 @@ raise # try removing directories that might now be empty try: - _removedirs(os.path.dirname(f)) + removedirs(os.path.dirname(f)) except OSError: pass