git-annex-smudge

git-annex-smudge(1)         General Commands Manual        git-annex-smudge(1)



NAME
       git-annex-smudge - git filter driver for git-annex

SYNOPSIS
       git annex smudge [--clean] file

       git annex smudge --update

DESCRIPTION
       This command lets git-annex be used as a git filter driver which lets
       annexed files in the git repository to be unlocked, instead of being
       symlinks, and lets git add store files in the annex.

       When adding a file with git add, 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.  The
       annex.gitaddtoannex setting overrides that; setting it to false
       prevents git add from adding files to the annex.

       However, if git-annex can tell that a file was annexed before, it will
       still be added to the annex even when those configs would normally
       prevent it. Two examples of this are adding a modified version of an
       annexed file, and moving an annexed file to a new filename and adding
       that.

       The git configuration to use this command as a filter driver is as
       follows.  This is normally set up for you by git-annex init, so you
       should not need to configure it manually.

        [filter "annex"]
                smudge = git-annex smudge %f
                clean = git-annex smudge --clean %f

       To make git use that filter driver, it needs to be configured in the
       .gitattributes file or in .git/info/attributes. The latter is normally
       configured when a repository is initialized, with the following
       contents:

        * filter=annex
        .* !filter

       The smudge filter does not provide git with the content of annexed
       files, because that would be slow and triggers memory leaks in git.
       Instead, it records which worktree files need to be updated, and git
       annex smudge --update later updates the work tree to contain the
       content. That is run by several git hooks, including post-checkout and
       post-merge. However, a few git commands, notably git stash and git
       cherry-pick, do not run any hooks, so after using those commands you
       can manually run git annex smudge --update to update the working tree.

SEE ALSO
       git-annex(1)

AUTHOR
       Joey Hess <id@joeyh.name>

                                                           git-annex-smudge(1)