Skip to content

Commit cf564b6

Browse files
committed
RF: git-annex specific handling in to_filename + allow NIBABEL_REMOVE_BEFORE_TO_FILENAME env var
1 parent 99af2f4 commit cf564b6

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

nibabel/filebasedimages.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
splitext_addext)
1818
from .openers import ImageOpener
1919

20+
# OS-specific path
21+
_GIT_ANNEX_OBJECTS_PATH = os.path.join('.git', 'annex', 'objects')
22+
23+
24+
def _is_annex_symlink(path):
25+
"""Return True if file is a symlink to the git-annex objects"""
26+
return os.path.islink(path) and _GIT_ANNEX_OBJECTS_PATH in os.path.realpath(path)
27+
2028

2129
class ImageFileError(Exception):
2230
pass
@@ -349,10 +357,11 @@ def to_filename(self, filename):
349357
None
350358
'''
351359
self.file_map = file_map = self.filespec_to_file_map(filename)
360+
remove_env = os.environ.get('NIBABEL_REMOVE_BEFORE_TO_FILENAME', None)
352361
for _, fh in file_map.items():
353362
if not isinstance(fh, FileHolder):
354363
continue
355-
if os.path.exists(fh.filename):
364+
if os.path.lexists(fh.filename) and (remove_env or _is_annex_symlink(fh.filename)):
356365
# Remove previous file where new file would be saved
357366
# Necessary e.g. for cases where file is a symlink pointing
358367
# to some non-writable file (e.g. under git annex control)

0 commit comments

Comments
 (0)