1git-annex-filter-branch(1) General Commands Manual git-annex-filter-branch(1)
2
3
4
6 git-annex-filter-branch - filter information from the git-annex branch
7
9 git annex filter-branch [...]
10
12 This copies selected information from the git-annex branch into a git
13 commit object, and outputs its hash. The git commit can be transported
14 to another git repository, and given a branch name such as "foo/git-an‐
15 nex", and git-annex there will automatically merge that into its git-
16 annex branch. This allows publishing some information from your git-an‐
17 nex branch, without publishing the whole thing.
18
19 Other ways to avoid publishing information from a git-annex branch, or
20 remove information from it include git-annex-forget(1), the annex.pri‐
21 vate git config, and the --private option to [[git-annex-ini‐
22 tremote](1). Those are much easier to use, but this provides full con‐
23 trol for those who need it.
24
25 With no options, no information at all will be included from the git-
26 annex branch. Use options to specify what to include. All options can
27 be specified multiple times.
28
29 When the repository contains information about a private repository
30 (due to annex.private being set, or git-annex initremote --private be‐
31 ing used), that private information will be included when allowed by
32 the options, even though it is not recorded on the git-annex branch.
33
34 When a repository was created with git annex initremote --sameas=foo,
35 its information will be included when the information for foo is, and
36 excluded when foo is excluded.
37
38 When a special remote is configured with importtree=yes or export‐
39 tree=yes, normally the git tree corresponding to the repository is in‐
40 cluded in the git-annex branch, to make sure it does not get garbage
41 collected by git gc. Those trees are *not* included when filtering the
42 git-annex branch. Usually this will not cause any problems, but if such
43 a tree does get garbage collected, it will prevent accessing files on
44 the special remote, until the next time a tree is imported or exported
45 to it.
46
48 path
49
50 Include information about all keys of annexed files in the path.
51
52 file matching options
53 The git-annex-matching-options(1) can be used to specify which
54 files in a path to include.
55
56 --branch=ref
57 Include information about keys referred of annexed files in the
58 branch or treeish.
59
60 --key=key
61 Include information about a specific key.
62
63 --all Include information about all keys.
64
65 --include-key-information-for=repo
66 When including information about a key, include information spe‐
67 cific to this repository. The repository can be specified with a
68 uuid or the name of a remote. This option can be used repeatedly
69 to include several repositories.
70
71 --include-all-key-information
72 Include key information for all repositories, except any ex‐
73 cluded with the --exclude-key-information-for option.
74
75 --exclude-key-information-for=repo
76 When including information about a key, exclude information spe‐
77 cific to this repository. The repository can be specified with a
78 uuid or the name of a remote. This option can be used repeatedly
79 to exclude several repositories.
80
81 --include-repo-config-for=repo
82 Include configuration specific to this repository. The reposi‐
83 tory can be specified with a uuid or the name of a remote.
84
85 This includes the configuration of special remotes, which may
86 include embedded credentials, or encryption parameters. It also
87 includes trust settings, preferred content, etc. It does not in‐
88 clude information about any git-annex keys. This option can be
89 used repeatedly to include several repositories.
90
91 --include-all-repo-config
92 Include the configuration of all repositories, except for any
93 excluded with the --exclude-repo-config-for option.
94
95 --exclude-repo-config-for=repo
96 Exclude configuration specific to this repository. The reposi‐
97 tory can be specified with a uuid or the name of a remote. This
98 option can be used repeatedly to exclude several repositories.
99
100 --include-global-config
101 Include global configuration, that is not specific to any repos‐
102 itory.
103
104 This includes configs stored by git-annex-numcopies(1), git-an‐
105 nex-config(1), etc.
106
108 You have a big git-annex repository and are splitting the directory
109 "foo" out, to make a smaller repository. You want the smaller repo's
110 git-annex branch to contain all the information about remotes and other
111 configuration, but only information about keys in that directory.
112
113 git-annex filter-branch foo --include-all-key-information --in‐
114 clude-all-repo-config --include-global-config
115
116 That only includes information about the keys that are currently in the
117 directory "foo", not keys used by old versions of files. To also in‐
118 clude information about the version of the subdir in tag "1.0", add the
119 option --branch=1.0:foo
120
121 Your repository has a special remote "bar", and you want to share in‐
122 formation about which annexed files are stored in it, but without shar‐
123 ing anything about the configuration of the remote.
124
125 git-annex filter-branch --all --include-all-key-information --in‐
126 clude-all-repo-config --exclude-repo-config-for=bar --in‐
127 clude-global-config
128
130 git-annex(1)
131
132 git-annex-forget(1)
133
135 Joey Hess <id@joeyh.name>
136
137 git-annex-filter-branch(1)