mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
Support broken symlinks when cleaning obsolete paths
When there's a symlink to a directory, os.walk still lists the symlink in dirs, even if it isn't configured to follow symlinks. This will fail the listdirs check if the symlink is broken (either before or during the cleanup). So instead, check for directory symlinks and remove them using os.remove. Bug: Issue 231 Change-Id: I0ec45a26be566613a4a39bf694a3d9c6328481c2
This commit is contained in:
parent
16889ba43d
commit
eceeb1b1f5
@ -487,7 +487,13 @@ later is required to fix a server side protocol bug.
|
||||
dirs_to_remove += [os.path.join(root, d) for d in dirs
|
||||
if os.path.join(root, d) not in dirs_to_remove]
|
||||
for d in reversed(dirs_to_remove):
|
||||
if len(os.listdir(d)) == 0:
|
||||
if os.path.islink(d):
|
||||
try:
|
||||
os.remove(d)
|
||||
except OSError:
|
||||
print('Failed to remove %s' % os.path.join(root, d), file=sys.stderr)
|
||||
failed = True
|
||||
elif len(os.listdir(d)) == 0:
|
||||
try:
|
||||
os.rmdir(d)
|
||||
except OSError:
|
||||
|
Loading…
Reference in New Issue
Block a user