sync: Don't fail if the directory it is run in gets removed by the sync.

This commit is contained in:
Joey Hess 2013-09-13 14:55:55 -04:00
commit 2407170eaf
4 changed files with 11 additions and 1 deletions

View file

@ -39,6 +39,7 @@ def = [command "sync" (paramOptional (paramRepeating paramRemote))
-- syncing involves several operations, any of which can independently fail
seek :: CommandSeek
seek rs = do
prepMerge
branch <- fromMaybe nobranch <$> inRepo Git.Branch.current
remotes <- syncRemotes rs
return $ concat
@ -52,6 +53,11 @@ seek rs = do
where
nobranch = error "no branch is checked out"
{- Merging may delete the current directory, so go to the top
- of the repo. -}
prepMerge :: Annex ()
prepMerge = liftIO . setCurrentDirectory =<< fromRepo Git.repoPath
syncBranch :: Git.Ref -> Git.Ref
syncBranch = Git.Ref.under "refs/heads/synced/"