d66535f065
* numcopies: New command, sets global numcopies value that is seen by all clones of a repository. * The annex.numcopies git config setting is deprecated. Once the numcopies command is used to set the global number of copies, any annex.numcopies git configs will be ignored. * assistant: Make the prefs page set the global numcopies. This global numcopies setting is needed to let preferred content expressions operate on numcopies. It's also convenient, because typically if you want git-annex to preserve N copies of files in a repo, you want it to do that no matter which repo it's running in. Making it global avoids needing to warn the user about gotchas involving inconsistent annex.numcopies settings. (See changes to doc/numcopies.mdwn.) Added a new variety of git-annex branch log file, that holds only 1 value. Will probably be useful for other stuff later. This commit was sponsored by Nicolas Pouillard.
32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
Annexed data is stored inside your git repository's `.git/annex` directory.
|
|
Some [[special_remotes]] can store annexed data elsewhere.
|
|
|
|
It's important that data not get lost by an ill-considered `git annex drop`
|
|
command. So, git-annex can be configured to try
|
|
to keep N copies of a file's content available across all repositories.
|
|
(Although [[untrusted_repositories|trust]] don't count toward this total.)
|
|
|
|
By default, N is 1; it is configured by running `git annex numcopies N`.
|
|
This default can be overridden on a per-file-type basis by the annex.numcopies
|
|
setting in `.gitattributes` files. The --numcopies switch allows
|
|
temporarily using a different value.
|
|
|
|
`git annex drop` attempts to check with other git remotes, to check that N
|
|
copies of the file exist. If enough repositories cannot be verified to have
|
|
it, it will retain the file content to avoid data loss. Note that
|
|
[[trusted_repositories|trust]] are not explicitly checked.
|
|
|
|
For example, consider three repositories: Server, Laptop, and USB. Both Server
|
|
and USB have a copy of a file, and N=1. If on Laptop, you `git annex get
|
|
$file`, this will transfer it from either Server or USB (depending on which
|
|
is available), and there are now 3 copies of the file.
|
|
|
|
Suppose you want to free up space on Laptop again, and you `git annex drop` the file
|
|
there. If USB is connected, or Server can be contacted, git-annex can check
|
|
that it still has a copy of the file, and the content is removed from
|
|
Laptop. But if USB is currently disconnected, and Server also cannot be
|
|
contacted, it can't verify that it is safe to drop the file, and will
|
|
refuse to do so.
|
|
|
|
With N=2, in order to drop the file content from Laptop, it would need access
|
|
to both USB and Server.
|