diff options
author | Joey Hess <joey@kitenet.net> | 2014-01-05 14:09:57 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-01-05 14:09:57 -0400 |
commit | 1187ce4341f22cb8a8a1ce4c758652e50fe66c55 (patch) | |
tree | 982c7e28edbd38e39c2f952d424aff20d9e572a3 /Command/Add.hs | |
parent | e7fce9f30007dda543f5581371cf624e8a23cb99 (diff) |
add: Fix rollback when disk is completely full.
Noticed that it was possible for add to move a file to .git/annex/objects
and not make the link if the disk was full. This happened because the
location log update failed, and so addLink never got a chance to run.
Running addLink first fixes it; on error it will unwind by moving the file
back to where it was originally.
Diffstat (limited to 'Command/Add.hs')
-rw-r--r-- | Command/Add.hs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Command/Add.hs b/Command/Add.hs index 9f1beb28a..c5035ba1f 100644 --- a/Command/Add.hs +++ b/Command/Add.hs @@ -250,12 +250,12 @@ addLink file key mcache = ifM (coreSymlinks <$> Annex.getGitConfig) cleanup :: FilePath -> Key -> Maybe InodeCache -> Bool -> CommandCleanup cleanup file key mcache hascontent = do - when hascontent $ - logStatus key InfoPresent ifM (isDirect <&&> pure hascontent) ( do l <- inRepo $ gitAnnexLink file key stageSymlink file =<< hashSymlink l , addLink file key mcache ) + when hascontent $ + logStatus key InfoPresent return True |