convert renameFile to moveFile to support cross-device moves
Improve handling of some .git/annex/ subdirectories being on other filesystems, in the bittorrent special remote, and youtube-dl integration, and git-annex addurl. The only one of these that I've confirmed to be a problem is in the bittorrent special remote when .git/annex/tmp and .git/annex/othertmp are on different filesystems. As well as auditing for renameFile, also audited for createLink, all of those are ok as are the other remaining renameFile calls. Also audited all code paths that use .git/annex/othertmp, and did not find any other cross-device problems. So, removing mention of othertmp needing to be on the same device. Sponsored-by: Dartmouth College's Datalad project
This commit is contained in:
parent
5cbfb74391
commit
9d60385001
6 changed files with 26 additions and 14 deletions
|
@ -467,9 +467,7 @@ addWorkTree _ addunlockedmatcher u url file key mtmp = case mtmp of
|
|||
-- Move to final location for large file check.
|
||||
pruneTmpWorkDirBefore tmp $ \_ -> do
|
||||
createWorkTreeDirectory (P.takeDirectory file)
|
||||
liftIO $ renameFile
|
||||
(fromRawFilePath tmp)
|
||||
(fromRawFilePath file)
|
||||
liftIO $ moveFile tmp file
|
||||
largematcher <- largeFilesMatcher
|
||||
large <- checkFileMatcher largematcher file
|
||||
if large
|
||||
|
@ -477,9 +475,7 @@ addWorkTree _ addunlockedmatcher u url file key mtmp = case mtmp of
|
|||
-- Move back to tmp because addAnnexedFile
|
||||
-- needs the file in a different location
|
||||
-- than the work tree file.
|
||||
liftIO $ renameFile
|
||||
(fromRawFilePath file)
|
||||
(fromRawFilePath tmp)
|
||||
liftIO $ moveFile file tmp
|
||||
go
|
||||
else Command.Add.addSmall (DryRun False) file s
|
||||
>>= maybe noop void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue