skeleton smudge/clean filters
authorJoey Hess <joeyh@joeyh.name>
Fri, 4 Dec 2015 17:02:56 +0000 (13:02 -0400)
committerJoey Hess <joeyh@joeyh.name>
Fri, 4 Dec 2015 17:03:39 +0000 (13:03 -0400)
CmdLine/GitAnnex.hs
Command/Clean.hs [new file with mode: 0644]
Command/Smudge.hs [new file with mode: 0644]
doc/git-annex-clean.mdwn [new file with mode: 0644]
doc/git-annex-smudge.mdwn [new file with mode: 0644]
doc/git-annex.mdwn
doc/todo/smudge.mdwn

index f585bff3ed053ab80cef80e2e0666f174484c059..ee310820642cbecd59d8bf9dd27eeec026b14dd1 100644 (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
diff --git a/Command/Clean.hs b/Command/Clean.hs
new file mode 100644 (file)
index 0000000..9af862f
--- /dev/null
@@ -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"
diff --git a/Command/Smudge.hs b/Command/Smudge.hs
new file mode 100644 (file)
index 0000000..22f9efd
--- /dev/null
@@ -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"
diff --git a/doc/git-annex-clean.mdwn b/doc/git-annex-clean.mdwn
new file mode 100644 (file)
index 0000000..13099a5
--- /dev/null
@@ -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.
diff --git a/doc/git-annex-smudge.mdwn b/doc/git-annex-smudge.mdwn
new file mode 100644 (file)
index 0000000..ae28be2
--- /dev/null
@@ -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.
index 2020ccf3fd0977beb2d0df41b931639fa3815268..a8cb73b1b1e091881bb095d468aa8bde2c2a938f 100644 (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.
index aea0c9b984076034a3181a80a1b8d828d23e2a6d..094b5f880f45a6a6cf97a44c7a976058aeadeea9 100644 (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: