git-annex/doc/git-annex-common-options.mdwn
Joey Hess 66bd4f80b3
Improved handling of --time-limit when combined with -J
When concurrency is enabled, there can be worker threads still running
when the time limit is checked. Exiting right there does not
give those threads time to finish what they're doing. Instead, the seeking
is wrapped up, and git-annex then shuts down cleanly.

The whole point of --time-limit existing, rather than using timeout(1)
when running git-annex is to let git-annex finish the action(s) it is
working on when the time limit is reached, and shut down cleanly.

I noticed this problem when investigating why restagePointerFile might
not have run after get/drop of an unlocked file. With --time-limit -J,
a worker thread may have finished updating a work tree file, and be killed
by the time limit check before it can run restagePointerFile. So despite
--time-limit running the shutdown actions, the work tree file didn't get
restaged.

Sponsored-by: Dartmouth College's DANDI project
2022-09-22 12:54:52 -04:00

142 lines
3.9 KiB
Markdown

# NAME
git-annex-common-options - options supported by many git-annex commands
# DESCRIPTION
These common options are accepted by many git-annex commands, and
may not be explicitly listed on their individual man pages.
Most of these options are accepted by all git-annex commands.
(Many commands also accept the [[git-annex-matching-options]](1).)
# OPTIONS
* `--force`
Force unsafe actions, such as dropping a file's content when no other
source of it can be verified to still exist, or adding ignored files.
Use with care.
* `--fast`
Avoid some expensive operations normally performed by a command.
What is avoided depends on the command, see individual command's man
pages for details.
* `--quiet`
Avoid the default verbose display of what is done; only show errors.
* `--verbose`
Enable verbose display.
* `--debug`
Display debug messages.
* `--no-debug`
Disable display of debug messages.
* `--debugfilter=name[,name..]`
When debug message display has been enabled by `--debug`, this filters
the debug messages that are displayed to ones coming from modules with
the specified names.
To find the names of modules, see the full debug output, which includes
the module name, eg "(Utility.Process)"
The full module name does not need to be
specified when using this, a substring of the name will do.
For example, `--debugfilter=Process,External` will display debugging
output when git-annex runs processes, and when it communicates with
external special remotes.
* `--numcopies=n`
Overrides the numcopies setting.
* `--mincopies=n`
Overrides the mincopies setting.
* `--time-limit=time`
Limits how long a git-annex command runs. The time can be something
like "5h", or "30m" or even "45s" or "10d".
Note that git-annex may continue running for some time past the specified
time limit, in order to finish processing files it started before the
time limit was reached. That and a cleaner shutdown are the differences
between using this option and a command like `timeout(1)`.
When the time limit prevents git-annex from doing all it
was asked to, it will exit with a special code, 101.
* `--size-limit=size`
Limits the total size of annexed files that a git-annex command
can process.
The size can be specified with any commonly used units, for example,
"50gb".
In some cases, an annexed file's size is not known. This option will
prevent git-annex from processing such files.
When the size limit prevents git-annex from acting on any files,
it will exit with a special code, 101.
* `--semitrust=repository`
* `--untrust=repository`
Overrides trust settings for a repository. May be specified more than once.
The repository should be specified using the name of a configured remote,
or the UUID or description of a repository.
* `--trust=repository`
This used to override trust settings for a repository, but now will
not do so, because trusting a repository can lead to data loss,
and data loss is now only enabled when using the `--force` option.
* `--trust-glacier`
This used to override trust settings for Glacier special remotes,
but now will not do so, because it could lead to data loss,
and data loss is now only enabled when using the `--force` option.
* `--user-agent=value`
Overrides the User-Agent to use when downloading files from the web.
* `--notify-finish`
Caused a desktop notification to be displayed after each successful
file download and upload.
(Only supported on some platforms, e.g. Linux with dbus. A no-op when
not supported.)
* `--notify-start`
Caused a desktop notification to be displayed when a file upload
or download has started, or when a file is dropped.
* `-c name=value`
Overrides git configuration settings. May be specified multiple times.
# SEE ALSO
[[git-annex]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.