got annexing working
This commit is contained in:
parent
80ce5f90db
commit
f4d2a05e86
1 changed files with 36 additions and 0 deletions
36
Annex.hs
Normal file
36
Annex.hs
Normal file
|
@ -0,0 +1,36 @@
|
|||
{- git-annex
|
||||
-}
|
||||
|
||||
module Annex where
|
||||
|
||||
import Backend
|
||||
import System.Posix.Files
|
||||
import System.Directory
|
||||
import GitRepo
|
||||
import Utility
|
||||
|
||||
{- An annexed file's content is stored in .git/annex/. -}
|
||||
annexedFileLocation repo file = do
|
||||
dir <- gitDir repo
|
||||
return $ dir ++ "/annex/" ++ (gitRelative repo file)
|
||||
|
||||
{- Annexes a file, storing it in a backend, and then moving it into
|
||||
- the annex directory and setting up the symlink pointing to its
|
||||
- content. -}
|
||||
annexFile :: [Backend] -> GitRepo -> FilePath -> IO ()
|
||||
annexFile backends repo file = do
|
||||
alreadyannexed <- lookupBackend backends repo file
|
||||
case (alreadyannexed) of
|
||||
Just _ -> error $ "already annexed " ++ file
|
||||
Nothing -> do
|
||||
stored <- storeFile backends repo file
|
||||
if (not stored)
|
||||
then error $ "no backend could store " ++ file
|
||||
else symlink
|
||||
where
|
||||
symlink = do
|
||||
dest <- annexedFileLocation repo file
|
||||
createDirectoryIfMissing True (parentDir dest)
|
||||
renameFile file dest
|
||||
createSymbolicLink dest file
|
||||
gitAdd repo file
|
Loading…
Add table
Reference in a new issue