summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Assistant.hs2
-rw-r--r--Command/Watch.hs2
-rw-r--r--Makefile6
-rw-r--r--doc/git-annex-add.mdwn47
-rw-r--r--doc/git-annex-addurl.mdwn66
-rw-r--r--doc/git-annex-assistant.mdwn47
-rw-r--r--doc/git-annex-copy.mdwn60
-rw-r--r--doc/git-annex-drop.mdwn45
-rw-r--r--doc/git-annex-edit.mdwn18
-rw-r--r--doc/git-annex-get.mdwn46
-rw-r--r--doc/git-annex-import.mdwn69
-rw-r--r--doc/git-annex-importfeed.mdwn46
-rw-r--r--doc/git-annex-lock.mdwn29
-rw-r--r--doc/git-annex-matching-options.mdwn164
-rw-r--r--doc/git-annex-merge.mdwn27
-rw-r--r--doc/git-annex-mirror.mdwn55
-rw-r--r--doc/git-annex-move.mdwn51
-rw-r--r--doc/git-annex-preferred-content.mdwn45
-rw-r--r--doc/git-annex-rmurl.mdwn21
-rw-r--r--doc/git-annex-schedule.mdwn47
-rw-r--r--doc/git-annex-status.mdwn31
-rw-r--r--doc/git-annex-sync.mdwn64
-rw-r--r--doc/git-annex-undo.mdwn33
-rw-r--r--doc/git-annex-unlock.mdwn32
-rw-r--r--doc/git-annex-watch.mdwn43
-rw-r--r--doc/git-annex-webapp.mdwn49
-rw-r--r--doc/git-annex.mdwn504
-rw-r--r--doc/internals.mdwn2
28 files changed, 1204 insertions, 447 deletions
diff --git a/Command/Assistant.hs b/Command/Assistant.hs
index 0fad6b619..590a2e437 100644
--- a/Command/Assistant.hs
+++ b/Command/Assistant.hs
@@ -22,7 +22,7 @@ import System.Environment
cmd :: [Command]
cmd = [noRepo checkAutoStart $ dontCheck repoExists $ withOptions options $
notBareRepo $ command "assistant" paramNothing seek SectionCommon
- "automatically handle changes"]
+ "automatically sync changes"]
options :: [Option]
options =
diff --git a/Command/Watch.hs b/Command/Watch.hs
index 2f82a7b7f..cf86a5832 100644
--- a/Command/Watch.hs
+++ b/Command/Watch.hs
@@ -14,7 +14,7 @@ import Utility.HumanTime
cmd :: [Command]
cmd = [notBareRepo $ withOptions [foregroundOption, stopOption] $
- command "watch" paramNothing seek SectionCommon "watch for changes"]
+ command "watch" paramNothing seek SectionCommon "watch for changes and autocommit"]
seek :: CommandSeek
seek ps = do
diff --git a/Makefile b/Makefile
index 98b052cd9..d9100c49e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-mans=git-annex.1 git-annex-shell.1
+mans=git-annex.1 $(shell find doc -maxdepth 1 -name git-annex-*.mdwn | sed -e 's/doc\///' -e 's/\.mdwn/\.1/')
all=git-annex $(mans) docs
CABAL?=cabal # set to "./Setup" if you lack a cabal program
@@ -67,7 +67,9 @@ else
IKIWIKI=ikiwiki
endif
-docs: $(mans)
+mans: $(mans)
+
+docs: mans
$(IKIWIKI) doc html -v --wikiname git-annex --plugin=goodstuff \
--no-usedirs --disable-plugin=openid --plugin=sidebar \
--underlaydir=/dev/null --disable-plugin=shortcut \
diff --git a/doc/git-annex-add.mdwn b/doc/git-annex-add.mdwn
new file mode 100644
index 000000000..4ae0d1ce1
--- /dev/null
+++ b/doc/git-annex-add.mdwn
@@ -0,0 +1,47 @@
+# NAME
+
+git-annex add - adds files to the git annex
+
+# SYNOPSIS
+
+git annex add `[path ...]`
+
+# DESCRIPTION
+
+Adds files in the path to the annex. If no path is specified, adds
+files from the current directory and below.
+
+Normally, files that are already checked into git, or that git has been
+configured to ignore will be silently skipped.
+
+# OPTIONS
+
+* `--include-dotfiles`
+
+ Dotfiles are skipped unless explicitly listed, or unless this option is
+ used.
+
+* `--force`
+
+ Add gitignored files.
+
+* `--backend`
+
+ Specifies which key-value backend to use.
+
+* file matching options
+
+ Many of the [[git-annex-matching-options]](1)
+ can be used to specify files to add.
+
+ For example: `--largerthan=1GB`
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-addurl.mdwn b/doc/git-annex-addurl.mdwn
new file mode 100644
index 000000000..5e26035ec
--- /dev/null
+++ b/doc/git-annex-addurl.mdwn
@@ -0,0 +1,66 @@
+# NAME
+
+git-annex addurl - add urls to annex
+
+# SYNOPSIS
+
+git annex addurl `[url ...]`
+
+# DESCRIPTION
+
+Downloads each url to its own file, which is added to the annex.
+
+When `quvi` is installed, urls are automatically tested to see if they
+point to a video hosting site, and the video is downloaded instead.
+
+Urls to torrent files (including magnet links) will cause the content of
+the torrent to be downloaded, using `aria2c`.
+
+Normally the filename is based on the full url, so will look like
+"www.example.com_dir_subdir_bigfile". In some cases, addurl is able to
+come up with a better filename based on other information. Options can also
+be used to get better filenames.
+
+# OPTIONS
+
+* `--fast`
+
+ Avoid immediately downloading the url.
+
+* `--relaxed`
+
+ Avoid storing the size of the url's content, and accept whatever
+ content is there at a future point. (Implies `--fast`.)
+
+* `--raw`
+
+ Prevent special handling of urls by quvi, bittorrent, and other
+ special remotes. This will for example, make addurl
+ download the .torrent file and not the contents it points to.
+
+* `--file=name`
+
+ Use with a filename that does not yet exist to add a new file
+ with the specified name and the content downloaded from the url.
+
+ If the file already exists, addurl will record that it can be downloaded
+ from the specified url(s).
+
+* `--pathdepth=N`
+
+ This causes a shorter filename to be used. For example,
+ `--pathdepth=1` will use "dir/subdir/bigfile",
+ while `--pathdepth=3` will use "bigfile".
+
+ It can also be negative; `--pathdepth=-2` will use the last
+ two parts of the url.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-assistant.mdwn b/doc/git-annex-assistant.mdwn
new file mode 100644
index 000000000..c6a35f03d
--- /dev/null
+++ b/doc/git-annex-assistant.mdwn
@@ -0,0 +1,47 @@
+# NAME
+
+git-annex assistant - automatically sync changes
+
+# SYNOPSIS
+
+git annex assistant
+
+# DESCRIPTION
+
+Watches for changes to files in the current directory and its subdirectories,
+and automatically syncs them to other remotes.
+
+For more details about the git-annex assistant, see
+<https://git-annex.branchable.com/assistant/>
+
+# OPTIONS
+
+* `--autostart`
+
+ Automatically starts the assistant running in each repository listed
+ in the file `~/.config/git-annex/autostart`
+
+ This is typically started at boot, or when you log in.
+
+* `--startdelay=N`
+
+ Wait N seconds before running the startup scan. This process can
+ be expensive and you may not want to run it immediatly upon login.
+
+* `--foreground`
+
+ Avoid forking to the background.
+
+* `--stop`
+
+ Stop a running daemon.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-copy.mdwn b/doc/git-annex-copy.mdwn
new file mode 100644
index 000000000..064d716f0
--- /dev/null
+++ b/doc/git-annex-copy.mdwn
@@ -0,0 +1,60 @@
+# NAME
+
+git-annex copy - copy content of files to/from another repository
+
+# SYNOPSIS
+
+git annex copy `[path ...] [--from=remote|--to=remote]`
+
+# DESCRIPTION
+
+Copies the content of files from or to another remote.
+
+# OPTIONS
+
+* `--from=remote`
+
+ Use this option to copy the content of files from the specified
+ remote to the local repository.
+
+* `--to=remote`
+
+ Use this option to copy the content of files from the local repository
+ to the specified remote.
+
+* `--fast`
+
+ Avoid contacting the remote to check if it has every file when copying
+ --to it.
+
+* `--force`
+
+ Force checking the remote for every file when copying --from it.
+
+* `--all`
+
+ Rather than specifying a filename or path to copy, this option can be
+ used to copy all available versions of all files.
+
+* `--unused`
+
+ Operate on files found by last run of git-annex unused.
+
+* `--key=keyname`
+
+ Use this option to move a specified key.
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to copy.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-drop.mdwn b/doc/git-annex-drop.mdwn
new file mode 100644
index 000000000..41daf3858
--- /dev/null
+++ b/doc/git-annex-drop.mdwn
@@ -0,0 +1,45 @@
+# NAME
+
+git-annex drop - indicate content of files not currently wanted
+
+# SYNOPSIS
+
+git annex drop `[path ...]`
+
+# DESCRIPTION
+
+Drops the content of annexed files from this repository, when
+possible.
+
+git-annex will refuse to drop content if it cannot verify it is
+safe to do so.
+
+# OPTIONS
+
+* `--from=remote`
+
+ Rather than dropping the content of files in the local repository,
+ this option can specifiy a remote from which the files'
+ contents should be removed.
+
+* `--force`
+
+ Use this option with care! It bypasses safety checks, and forces
+ git-annex to delete the content of the specified files, even from
+ the last repository that is storing their content. Data loss can
+ result from using this option.
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to drop.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-edit.mdwn b/doc/git-annex-edit.mdwn
new file mode 100644
index 000000000..ef8502cfa
--- /dev/null
+++ b/doc/git-annex-edit.mdwn
@@ -0,0 +1,18 @@
+# NAME
+
+git-annex unlock - unlock files for modification
+
+# SYNOPSIS
+
+git annex edit `[path ...]`
+
+# DESCRIPTION
+
+This is an alias for the `unlock` command; see [[git-annex-unlock]](1)
+for details.
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-get.mdwn b/doc/git-annex-get.mdwn
new file mode 100644
index 000000000..3345bd862
--- /dev/null
+++ b/doc/git-annex-get.mdwn
@@ -0,0 +1,46 @@
+# NAME
+
+git-annex get - make content of annexed files available
+
+# SYNOPSIS
+
+git annex get `[path ...]`
+
+# DESCRIPTION
+
+Makes the content of annexed files available in this repository. This
+will involve copying them from a remote repository, or downloading them,
+or transferring them from some kind of key-value store.
+
+# OPTIONS
+
+* `--from=remote`
+
+ Normally git-annex will choose which remotes to get the content
+ from. Use this option to specify which remote to use.
+
+* `--all`
+
+ Rather than specifying a filename or path to get, this option can be
+ used to get all available versions of all files.
+
+* `--key=keyname`
+
+ Use this option to get a specified key.
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to get.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+[[git-annex-drop]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-import.mdwn b/doc/git-annex-import.mdwn
new file mode 100644
index 000000000..4d2c05547
--- /dev/null
+++ b/doc/git-annex-import.mdwn
@@ -0,0 +1,69 @@
+# NAME
+
+git-annex import - move and add files from outside git working copy
+
+# SYNOPSIS
+
+git annex import `[path ...]`
+
+# DESCRIPTION
+
+Moves files from somewhere outside the git working copy, and adds them to
+the annex. Individual files to import can be specified.
+If a directory is specified, the entire directory is imported.
+
+ git annex import /media/camera/DCIM/*
+
+By default, importing two files with the same contents from two different
+locations will result in both files being added to the repository.
+(With all checksumming backends, including the default SHA256E,
+only one copy of the data will be stored.)
+
+# OPTIONS
+
+* `--duplicate`
+
+ Do not delete files from the import location.
+
+ This could allow importing the same files repeatedly
+ to different locations in a repository. More likely, it could be used to
+ import the same files to a number of different branches or separate git
+ repositories.
+
+* `--deduplicate`
+
+ Only import files whose content has not been seen before by git-annex.
+
+ Duplicate files will be deleted from the import location.
+
+* `--skip-duplicates`
+
+ Only import files whose content has not been seen before by git-annex,
+ but avoid deleting duplicate files.
+
+* `--clean-duplicates`
+
+ Does not import any files, but any files found in the import location
+ that are duplicates of content in the annex are deleted.
+
+* file matching options
+
+ Many of the [[git-annex-matching-options]](1)
+ can be used to specify files to import.
+
+ git annex import /dir --include='*.png'
+
+# CAVEATS
+
+Note that using `--deduplicate` or `--clean-duplicates` with the WORM
+backend does not look at file content, but filename and mtime.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-importfeed.mdwn b/doc/git-annex-importfeed.mdwn
new file mode 100644
index 000000000..69c841667
--- /dev/null
+++ b/doc/git-annex-importfeed.mdwn
@@ -0,0 +1,46 @@
+# NAME
+
+git-annex importfeed - import files from podcast feeds
+
+# SYNOPSIS
+
+git annex importfeed `[url ...]`
+
+# DESCRIPTION
+
+Imports the contents of podcast feeds. Only downloads files whose
+urls have not already been added to the repository before, so you can
+delete, rename, etc the resulting files and repeated runs won't duplicate
+them.
+
+When quvi is installed, links in the feed are tested to see if they
+are on a video hosting site, and the video is downloaded. This allows
+importing e.g., youtube playlists.
+
+# OPTIONS
+
+* `--force`
+
+ Force downoading urls it's seen before.
+
+* `--template`
+
+ Controls where the files are stored.
+
+ The default template is '${feedtitle}/${itemtitle}${extension}'
+
+ Other available variables for templates: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author
+
+* `--relaxed`, `--fast`, `--raw`, `--template`
+
+ These options behave the same as when using [[git-annex-addurl]](1).
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-lock.mdwn b/doc/git-annex-lock.mdwn
new file mode 100644
index 000000000..aa03d4ce7
--- /dev/null
+++ b/doc/git-annex-lock.mdwn
@@ -0,0 +1,29 @@
+# NAME
+
+git-annex lock - unco unlock command
+
+# SYNOPSIS
+
+git annex lock `[path ...]`
+
+# DESCRIPTION
+
+Use this to undo an unlock command if you don't want to modify
+the files, or have made modifications you want to discard.
+
+# OPTIONS
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to lock.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-matching-options.mdwn b/doc/git-annex-matching-options.mdwn
new file mode 100644
index 000000000..34cc05c6a
--- /dev/null
+++ b/doc/git-annex-matching-options.mdwn
@@ -0,0 +1,164 @@
+# NAME
+
+git-annex-matching-options - specifying files to act on
+
+# DESCRIPTION
+
+Many git-annex commands support using these options to specify which
+files they act on.
+
+Arbitrarily complicated expressions can be built using these options.
+For example:
+
+ --exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)
+
+The above example prevents git-annex from working on mp3 files whose
+file contents are present at either of two repositories.
+
+# OPTIONS
+
+* `--exclude=glob`
+
+ Skips files matching the glob pattern. The glob is matched relative to
+ the current directory. For example:
+
+ --exclude='*.mp3' --exclude='subdir/*'
+
+ Note that this will not match anything when using --all or --unused.
+
+* `--include=glob`
+
+ Skips files not matching the glob pattern. (Same as `--not --exclude`.)
+ For example, to include only mp3 and ogg files:
+
+ --include='*.mp3' --or --include='*.ogg'
+
+ Note that this will not skip anything when using --all or --unused.
+
+* `--in=repository`
+
+ Matches only files that git-annex believes have their contents present
+ in a repository. Note that it does not check the repository to verify
+ that it still has the content.
+
+ The repository should be specified using the name of a configured remote,
+ or the UUID or description of a repository. For the current repository,
+ use `--in=here`
+
+* `--in=repository@{date}`
+
+ Matches files currently in the work tree whose content was present in
+ the repository on the given date.
+
+ The date is specified in the same syntax documented in
+ gitrevisions(7). Note that this uses the reflog, so dates far in the
+ past cannot be queried.
+
+ For example, you might need to run `git annex drop .` to temporarily
+ free up disk space. The next day, you can get back the files you dropped
+ using `git annex get . --in=here@{yesterday}`
+
+* `--copies=number`
+
+ Matches only files that git-annex believes to have the specified number
+ of copies, or more. Note that it does not check remotes to verify that
+ the copies still exist.
+
+* `--copies=trustlevel:number`
+
+ Matches only files that git-annex believes have the specified number of
+ copies, on remotes with the specified trust level. For example,
+ `--copies=trusted:2`
+
+ To match any trust level at or higher than a given level,
+ use 'trustlevel+'. For example, `--copies=semitrusted+:2`
+
+* `--copies=groupname:number`
+
+ Matches only files that git-annex believes have the specified number of
+ copies, on remotes in the specified group. For example,
+ `--copies=archive:2`
+
+* `--lackingcopies=number`
+
+ Matches only files that git-annex believes need the specified number or
+ more additional copies to be made in order to satisfy their numcopies
+ settings.
+
+* `--approxlackingcopies=number`
+
+ Like lackingcopies, but does not look at .gitattributes annex.numcopies
+ settings. This makes it significantly faster.
+
+* `--inbackend=name`
+
+ Matches only files whose content is stored using the specified key-value
+ backend.
+
+* `--inallgroup=groupname`
+
+ Matches only files that git-annex believes are present in all repositories
+ in the specified group.
+
+* `--smallerthan=size`
+* `--largerthan=size`
+
+ Matches only files whose content is smaller than, or larger than the
+ specified size.
+
+ The size can be specified with any commonly used units, for example,
+ "0.5 gb" or "100 KiloBytes"
+
+* `--metadata field=glob`
+
+ Matches only files that have a metadata field attached with a value that
+ matches the glob. The values of metadata fields are matched case
+ insensitively.
+
+* `--want-get`
+
+ Matches files that the preferred content settings for the repository
+ make it want to get. Note that this will match even files that are
+ already present, unless limited with e.g., `--not --in .`
+
+ Note that this will not match anything when using --all or --unused.
+
+* `--want-drop`
+
+ Matches files that the preferred content settings for the repository
+ make it want to drop. Note that this will match even files that have
+ already been dropped, unless limited with e.g., `--in .`
+
+ Note that this will not match anything when using --all or --unused.
+
+* `--not`
+
+ Inverts the next matching option. For example, to only act on
+ files with less than 3 copies, use `--not --copies=3`
+
+* `--and`
+
+ Requires that both the previous and the next matching option matches.
+ The default.
+
+* `--or`
+
+ Requires that either the previous, or the next matching option matches.
+
+* `-(`
+
+ Opens a group of matching options.
+
+* `-)`
+
+ Closes a group of matching options.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-merge.mdwn b/doc/git-annex-merge.mdwn
new file mode 100644
index 000000000..346a94790
--- /dev/null
+++ b/doc/git-annex-merge.mdwn
@@ -0,0 +1,27 @@
+# NAME
+
+git-annex merge - automatically merge changes from remotes
+
+# SYNOPSIS
+
+git annex merge
+
+# DESCRIPTION
+
+This performs the same merging (and merge conflict resolution)
+that is done by the sync command, but without pushing or pulling any
+data.
+
+One way to use this is to put `git annex merge` into a repository's
+post-receive hook. Then any syncs to the repository will update its
+working copy automatically.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-mirror.mdwn b/doc/git-annex-mirror.mdwn
new file mode 100644
index 000000000..ddb46e6b7
--- /dev/null
+++ b/doc/git-annex-mirror.mdwn
@@ -0,0 +1,55 @@
+# NAME
+
+git-annex mirror - mirror content of files to/from another repository
+
+# SYNOPSIS
+
+git annex mirror `[path ...] [--to=remote|--from=remote]`
+
+# DESCRIPTION
+
+This causes a destination repository to mirror a source repository.
+
+Each specified file in the source repository is mirrored to the destination
+repository. If a file's content is present in the source repository, it is
+copied to the destination repository. If a file's content is not present in
+the source repository, it will be dropped from the destination repository
+when the numcopies setting allows.
+
+Note that mirror does not sync the git repository, but only the file
+contents.
+
+# OPTIONS
+
+* `--to=remote`
+
+ Use the local repository as the source repository, and mirror its contents
+ to the remote.
+
+* `--from=remote`
+
+ Use the remote as the source repository, and mirror its contents to the local
+ repository.
+
+* `--all`
+
+ Mirror all objects stored in the git annex, not only objects used by
+ currently existing files.
+
+ However, this bypasses checking the .gitattributes annex.numcopies
+ setting when dropping files.
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to mirror.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-move.mdwn b/doc/git-annex-move.mdwn
new file mode 100644
index 000000000..9b3352f1c
--- /dev/null
+++ b/doc/git-annex-move.mdwn
@@ -0,0 +1,51 @@
+# NAME
+
+git-annex move - move content of files to/from another repository
+
+# SYNOPSIS
+
+git annex move `[path ...] [--from=remote|--to=remote]`
+
+# DESCRIPTION
+
+Moves the content of files from or to another remote.
+
+# OPTIONS
+
+* `--from=remote`
+
+ Use this option to move the content of files from the specified
+ remote to the local repository.
+
+* `--to=remote`
+
+ Use this option to move the content of files from the local repository
+ to the specified remote.
+
+* `--all`
+
+ Rather than specifying a filename or path to move, this option can be
+ used to move all available versions of all files.
+
+* `--unused`
+
+ Operate on files found by last run of git-annex unused.
+
+* `--key=keyname`
+
+ Use this option to move a specified key.
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to move.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-preferred-content.mdwn b/doc/git-annex-preferred-content.mdwn
new file mode 100644
index 000000000..6d5321ca2
--- /dev/null
+++ b/doc/git-annex-preferred-content.mdwn
@@ -0,0 +1,45 @@
+# NAME
+
+git-annex-preferred-content -
+
+# DESCRIPTION
+
+Each repository has a preferred content setting, which specifies content
+that the repository wants to have present. These settings can be configured
+using `git annex vicfg` or `git annex wanted`.
+They are used by the `--auto` option, by `git annex sync --content`,
+and by the git-annex assistant.
+
+Preferred content expressions are similar, but not identical to
+the [[git-annex-matching-options]](1), just without the dashes.
+For example:
+
+ exclude=archive/* and (include=*.mp3 or smallerthan=1mb)
+
+The main differences are that `exclude=` and `include=` always
+match relative to the top of the git repository, and that there is
+no equivilant to `--in`.
+
+For more details about preferred content expressions, see
+See <https://git-annex.branchable.com/preferred_content/>
+
+When a repository is in one of the standard predefined groups, like "backup"
+and "client", setting its preferred content to "standard" will use a
+built-in preferred content expression developed for that group.
+See <https://git-annex.branchable.com/preferred_content/standard_groups/>
+
+If you have set a groupwanted expression for a group, it will be used
+when a repository in the group has its preferred content set to
+"groupwanted".
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+<http://git-annex.branchable.com/>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-rmurl.mdwn b/doc/git-annex-rmurl.mdwn
new file mode 100644
index 000000000..5e4d59f80
--- /dev/null
+++ b/doc/git-annex-rmurl.mdwn
@@ -0,0 +1,21 @@
+# NAME
+
+git-annex rmurl - record file is not available at url
+
+# SYNOPSIS
+
+git annex rmurl `file url`
+
+# DESCRIPTION
+
+Record that the file is no longer available at the url.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-schedule.mdwn b/doc/git-annex-schedule.mdwn
new file mode 100644
index 000000000..78ca7a580
--- /dev/null
+++ b/doc/git-annex-schedule.mdwn
@@ -0,0 +1,47 @@
+# NAME
+
+git-annex schedule - get or set scheduled jobs
+
+# SYNOPSIS
+
+git annex schedule `repository [expression]`
+
+# DESCRIPTION
+
+The [[git-annex-assistant]](1) daemon can be configured to run scheduled jobs.
+This is similar to cron and anacron (and you can use them if you prefer),
+but has the advantage of being integrated into git-annex, and so being able
+to e.g., fsck a repository on a removable drive when the drive gets
+connected.
+
+When run with an expression, configures scheduled jobs to run at a
+particular time. This can be used to make the assistant periodically run
+incremental fscks.
+
+When run without an expression, outputs the current scheduled jobs for
+the repository.
+
+# EXPRESSIONS
+
+These actions are available: "fsck self", "fsck UUID" (where UUID
+is the UUID of a remote to fsck). After the action comes the duration
+to allow the action to run, and finally the schedule of when to run it.
+
+To schedule multiple jobs, separate them with "; ".
+
+ Some examples:
+
+ fsck self 30m every day at any time
+ fsck self 1h every month at 3 AM
+ fsck self 1h on day 1 of every month at any time
+ fsck self 1h every week divisible by 2 at any time
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-status.mdwn b/doc/git-annex-status.mdwn
new file mode 100644
index 000000000..99c040151
--- /dev/null
+++ b/doc/git-annex-status.mdwn
@@ -0,0 +1,31 @@
+# NAME
+
+git-annex status - show the working tree status
+
+# SYNOPSIS
+
+git annex status `[path ...]`
+
+# DESCRIPTION
+
+Similar to `git status --short`, this command displays the status of the files
+in the working tree. Shows files that are not checked into git, files that have
+been deleted, and files that have been modified.
+
+Particularly useful in direct mode.
+
+# OPTIONS
+
+* `--json`
+
+ Enable JSON output.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-sync.mdwn b/doc/git-annex-sync.mdwn
new file mode 100644
index 000000000..fa539d8bc
--- /dev/null
+++ b/doc/git-annex-sync.mdwn
@@ -0,0 +1,64 @@
+# NAME
+
+git-annex sync - synchronize local repository with remotes
+
+# SYNOPSIS
+
+git annex sync `[remote ...]`
+
+# DESCRIPTION
+
+Use this command when you want to synchronize the local repository with
+one or more of its remotes. You can specify the remotes (or remote
+groups) to sync with by name; the default if none are specified is to
+sync with all remotes.
+
+The sync process involves first committing any local changes to files
+that have previously been added to the repository,
+then fetching and merging the `synced/master` and the `git-annex` branch
+from the remote repositories, and finally pushing the changes back to
+those branches on the remote repositories. You can use standard git
+commands to do each of those steps by hand, or if you don't want to
+worry about the details, you can use sync.
+
+Merge conflicts are automatically handled by sync. When two conflicting
+versions of a file have been committed, both will be added to the tree,
+under different filenames. For example, file "foo" would be replaced
+with "foo.somekey" and "foo.otherkey".
+
+Note that syncing with a remote will not update the remote's working
+tree with changes made to the local repository. However, those changes
+are pushed to the remote, so they can be merged into its working tree
+by running "git annex sync" on the remote.
+
+
+# OPTIONS
+
+* `--fast`
+
+ Only sync with the remotes with the lowest annex-cost value configured.
+
+* `--content`
+
+ Normally, syncing does not transfer the contents of annexed files.
+ This option causes the file contents to also be uploaded and downloaded
+ as necessary.
+
+ By default, this tries to get each annexed file that the local repository
+ does not yet have, and then copies each file to every remote that it is
+ syncing with. This behavior can be overridden by configuring the preferred
+ content of a repository. See [git-annex-preferred-content](1)
+
+* `--message=msg`
+
+ Use this option to specify a commit message.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-undo.mdwn b/doc/git-annex-undo.mdwn
new file mode 100644
index 000000000..391b373bf
--- /dev/null
+++ b/doc/git-annex-undo.mdwn
@@ -0,0 +1,33 @@
+# NAME
+
+git-annex undo - undo last change to a file or directory
+
+# SYNOPSIS
+
+git annex `[filename|directory] ...`
+
+# DESCRIPTION
+
+When passed a filename, undoes the last change that was made to that
+file.
+
+When passed a directory, undoes the last change that was made to the
+contents of that directory.
+
+Running undo a second time will undo the undo, returning the working
+tree to the same state it had before. In order for undoing an undo of
+staged changes, any staged changes are first committed by the
+undo command.
+
+Note that this does not undo get/drop of a file's content; it only
+operates on the file tree committed to git.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-unlock.mdwn b/doc/git-annex-unlock.mdwn
new file mode 100644
index 000000000..ffcfe4523
--- /dev/null
+++ b/doc/git-annex-unlock.mdwn
@@ -0,0 +1,32 @@
+# NAME
+
+git-annex unlock - unlock files for modification
+
+# SYNOPSIS
+
+git annex unlock `[path ...]`
+
+# DESCRIPTION
+
+Normally, the content of annexed files is protected from being changed.
+Unlocking an annexed file allows it to be modified. This replaces the
+symlink for each specified file with a copy of the file's content.
+You can then modify it and `git annex add` (or `git commit`) to inject
+it back into the annex.
+
+# OPTIONS
+
+* file matching options
+
+ The [[git-annex-matching-options]](1)
+ can be used to specify files to unlock.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-watch.mdwn b/doc/git-annex-watch.mdwn
new file mode 100644
index 000000000..1e844d714
--- /dev/null
+++ b/doc/git-annex-watch.mdwn
@@ -0,0 +1,43 @@
+# NAME
+
+git-annex watch - watch for changes
+
+# SYNOPSIS
+
+git annex watch
+
+# DESCRIPTION
+
+Watches for changes to files in the current directory and its subdirectories,
+and takes care of automatically adding new files, as well as dealing with
+deleted, copied, and moved files. With this running as a daemon in the
+background, you no longer need to manually run git commands when
+manipulating your files.
+
+By default, all files in the directory will be added to the repository.
+(Including dotfiles.) To block some files from being added, use
+`.gitignore` files.
+
+By default, all files that are added are added to the annex, the same
+as when you run `git annex add`. If you configure annex.largefiles,
+files that it does not match will instead be added with `git add`.
+
+# OPTIONS
+
+* `--foreground`
+
+ Avoid forking to the background.
+
+* `--stop`
+
+ Stop a running daemon.
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex-webapp.mdwn b/doc/git-annex-webapp.mdwn
new file mode 100644
index 000000000..d9e34a2e3
--- /dev/null
+++ b/doc/git-annex-webapp.mdwn
@@ -0,0 +1,49 @@
+# NAME
+
+git-annex webapp - launch webapp
+
+# SYNOPSIS
+
+git annex webapp
+
+# DESCRIPTION
+
+Opens a web app, that allows easy setup of a git-annex repository,
+and control of the git-annex assistant. If the assistant is not
+already running, it will be started.
+
+By default, the webapp can only be accessed from localhost, and running
+it opens a browser window.
+
+# OPTIONS
+
+* `--listen=address`
+
+ Useful for using the webapp on a remote computer. This makes the webapp
+ listen on the specified address.
+
+ This disables running a local web browser, and outputs the url you
+ can use to open the webapp.
+
+ Set annex.listen in the git config to make the webapp always
+ listen on an address.
+
+# USING HTTPS
+
+When using the webapp on a remote computer, you'll almost certainly
+want to enable HTTPS. The webapp will use HTTPS if it finds
+a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's
+one way to generate those files, using a self-signed certificate:
+
+ openssl genrsa -out .git/annex/privkey.pem 4096
+ openssl req -new -x509 -key .git/annex/privkey.pem > .git/annex/certificate.pem
+
+# SEE ALSO
+
+[[git-annex]](1)
+
+# AUTHOR
+
+Joey Hess <id@joeyh.name>
+
+Warning: Automatically converted into a man page by mdwn2man. Edit with care.
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index 6ced5c40b..b6f8022ff 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -63,72 +63,46 @@ subdirectories).
* `add [path ...]`
Adds files in the path to the annex. If no path is specified, adds
- files from the current directory and below.
-
- Files that are already checked into git, or that git has been configured
- to ignore will be silently skipped. (Use `--force` to add ignored files.)
-
- Dotfiles are skipped unless explicitly listed, or the --include-dotfiles
- option is used.
+ files from the current directory and below.
+
+ See [[git-annex-add]](1) for details.
* `get [path ...]`
- Makes the content of annexed files available in this repository. This
- will involve copying them from another repository, or downloading them,
- or transferring them from some kind of key-value store.
-
- Normally git-annex will choose which repository to copy the content from,
- but you can override this using the `--from` option.
-
- Rather than specifying a filename, the `--all` option can be used to
- get all available versions of all files, or the --key=KEY`
- option can be used to get a specified key.
+ Makes the content of annexed files available in this repository.
+
+ See [[git-annex-get]](1) for details.
* `drop [path ...]`
Drops the content of annexed files from this repository.
+
+ See [[git-annex-drop]](1) for details.
- git-annex will refuse to drop content if it cannot verify it is
- safe to do so. This can be overridden with the `--force` switch.
-
- To drop content from a remote, specify `--from`.
-
-* `move [path ...]`
-
- When used with the `--from` option, moves the content of annexed files
- from the specified repository to the current one.
-
- When used with the `--to` option, moves the content of annexed files from
- the current repository to the specified one.
+* `move [path ...] [--from=remote|--to=remote]`
-* `copy [path ...]`
+ Moves the content of files from or to another remote.
- When used with the `--from` option, copies the content of annexed files
- from the specified repository to the current one.
+ See [[git-annex-move]](1) for details.
- When used with the `--to` option, copies the content of annexed files from
- the current repository to the specified one.
+* `copy [path ...] [--from=remote|--to=remote]`
- To avoid contacting the remote to check if it has every file
- when copying --to the repository, specify `--fast`
+ Copies the content of files from or to another remote.
- To force checking the remote for every file when copying --from the
- repository, specify `--force`.
+ See [[git-annex-copy]](1) for details.
* `status [path ...]`
Similar to `git status --short`, displays the status of the files in the
- working tree. Shows files that are not checked into git, files that
- have been deleted, and files that have been modified.
- Particularly useful in direct mode.
+ working tree. Particularly useful in direct mode.
+
+ See [[git-annex-status]](1) for details.
* `unlock [path ...]`
- Normally, the content of annexed files is protected from being changed.
- Unlocking an annexed file allows it to be modified. This replaces the
- symlink for each specified file with a copy of the file's content.
- You can then modify it and `git annex add` (or `git commit`) to inject
- it back into the annex.
+ Unlock annexed files for modification.
+
+ See [[git-annex-unlock]](1) for details.
* `edit [path ...]`
@@ -139,209 +113,62 @@ subdirectories).
Use this to undo an unlock command if you don't want to modify
the files, or have made modifications you want to discard.
+
+ See [[git-annex-lock]](1) for details.
* `sync [remote ...]`
- Use this command when you want to synchronize the local repository with
- one or more of its remotes. You can specify the remotes (or remote
- groups) to sync with by name; the default if none are specified is to
- sync with all remotes.
- Or specify `--fast` to sync with the remotes with the
- lowest annex-cost value.
-
- The sync process involves first committing any local changes to files
- that have previously been added to the repository,
- then fetching and merging the `synced/master` and the `git-annex` branch
- from the remote repositories, and finally pushing the changes back to
- those branches on the remote repositories. You can use standard git
- commands to do each of those steps by hand, or if you don't want to
- worry about the details, you can use sync.
-
- Merge conflicts are automatically handled by sync. When two conflicting
- versions of a file have been committed, both will be added to the tree,
- under different filenames. For example, file "foo" would be replaced
- with "foo.somekey" and "foo.otherkey".
-
- Note that syncing with a remote will not update the remote's working
- tree with changes made to the local repository. However, those changes
- are pushed to the remote, so they can be merged into its working tree
- by running "git annex sync" on the remote.
-
- With the `--content` option, the contents of annexed files in the work
- tree will also be uploaded and downloaded from remotes. By default,
- this tries to get each annexed file that the local repository does not
- yet have, and then copies each file to every remote that it is syncing with.
- This behavior can be overridden by configuring the preferred content of
- a repository. See see PREFERRED CONTENT below.
-
- The `--message` or `-m` option can be used to specify a commit message.
-
-* `merge`
-
- This performs the same merging (and merge conflict resolution)
- that is done by the sync command, but without pushing or pulling any data.
-
- One way to use this is to put `git annex merge` into a repository's
- post-receive hook. Then any syncs to the repository will update its working
- copy automatically.
-
-* `mirror [path ...]`
-
- This causes a destination repository to mirror a source repository.
-
- To use the local repository as the source repository,
- specify mirror `--to` remote.
-
- To use a remote as the source repository, specify mirror `--from` remote.
-
- Each specified file in the source repository is mirrored to the destination
- repository. If a file's content is present in the source repository, it is
- copied to the destination repository. If a file's content is not present in
- the source repository, it will be dropped from the destination repository
- when the numcopies setting allows.
+ Synchronize local repository with remotes.
+
+ See [[git-annex-sync]](1) for details.
- Note that mirror does not sync the git repository, but only the file
- contents.
+* `mirror [path ...] [--to=remote|--from=remote]`
- Also, --all may be specified to mirror all objects stored in the git
- annex, not only objects used by currently existing files. However, this
- bypasses checking the .gitattributes annex.numcopies setting when
- dropping files.
+ Mirror content of files to/from another repository.
+
+ See [[git-annex-mirror]](1) for details.
* `addurl [url ...]`
Downloads each url to its own file, which is added to the annex.
-
- To avoid immediately downloading the url, specify `--fast`.
-
- To avoid storing the size of the url's content, and accept whatever
- is there at a future point, specify `--relaxed`. (Implies `--fast`.)
-
- Normally the filename is based on the full url, so will look like
- "www.example.com_dir_subdir_bigfile". In some cases, addurl is able to
- come up with a better filename based on other information. Or, for a
- shorter filename, specify `--pathdepth=N`. For example,
- `--pathdepth=1` will use "dir/subdir/bigfile",
- while `--pathdepth=3` will use "bigfile". It can also be negative;
- `--pathdepth=-2` will use the last two parts of the url.
-
- Or, to directly specify what file the url is added to, specify `--file`.
- This changes the behavior; now all the specified urls are recorded as
- alternate locations from which the file can be downloaded. In this mode,
- addurl can be used both to add new files, or to add urls to existing files.
-
- When `quvi` is installed, urls are automatically tested to see if they
- point to a video hosting site, and the video is downloaded instead.
-
- Urls to torrent files (including magnet links) will cause the content of
- the torrent to be downloaded, using `aria2c`.
-
- To prevent special handling of urls by quvi, bittorrent, and other
- special remotes, specify `--raw`. This will for example, make addurl
- download the .torrent file and not the contents it points to.
+
+ See [[git-annex-addurl]](1) for details.
* `rmurl file url`
Record that the file is no longer available at the url.
+
+ See [[git-annex-rmurl]](1) for details.
* `import [path ...]`
- Moves files from somewhere outside the git working copy, and adds them to
- the annex. Individual files to import can be specified.
- If a directory is specified, the entire directory is imported.
-
- git annex import /media/camera/DCIM/*
-
- By default, importing two files with the same contents from two different
- locations will result in both files being added to the repository.
- (With all checksumming backends, including the default SHA256E,
- only one copy of the data will be stored.)
-
- To not delete files from the import location, use the
- `--duplicate` option. This could allow importing the same files repeatedly
- to different locations in a repository. More likely, it could be used to
- import the same files to a number of different branches or separate git
- repositories.
-
- To only import files whose content has not been seen before by git-annex,
- use the `--deduplicate` option. Duplicate files will be deleted from the
- import location.
-
- To only import files whose content has not been seen before by git-annex,
- but avoid deleting duplicate files, use the `--skip-duplicates` option.
-
- The `--clean-duplicates` option does not import any new files, but any files
- found in the import location that are duplicates of content in the annex
- are deleted.
-
- (Note that using `--deduplicate` or `--clean-duplicates` with the WORM
- backend does not look at file content, but filename and mtime.)
+ Move and add files from outside git working copy into the annex.
- To control which files are imported, many of the MATCHING OPTIONS can
- be used.
-
- git annex import /dir --include='*.png'
+ See [[git-annex-import]](1) for details.
* `importfeed [url ...]`
- Imports the contents of podcast feeds. Only downloads files whose
- urls have not already been added to the repository before, so you can
- delete, rename, etc the resulting files and repeated runs won't duplicate
- them. (Use `--force` to force downloading urls it's seen before.)
-
- Use `--template` to control where the files are stored.
- The default template is '${feedtitle}/${itemtitle}${extension}'
- (Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author)
-
- The `--relaxed`, `--fast`, and `--raw` options behave the same as they
- do in addurl.
-
- When quvi is installed, links in the feed are tested to see if they
- are on a video hosting site, and the video is downloaded. This allows
- importing e.g., youtube playlists.
+ Imports the contents of podcast feeds into the annex.
+
+ See [[git-annex-importfeed]](1) for details.
* `undo [filename|directory] ...`
- When passed a filename, undoes the last change that was made to that
- file.
-
- When passed a directory, undoes the last change that was made to the
- contents of that directory.
-
- Running undo a second time will undo the undo, returning the working
- tree to the same state it had before. In order for undoing an undo of
- staged changes, any staged changes are first committed by the
- undo command.
-
- Note that this does not undo get/drop of a file's content; it only
- operates on the file tree committed to git.
+ Undo last change to a file or directory.
+
+ See [[git-annex-undo]](1) for details.
* `watch`
- Watches for changes to files in the current directory and its subdirectories,
- and takes care of automatically adding new files, as well as dealing with
- deleted, copied, and moved files. With this running as a daemon in the
- background, you no longer need to manually run git commands when
- manipulating your files.
-
- By default, all files in the directory will be added to the repository.
- (Including dotfiles.) To block some files from being added, use
- `.gitignore` files.
-
- By default, all files that are added are added to the annex, the same
- as when you run `git annex add`. If you configure annex.largefiles,
- files that it does not match will instead be added with `git add`.
-
- To not daemonize, run with `--foreground` ; to stop a running daemon,
- run with `--stop`.
+ Watch for changes and autocommit.
+
+ See [[git-annex-watch]](1) for details.
* `assistant`
- Like watch, but also automatically syncs changes to other remotes.
- Typically started at boot, or when you log in.
+ Atomatically sync folders between devices.
- With the `--autostart` option, the assistant is started in any repositories
- it has created. These are listed in `~/.config/git-annex/autostart`.
+ See [[git-annex-assistant]](1) for details.
* `webapp`
@@ -349,22 +176,7 @@ subdirectories).
and control of the git-annex assistant. If the assistant is not
already running, it will be started.
- By default, the webapp can only be accessed from localhost, and running
- it opens a browser window.
-
- To use the webapp on a remote computer, use the `--listen=address`
- option to specify the address the web server should listen on
- (or set annex.listen).
- This disables running a local web browser, and outputs the url you
- can use to open the webapp.
-
- When using the webapp on a remote computer, you'll almost certainly
- want to enable HTTPS. The webapp will use HTTPS if it finds
- a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's
- one way to generate those files, using a self-signed certificate:
-
- openssl genrsa -out .git/annex/privkey.pem 4096
- openssl req -new -x509 -key .git/annex/privkey.pem > .git/annex/certificate.pem
+ See [[git-annex-webapp]](1) for details.
# REPOSITORY SETUP COMMANDS
@@ -531,9 +343,9 @@ subdirectories).
* `schedule repository [expression]`
- When run with an expression, configures scheduled jobs to run at a
- particular time. This can be used to make the assistant periodically run
- incremental fscks. See SCHEDULED JOBS below.
+ Get or set scheduled jobs.
+
+ See [[git-annex-schedule]](1) for details.
* `vicfg`
@@ -630,6 +442,12 @@ subdirectories).
This is useful to run if you have been moving the symlinks around,
but is done automatically when committing a change with git too.
+* `merge`
+
+ Automatically merge changes from remotes.
+
+ See [[git-annex-merge]](1) for details.
+
* `upgrade`
Upgrades the repository to current layout.
@@ -690,8 +508,8 @@ subdirectories).
finds files in the current directory and its subdirectories.
By default, only lists annexed files whose content is currently present.
- This can be changed by specifying matching options. To list all
- annexed files, present or not, specify `--include "*"`. To list all
+ This can be changed by specifying [[git-annex-matching-options]](1).
+ To list all annexed files, present or not, specify `--include "*"`. To list all
annexed files whose content is not present, specify `--not --in=here`
To output filenames terminated with nulls, for use with xargs -0,
@@ -734,8 +552,9 @@ subdirectories).
When no item is specified, displays statistics and information
for the repository as a whole.
- When a directory is specified, the MATCHING OPTIONS can be used
- to select the files in the directory that are included in the statistics.
+ When a directory is specified, the [[git-annex-matching-options]](1)
+ can be used to select the files in the directory that are included
+ in the statistics.
To only show the data that can be gathered quickly, use `--fast`.
@@ -1265,205 +1084,6 @@ subdirectories).
Overrides git configuration settings. May be specified multiple times.
-# MATCHING OPTIONS
-
-These options can all be specified multiple times, and can be combined to
-limit which files git-annex acts on.
-
-Arbitrarily complicated expressions can be built using these options.
-For example:
-
- --exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)
-
-The above example prevents git-annex from working on mp3 files whose
-file contents are present at either of two repositories.
-
-* `--exclude=glob`
-
- Skips files matching the glob pattern. The glob is matched relative to
- the current directory. For example:
-
- --exclude='*.mp3' --exclude='subdir/*'
-
- Note that this will not match anything when using --all or --unused.
-
-* `--include=glob`
-
- Skips files not matching the glob pattern. (Same as `--not --exclude`.)
- For example, to include only mp3 and ogg files:
-
- --include='*.mp3' --or --include='*.ogg'
-
- Note that this will not skip anything when using --all or --unused.
-
-* `--in=repository`
-
- Matches only files that git-annex believes have their contents present
- in a repository. Note that it does not check the repository to verify
- that it still has the content.
-
- The repository should be specified using the name of a configured remote,
- or the UUID or description of a repository. For the current repository,
- use `--in=here`
-
-* `--in=repository@{date}`
-
- Matches files currently in the work tree whose content was present in
- the repository on the given date.
-
- The date is specified in the same syntax documented in
- gitrevisions(7). Note that this uses the reflog, so dates far in the
- past cannot be queried.
-
- For example, you might need to run `git annex drop .` to temporarily
- free up disk space. The next day, you can get back the files you dropped
- using `git annex get . --in=here@{yesterday}`
-
-* `--copies=number`
-
- Matches only files that git-annex believes to have the specified number
- of copies, or more. Note that it does not check remotes to verify that
- the copies still exist.
-
-* `--copies=trustlevel:number`
-
- Matches only files that git-annex believes have the specified number of
- copies, on remotes with the specified trust level. For example,
- `--copies=trusted:2`
-
- To match any trust level at or higher than a given level,
- use 'trustlevel+'. For example, `--copies=semitrusted+:2`
-
-* `--copies=groupname:number`
-
- Matches only files that git-annex believes have the specified number of
- copies, on remotes in the specified group. For example,
- `--copies=archive:2`
-
-* `--lackingcopies=number`
-
- Matches only files that git-annex believes need the specified number or
- more additional copies to be made in order to satisfy their numcopies
- settings.
-
-* `--approxlackingcopies=number`
-
- Like lackingcopies, but does not look at .gitattributes annex.numcopies
- settings. This makes it significantly faster.
-
-* `--inbackend=name`
-
- Matches only files whose content is stored using the specified key-value
- backend.
-
-* `--inallgroup=groupname`
-
- Matches only files that git-annex believes are present in all repositories
- in the specified group.
-
-* `--smallerthan=size`
-* `--largerthan=size`
-
- Matches only files whose content is smaller than, or larger than the
- specified size.
-
- The size can be specified with any commonly used units, for example,
- "0.5 gb" or "100 KiloBytes"
-
-* `--metadata field=glob`
-
- Matches only files that have a metadata field attached with a value that
- matches the glob. The values of metadata fields are matched case
- insensitively.
-
-* `--want-get`
-
- Matches files that the preferred content settings for the repository
- make it want to get. Note that this will match even files that are
- already present, unless limited with e.g., `--not --in .`
-
- Note that this will not match anything when using --all or --unused.
-
-* `--want-drop`
-
- Matches files that the preferred content settings for the repository
- make it want to drop. Note that this will match even files that have
- already been dropped, unless limited with e.g., `--in .`
-
- Note that this will not match anything when using --all or --unused.
-
-* `--not`
-
- Inverts the next matching option. For example, to only act on
- files with less than 3 copies, use `--not --copies=3`
-
-* `--and`
-
- Requires that both the previous and the next matching option matches.
- The default.
-
-* `--or`
-
- Requires that either the previous, or the next matching option matches.
-
-* `-(`
-
- Opens a group of matching options.
-
-* `-)`
-
- Closes a group of matching options.
-
-# PREFERRED CONTENT
-
-Each repository has a preferred content setting, which specifies content
-that the repository wants to have present. These settings can be configured
-using `git annex vicfg` or `git annex wanted`.
-They are used by the `--auto` option, and by the git-annex assistant.
-
-The preferred content settings are similar, but not identical to
-the matching options specified above, just without the dashes.
-For example:
-
- exclude=archive/* and (include=*.mp3 or smallerthan=1mb)
-
-The main differences are that `exclude=` and `include=` always
-match relative to the top of the git repository, and that there is
-no equivilant to `--in`.
-
-When a repository is in one of the standard predefined groups, like "backup"
-and "client", setting its preferred content to "standard" will use a
-built-in preferred content expression developed for that group.
-See <https://git-annex.branchable.com/preferred_content/standard_groups/>
-
-If you have set a groupwanted expression for a group, it will be used
-when a repository in the group has its preferred content set to
-"groupwanted".
-
-# SCHEDULED JOBS
-
-The git-annex assistant daemon can be configured to run scheduled jobs.
-This is similar to cron and anacron (and you can use them if you prefer),
-but has the advantage of being integrated into git-annex, and so being able
-to e.g., fsck a repository on a removable drive when the drive gets
-connected.
-
-The scheduled jobs can be configured using `git annex vicfg` or
-`git annex schedule`.
-
-These actions are available: "fsck self", "fsck UUID" (where UUID
-is the UUID of a remote to fsck). After the action comes the duration
-to allow the action to run, and finally the schedule of when to run it.
-
-To schedule multiple jobs, separate them with "; ".
-
-Some examples:
-
- fsck self 30m every day at any time
- fsck self 1h every month at 3 AM
- fsck self 1h on day 1 of every month at any time
- fsck self 1h every week divisible by 2 at any time
-
# CONFIGURATION VIA .git/config
Like other git commands, git-annex is configured via `.git/config`.
@@ -1963,7 +1583,7 @@ whenever the git-annex branch is updated. You can make this hook run
# SEE ALSO
-Most of git-annex's documentation is available on its web site,
+More git-annex documentation is available on its web site,
<http://git-annex.branchable.com/>
If git-annex is installed from a package, a copy of its documentation
diff --git a/doc/internals.mdwn b/doc/internals.mdwn
index a562d6067..824655a92 100644
--- a/doc/internals.mdwn
+++ b/doc/internals.mdwn
@@ -241,7 +241,7 @@ space and then its schedule, followed by a timestamp.
There can be multiple events in the schedule, separated by "; ".
The format of the scheduled events is the same described in
-the SCHEDULED JOBS section of the man page.
+[[git-annex-schedule]].
Example: