2015-12-04 17:02:56 +00:00
|
|
|
# NAME
|
|
|
|
|
|
|
|
git-annex smudge - git filter driver for git-annex
|
|
|
|
|
|
|
|
# SYNOPSIS
|
|
|
|
|
2015-12-04 19:30:06 +00:00
|
|
|
git annex smudge [--clean] file
|
2015-12-04 17:02:56 +00:00
|
|
|
|
2018-10-25 18:43:13 +00:00
|
|
|
git annex smudge --update
|
|
|
|
|
2015-12-04 17:02:56 +00:00
|
|
|
# DESCRIPTION
|
|
|
|
|
2015-12-04 19:30:06 +00:00
|
|
|
This command lets git-annex be used as a git filter driver which lets
|
2018-10-25 18:43:13 +00:00
|
|
|
annexed files in the git repository to be unlocked, instead
|
|
|
|
of being symlinks, and lets `git add` store files in the annex.
|
2015-12-04 17:02:56 +00:00
|
|
|
|
2015-12-04 21:57:15 +00:00
|
|
|
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,
|
2015-12-16 20:00:41 +00:00
|
|
|
or if its content are large enough to need to use git-annex.
|
2019-10-24 17:50:44 +00:00
|
|
|
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.
|
2015-12-04 21:57:15 +00:00
|
|
|
|
|
|
|
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.
|
2015-12-04 19:30:06 +00:00
|
|
|
|
|
|
|
[filter "annex"]
|
|
|
|
smudge = git-annex smudge %f
|
2015-12-04 20:14:48 +00:00
|
|
|
clean = git-annex smudge --clean %f
|
2015-12-04 19:30:06 +00:00
|
|
|
|
2015-12-04 21:57:15 +00:00
|
|
|
To make git use that filter driver, it needs to be configured in
|
2016-08-16 15:50:19 +00:00
|
|
|
the `.gitattributes` file or in `.git/info/attributes`. The latter
|
2015-12-04 21:57:15 +00:00
|
|
|
is normally configured when a repository is initialized, with the following
|
|
|
|
contents:
|
2015-12-04 17:02:56 +00:00
|
|
|
|
|
|
|
* filter=annex
|
|
|
|
.* !filter
|
|
|
|
|
2018-10-25 18:43:13 +00:00
|
|
|
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.
|
|
|
|
|
2021-05-10 19:00:13 +00:00
|
|
|
# OPTIONS
|
|
|
|
|
|
|
|
* The [[git-annex-common-options]](1) can be used.
|
|
|
|
|
2015-12-04 17:02:56 +00:00
|
|
|
# SEE ALSO
|
|
|
|
|
|
|
|
[[git-annex]](1)
|
2021-11-04 19:02:36 +00:00
|
|
|
[[git-annex-filter-process]](1)
|
2015-12-04 17:02:56 +00:00
|
|
|
|
|
|
|
# AUTHOR
|
|
|
|
|
|
|
|
Joey Hess <id@joeyh.name>
|
|
|
|
|
|
|
|
Warning: Automatically converted into a man page by mdwn2man. Edit with care.
|