uninit: Use unannex in --fast mode, to support unannexing multiple files that link to the same content.

This commit is contained in:
Joey Hess 2011-07-04 16:19:04 -04:00
parent d7ce51af5a
commit 71c783bf24
3 changed files with 18 additions and 6 deletions

View file

@ -28,7 +28,15 @@ command = [repoCommand "uninit" paramPath seek
"de-initialize git-annex and clean out repository"]
seek :: [CommandSeek]
seek = [withFilesInGit Command.Unannex.start, withNothing start]
seek = [withFilesInGit startUnannex, withNothing start]
startUnannex :: CommandStartString
startUnannex file = do
-- Force fast mode before running unannex. This way, if multiple
-- files link to a key, it will be left in the annex and hardlinked
-- to by each.
Annex.changeState $ \s -> s { Annex.fast = True }
Command.Unannex.start file
start :: CommandStartNothing
start = next perform
@ -40,12 +48,12 @@ cleanup :: CommandCleanup
cleanup = do
g <- Annex.gitRepo
gitPreCommitHookUnWrite g
mapM_ removeAnnex =<< getKeysPresent
liftIO $ removeDirectoryRecursive (gitAnnexDir g)
-- avoid normal shutdown
saveState
liftIO $ do
Git.run g "branch" [Param "-D", Param Branch.name]
removeDirectoryRecursive (gitAnnexDir g)
-- avoid normal shutdown
exitSuccess
liftIO $ Git.run g "branch" [Param "-D", Param Branch.name]
liftIO $ exitSuccess
gitPreCommitHookUnWrite :: Git.Repo -> Annex ()
gitPreCommitHookUnWrite repo = do

2
debian/changelog vendored
View file

@ -3,6 +3,8 @@ git-annex (3.20110703) UNRELEASED; urgency=low
* uninit: Delete the git-annex branch and .git/annex/
* unannex: In --fast mode, file content is left in the annex, and a
hard link made to it.
* uninit: Use unannex in --fast mode, to support unannexing multiple
files that link to the same content.
-- Joey Hess <joeyh@debian.org> Mon, 04 Jul 2011 15:50:21 -0400

View file

@ -16,3 +16,5 @@ Rafaël
> `dropunused` to actually remove the content. While doable, by use case
> for unannex is more to quickly undo a mistaken add, and it's unlikely there
> are multiple symlinks to the same content in this situation. --[[Joey]]
[[!tag done]]