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:
parent
2ab448276c
commit
361d28e138
2 changed files with 26 additions and 5 deletions
|
@ -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
3
debian/changelog
vendored
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue