Unlocked files will now automatically be added back into the annex when committed (and the updated symlink committed), by some magic in the pre-commit hook.

This commit is contained in:
Joey Hess 2010-11-10 13:01:17 -04:00
parent 2ab448276c
commit 361d28e138
2 changed files with 26 additions and 5 deletions

View file

@ -7,16 +7,34 @@
module Command.PreCommit where module Command.PreCommit where
import Control.Monad.State (liftIO)
import Control.Monad (when, unless)
import Command import Command
import qualified Annex
import qualified Backend
import qualified GitRepo as Git
import qualified Command.Fix import qualified Command.Fix
import qualified Command.Lock
import qualified Command.Add
{- Run by git pre-commit hook. -} {- Run by git pre-commit hook. -}
start :: SubCmdStartString start :: SubCmdStartString
start file = do start file = do
-- If a file is unlocked for edit, inject its content into the -- If a file is unlocked for edit, add its new content to the
-- annex, and replace it with a symlink to the content. Git will -- annex, -}
-- then commit that. locked <- Command.Lock.isLocked file
error "TODO" when (not locked) $ do
pairs <- Backend.chooseBackends [file]
ok <- doSubCmd $ Command.Add.start $ pairs !! 0
unless (ok) $ do
error $ "failed to add " ++ file ++ "; canceling commit"
-- git commit will have staged the file's content;
-- drop that and stage the symlink
g <- Annex.gitRepo
liftIO $ Git.run g ["reset", "-q", "--", file]
liftIO $ Git.run g ["add", "--", file]
-- fix symlinks -- Fix symlinks as they are committed, this ensures the
-- relative links are not broken when moved around.
Command.Fix.start file Command.Fix.start file

3
debian/changelog vendored
View file

@ -3,6 +3,9 @@ git-annex (0.04) UNRELEASED; urgency=low
* Add unlock subcommand, which replaces the symlink with a copy of * Add unlock subcommand, which replaces the symlink with a copy of
the file's content in preparation of changing it. the file's content in preparation of changing it.
* Add lock subcommand. * Add lock subcommand.
* Unlocked files will now automatically be added back into the annex when
committed (and the updated symlink committed), by some magic in the
pre-commit hook.
* Add build dep on libghc6-testpack-dev. * Add build dep on libghc6-testpack-dev.
* Add annex.version, which will be used to automate upgrades * Add annex.version, which will be used to automate upgrades
between incompatable versions. between incompatable versions.