skeleton smudge/clean filters

This commit is contained in:
Joey Hess 2015-12-04 13:02:56 -04:00
parent 37a5e2d419
commit 20ca89dfa3
Failed to extract signature
7 changed files with 137 additions and 2 deletions

View file

@ -96,6 +96,8 @@ import qualified Command.Upgrade
import qualified Command.Forget
import qualified Command.Proxy
import qualified Command.DiffDriver
import qualified Command.Smudge
import qualified Command.Clean
import qualified Command.Undo
import qualified Command.Version
#ifdef WITH_ASSISTANT
@ -201,6 +203,8 @@ cmds testoptparser testrunner =
, Command.Forget.cmd
, Command.Proxy.cmd
, Command.DiffDriver.cmd
, Command.Smudge.cmd
, Command.Clean.cmd
, Command.Undo.cmd
, Command.Version.cmd
#ifdef WITH_ASSISTANT

29
Command/Clean.hs Normal file
View file

@ -0,0 +1,29 @@
{- git-annex command
-
- Copyright 2015 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.Clean where
import Common.Annex
import Command
import Annex.Content
import Annex.Link
import Git.Types
cmd :: Command
cmd = dontCheck repoExists $
command "clean" SectionPlumbing
"git clean filter"
paramFile (withParams seek)
seek :: CmdParams -> CommandSeek
seek = withWords start
start :: [String] -> CommandStart
start [file] = do
error ("clean " ++ file)
start [] = error "clean filter run without filename; upgrade git"
start _ = error "clean filter passed multiple filenames"

29
Command/Smudge.hs Normal file
View file

@ -0,0 +1,29 @@
{- git-annex command
-
- Copyright 2015 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.Smudge where
import Common.Annex
import Command
import Annex.Content
import Annex.Link
import Git.Types
cmd :: Command
cmd = dontCheck repoExists $
command "smudge" SectionPlumbing
"git smudge filter"
paramFile (withParams seek)
seek :: CmdParams -> CommandSeek
seek = withWords start
start :: [String] -> CommandStart
start [file] = do
error ("smudge " ++ file)
start [] = error "smudge filter run without filename; upgrade git"
start _ = error "smudge filter passed multiple filenames"

36
doc/git-annex-clean.mdwn Normal file
View file

@ -0,0 +1,36 @@
# NAME
git-annex clean - git filter driver for git-annex
# SYNOPSIS
git annex clean
# DESCRIPTION
When git-annex is used as a git filter driver, this command is run
by git commands such as `git add`. It generates a file that
is added to the git repository and points to the git-annex object
containing the content of a large file.
To configure git to use git-annex as a git filter driver, place the
following in the .gitattributes file:
* filter=annex
.* !filter
The annex.largefiles config is consulted to decide if a given file should
be added to git as-is, or if its content are large enough to need to use
git-annex.
# SEE ALSO
[[git-annex]](1)
[[git-annex-smudge]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.

31
doc/git-annex-smudge.mdwn Normal file
View file

@ -0,0 +1,31 @@
# NAME
git-annex smudge - git filter driver for git-annex
# SYNOPSIS
git annex smudge
# DESCRIPTION
When git-annex is used as a git filter driver, this command is run
by git commands such as `git checkout` and outputs the content of annexed
objects that pointer files point to.
To configure git to use git-annex as a git filter driver, place the
following in the .gitattributes file:
* filter=annex
.* !filter
# SEE ALSO
[[git-annex]](1)
[[git-annex-clean]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.

View file

@ -626,6 +626,12 @@ subdirectories).
See [[git-annex-diffdriver]](1) for details.
* `smudge`, `clean`
These let git-annex be used as a git filter driver.
See [[git-annex-smudge]](1) and [[git-annex-clean]](1) for details.
* `remotedaemon`
Detects when network remotes have received git pushes and fetches from them.

View file

@ -177,8 +177,8 @@ Configuration:
the annex. Other files are passed through the smudge/clean as-is and
have their contents stored in git.
* annex.direct is repurposed to configure how the assistant adds files.
When set to true, they're added unlocked.
* annex.direct is repurposed to configure how git-annex adds files.
When set to false, it adds symlinks and when true it adds pointer files.
git-annex clean: