git-annex/doc/git-annex-satisfy.mdwn
Joey Hess e1fc9e204e
added git-annex satisfy
This ended up having an interface like sync, rather than like get/copy/drop.
That let it be implemented in terms of sync, which took a lot less code.
Also, it lets it handle many of the edge cases that sync does, such as
getting files that are not visible in a --hide-missing branch, and sending
files to exporttree remotes.

As well as being easier to implement, `git-annex satisfy myremote` makes
sense as it satisfies the preferred content settings of the remote.
`git-annex satisfy somefile` does not form a sentence that makes sense. So
while -C can be a little bit annoying, it still makes sense to have this
syntax.

Note that, while I initially thought this would also satisfy numcopies, it
does not. Arguably it ought to. But, sync does not send files in order to
satisfy numcopies, it only sends files to satisfy preferred content. And
it's important that this transfer the same files as sync does, because
it will probably be used in a workflow where the user sometimes syncs and
sometimes satisfies, and does not expect satisfy to do things that sync
would not do.

(Also opened a new bug that also affects sync et all, not only this command.)

Sponsored-by: Nicholas Golder-Manning on Patreon
2023-06-29 15:34:53 -04:00

66 lines
1.7 KiB
Markdown

# NAME
git-annex satisfy - transfer and drop content as configured
# SYNOPSIS
git annex satisfy `[remote ...]`
# DESCRIPTION
This transfers and drops content of annexed files to work toward satisfying
the preferred content settings of the local repository and remotes.
It does the same thing as `git-annex sync --content` without the pulling
and pushing of git repositories, and without changing the trees that are
imported to or exported from special remotes.
# OPTIONS
* `[remote]`
By default this command operates on all remotes, except for remotes
that have `remote.<name>.annex-sync` set to false.
By specifying the names of remotes (or remote groups), you can control
which ones to operate on.
* `--content-of=path` `-C path`
Operate on only files in the specified path. The default is to operate on
all files in the working tree.
This option can be repeated multiple times with different paths.
* `--jobs=N` `-JN`
Enables parallel processing with up to the specified number of jobs
running at once. For example: `-J10`
Setting this to "cpus" will run one job per CPU core.
* `--all` `-A`
Usually this command operates on annexed files in the current branch.
This option makes it operate on all available versions of all annexed files
(when preferred content settings allow).
Note that preferred content settings that use `include=` or `exclude=`
will only match the version of files currently in the work tree, but not
past versions of files.
* Also the [[git-annex-common-options]](1) can be used.
# SEE ALSO
[[git-annex]](1)
[[git-annex-sync]](1)
[[git-annex-preferred-content]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.