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