2021-05-13 20:17:45 +00:00
|
|
|
# NAME
|
|
|
|
|
|
|
|
git-annex filter-branch - filter information from the git-annex branch
|
|
|
|
|
|
|
|
# SYNOPSIS
|
|
|
|
|
|
|
|
git annex filter-branch [...]
|
|
|
|
|
|
|
|
# DESCRIPTION
|
|
|
|
|
|
|
|
This copies selected information from the git-annex branch into a git
|
|
|
|
commit object, and outputs its hash. The git commit can be transported
|
|
|
|
to another git repository, and given a branch name such as "foo/git-annex",
|
|
|
|
and git-annex there will automatically merge that into its git-annex
|
|
|
|
branch. This allows publishing some information from your git-annex branch,
|
|
|
|
without publishing the whole thing.
|
|
|
|
|
2021-05-14 14:59:48 +00:00
|
|
|
Other ways to avoid publishing information from a git-annex branch,
|
|
|
|
or remove information from it include [[git-annex-forget]](1), the
|
|
|
|
`annex.private` git config, and the `--private` option to
|
|
|
|
[[git-annex-initremote](1). Those are much easier to use, but this
|
|
|
|
provides full control for those who need it.
|
2021-05-13 20:17:45 +00:00
|
|
|
|
|
|
|
With no options, no information at all will be included from the git-annex
|
|
|
|
branch. Use options to specify what to include. All options can be specified
|
|
|
|
multiple times.
|
|
|
|
|
2021-05-17 18:12:15 +00:00
|
|
|
When the repository contains information about a private
|
2021-05-17 18:04:14 +00:00
|
|
|
repository (due to `annex.private` being set, or `git-annex initremote
|
|
|
|
--private` being used), that private information will be included when
|
|
|
|
allowed by the options, even though it is not recorded on the git-annex
|
2021-05-17 17:24:58 +00:00
|
|
|
branch.
|
|
|
|
|
2021-05-17 18:04:14 +00:00
|
|
|
When a repository was created with `git annex initremote --sameas=foo`,
|
|
|
|
its information will be included when the information for foo is,
|
|
|
|
and excluded when foo is excluded.
|
|
|
|
|
2021-05-17 18:12:15 +00:00
|
|
|
When a special remote is configured with importtree=yes or exporttree=yes,
|
|
|
|
normally the git tree corresponding to the repository is included in
|
|
|
|
the git-annex branch, to make sure it does not get garbage collected
|
|
|
|
by `git gc`. Those trees are *not* included when filtering the git-annex
|
|
|
|
branch. Usually this will not cause any problems, but if such a tree does
|
|
|
|
get garbage collected, it will prevent accessing files on the special
|
|
|
|
remote, until the next time a tree is imported or exported to it.
|
|
|
|
|
2021-05-13 20:17:45 +00:00
|
|
|
# OPTIONS
|
|
|
|
|
|
|
|
* `path`
|
|
|
|
|
|
|
|
Include information about all keys of annexed files in the path.
|
|
|
|
|
|
|
|
* file matching options
|
|
|
|
|
|
|
|
The [[git-annex-matching-options]](1)
|
|
|
|
can be used to specify which files in a path to include.
|
|
|
|
|
|
|
|
* `--branch=ref`
|
|
|
|
|
|
|
|
Include information about keys referred of annexed files in the branch
|
|
|
|
or treeish.
|
|
|
|
|
|
|
|
* `--key=key`
|
|
|
|
|
|
|
|
Include information about a specific key.
|
|
|
|
|
|
|
|
* `--all`
|
|
|
|
|
|
|
|
Include information about all keys.
|
|
|
|
|
|
|
|
* `--include-key-information-for=repo`
|
|
|
|
|
|
|
|
When including information about a key, include information specific to
|
|
|
|
this repository. The repository can be specified with a uuid or the name
|
2021-05-14 18:14:46 +00:00
|
|
|
of a remote. This option can be used repeatedly to include several
|
|
|
|
repositories.
|
|
|
|
|
|
|
|
* `--include-all-key-information`
|
|
|
|
|
|
|
|
Include key information for all repositories, except any excluded with
|
|
|
|
the `--exclude-key-information-for` option.
|
2021-05-13 20:17:45 +00:00
|
|
|
|
|
|
|
* `--exclude-key-information-for=repo`
|
|
|
|
|
|
|
|
When including information about a key, exclude information specific to
|
|
|
|
this repository. The repository can be specified with a uuid or the name
|
2021-05-14 18:14:46 +00:00
|
|
|
of a remote. This option can be used repeatedly to exclude
|
|
|
|
several repositories.
|
2021-05-13 20:17:45 +00:00
|
|
|
|
|
|
|
* `--include-repo-config-for=repo`
|
|
|
|
|
|
|
|
Include configuration specific to this repository.
|
|
|
|
The repository can be specified with a uuid or the name of a remote.
|
|
|
|
|
|
|
|
This includes the configuration of special remotes, which may include
|
|
|
|
embedded credentials, or encryption parameters. It also includes trust
|
|
|
|
settings, preferred content, etc. It does not include information
|
2021-05-14 18:14:46 +00:00
|
|
|
about any git-annex keys. This option can be used repeatedly to include
|
|
|
|
several repositories.
|
|
|
|
|
|
|
|
* `--include-all-repo-config`
|
|
|
|
|
|
|
|
Include the configuration of all repositories, except for any excluded
|
|
|
|
with the `--exclude-repo-config-for` option.
|
2021-05-13 20:17:45 +00:00
|
|
|
|
|
|
|
* `--exclude-repo-config-for=repo`
|
|
|
|
|
|
|
|
Exclude configuration specific to this repository.
|
|
|
|
The repository can be specified with a uuid or the name of a remote.
|
2021-05-14 18:14:46 +00:00
|
|
|
This option can be used repeatedly to exclude several repositories.
|
2021-05-14 14:59:48 +00:00
|
|
|
|
2021-05-13 20:17:45 +00:00
|
|
|
* `--include-global-config`
|
|
|
|
|
|
|
|
Include global configuration, that is not specific to any repository.
|
|
|
|
|
|
|
|
This includes configs stored by [[git-annex-numcopies]](1),
|
|
|
|
[[git-annex-config]](1), etc.
|
|
|
|
|
|
|
|
# EXAMPLES
|
|
|
|
|
|
|
|
You have a big git-annex repository and are splitting the directory "foo"
|
|
|
|
out, to make a smaller repository. You want the smaller repo's git-annex
|
|
|
|
branch to contain all the information about remotes and other configuration,
|
|
|
|
but only information about keys in that directory.
|
|
|
|
|
|
|
|
git-annex filter-branch foo --include-all-key-information \
|
|
|
|
--include-all-repo-config --include-global-config
|
|
|
|
|
|
|
|
That only includes information about the keys that are currently
|
|
|
|
in the directory "foo", not keys used by old versions of files.
|
|
|
|
To also include information about the version of the subdir in
|
|
|
|
tag "1.0", add the option `--branch=1.0:foo`
|
|
|
|
|
|
|
|
Your repository has a special remote "bar", and you want to share information
|
|
|
|
about which annexed files are stored in it, but without sharing anything
|
|
|
|
about the configuration of the remote.
|
|
|
|
|
|
|
|
git-annex filter-branch --all --include-all-key-information \
|
2021-05-14 18:14:46 +00:00
|
|
|
--include-all-repo-config --exclude-repo-config-for=bar \
|
|
|
|
--include-global-config
|
2021-05-13 20:17:45 +00:00
|
|
|
|
|
|
|
# SEE ALSO
|
|
|
|
|
|
|
|
[[git-annex]](1)
|
|
|
|
|
|
|
|
[[git-annex-forget]](1)
|
|
|
|
|
|
|
|
# AUTHOR
|
|
|
|
|
|
|
|
Joey Hess <id@joeyh.name>
|
|
|
|
|
|
|
|
Warning: Automatically converted into a man page by mdwn2man. Edit with care.
|