summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CmdLine/GitAnnex.hs4
-rw-r--r--Command/Clean.hs29
-rw-r--r--Command/Smudge.hs29
-rw-r--r--doc/git-annex-clean.mdwn36
-rw-r--r--doc/git-annex-smudge.mdwn31
-rw-r--r--doc/git-annex.mdwn6
-rw-r--r--doc/todo/smudge.mdwn4
7 files changed, 137 insertions, 2 deletions
diff --git a/CmdLine/GitAnnex.hs b/CmdLine/GitAnnex.hs
index f585bff3e..ee3108206 100644
--- a/CmdLine/GitAnnex.hs
+++ b/CmdLine/GitAnnex.hs
@@ -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
index 000000000..9af862fb0
--- /dev/null
+++ b/Command/Clean.hs
@@ -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
index 000000000..22f9efd69
--- /dev/null
+++ b/Command/Smudge.hs
@@ -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
index 000000000..13099a544
--- /dev/null
+++ b/doc/git-annex-clean.mdwn
@@ -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
index 000000000..ae28be2c7
--- /dev/null
+++ b/doc/git-annex-smudge.mdwn
@@ -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.
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index 2020ccf3f..a8cb73b1b 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -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.
diff --git a/doc/todo/smudge.mdwn b/doc/todo/smudge.mdwn
index aea0c9b98..094b5f880 100644
--- a/doc/todo/smudge.mdwn
+++ b/doc/todo/smudge.mdwn
@@ -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: