1git-annex(1) General Commands Manual git-annex(1)
2
3
4
6 git-annex - manage files with git, without checking their contents in
7
9 git annex command [params ...]
10
12 git-annex allows managing files with git, without checking the file
13 contents into git. While that may seem paradoxical, it is useful when
14 dealing with files larger than git can currently easily handle, whether
15 due to limitations in memory, checksumming time, or disk space.
16
17 Even without file content tracking, being able to manage files with
18 git, move files around and delete files with versioned directory trees,
19 and use branches and distributed clones, are all very handy reasons to
20 use git. And annexed files can co-exist in the same git repository with
21 regularly versioned files, which is convenient for maintaining docu‐
22 ments, Makefiles, etc that are associated with annexed files but that
23 benefit from full revision control.
24
25 When a file is annexed, its content is moved into a key-value store,
26 and a symlink is made that points to the content. These symlinks are
27 checked into git and versioned like regular files. You can move them
28 around, delete them, and so on. Pushing to another git repository will
29 make git-annex there aware of the annexed file, and it can be used to
30 retrieve its content from the key-value store.
31
33 # git annex get video/hackity_hack_and_kaxxt.mov
34 get video/hackity_hack_and_kaxxt.mov (not available)
35 I was unable to access these remotes: server
36 Try making some of these repositories available:
37 5863d8c0-d9a9-11df-adb2-af51e6559a49 -- my home file server
38 58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive
39 ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive
40 failed
41 # sudo mount /media/usb
42 # git remote add usbdrive /media/usb
43 # git annex get video/hackity_hack_and_kaxxt.mov
44 get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok
45
46 # git annex add iso
47 add iso/Debian_5.0.iso ok
48
49 # git annex drop iso/Debian_4.0.iso
50 drop iso/Debian_4.0.iso ok
51
52 # git annex move iso --to=usbdrive
53 move iso/Debian_5.0.iso (moving to usbdrive...) ok
54
56 help
57
58 Display built-in help.
59
60 For help on a specific command, use git annex help command
61
62 add [path ...]
63 Adds files to the annex.
64
65 See git-annex-add(1) for details.
66
67 get [path ...]
68 Makes the content of annexed files available in this repository.
69
70 See git-annex-get(1) for details.
71
72 drop [path ...]
73 Drops the content of annexed files from this repository.
74
75 See git-annex-drop(1) for details.
76
77 move [path ...] [--from=remote|--to=remote]
78 Moves the content of files from or to another remote.
79
80 See git-annex-move(1) for details.
81
82 copy [path ...] [--from=remote|--to=remote]
83 Copies the content of files from or to another remote.
84
85 See git-annex-copy(1) for details.
86
87 status [path ...]
88 Show the working tree status. (deprecated)
89
90 See git-annex-status(1) for details.
91
92 unlock [path ...]
93 Unlock annexed files for modification.
94
95 See git-annex-unlock(1) for details.
96
97 edit [path ...]
98 This is an alias for the unlock command. May be easier to remem‐
99 ber, if you think of this as allowing you to edit an annexed
100 file.
101
102 lock [path ...]
103 Use this to undo an unlock command if you don't want to modify
104 the files, or have made modifications you want to discard.
105
106 See git-annex-lock(1) for details.
107
108 sync [remote ...]
109 Synchronize local repository with remotes.
110
111 See git-annex-sync(1) for details.
112
113 mirror [path ...] [--to=remote|--from=remote]
114 Mirror content of files to/from another repository.
115
116 See git-annex-mirror(1) for details.
117
118 addurl [url ...]
119 Downloads each url to its own file, which is added to the annex.
120
121 See git-annex-addurl(1) for details.
122
123 rmurl file url
124 Record that the file is no longer available at the url.
125
126 See git-annex-rmurl(1) for details.
127
128 import --from remote branch[:subdir] | [path ...]
129 Add a tree of files to the repository.
130
131 See git-annex-import(1) for details.
132
133 importfeed [url ...]
134 Imports the contents of podcast feeds into the annex.
135
136 See git-annex-importfeed(1) for details.
137
138 export treeish --to remote
139 Export content to a remote.
140
141 See git-annex-export(1) for details.
142
143 undo [filename|directory] ...
144 Undo last change to a file or directory.
145
146 See git-annex-undo(1) for details.
147
148 multicast
149 Multicast file distribution.
150
151 See git-annex-multicast(1) for details.
152
153 watch Watch for changes and autocommit.
154
155 See git-annex-watch(1) for details.
156
157 assistant
158 Automatically sync folders between devices.
159
160 See git-annex-assistant(1) for details.
161
162 webapp Opens a web app, that allows easy setup of a git-annex reposi‐
163 tory, and control of the git-annex assistant. If the assistant
164 is not already running, it will be started.
165
166 See git-annex-webapp(1) for details.
167
168 remotedaemon
169 Persistant communication with remotes.
170
171 See git-annex-remotedaemon(1) for details.
172
174 init [description]
175
176 Until a repository (or one of its remotes) has been initialized,
177 git-annex will refuse to operate on it, to avoid accidentally
178 using it in a repository that was not intended to have an annex.
179
180 See git-annex-init(1) for details.
181
182 describe repository description
183 Changes the description of a repository.
184
185 See git-annex-describe(1) for details.
186
187 initremote name type=value [param=value ...]
188 Creates a new special remote, and adds it to .git/config.
189
190 See git-annex-initremote(1) for details.
191
192 enableremote name [param=value ...]
193 Enables use of an existing special remote in the current reposi‐
194 tory.
195
196 See git-annex-enableremote(1) for details.
197
198 renameremote
199 Renames a special remote.
200
201 See git-annex-renameremote(1) for details.
202
203 enable-tor
204 Sets up tor hidden service.
205
206 See git-annex-enable-tor(1) for details.
207
208 numcopies [N]
209 Configure desired number of copies.
210
211 See git-annex-numcopies(1) for details.
212
213 mincopies [N]
214 Configure minimum number of copies.
215
216 See git-annex-mincopies(1) for details.
217
218 trust [repository ...]
219 Records that a repository is trusted to not unexpectedly lose
220 content. Use with care.
221
222 See git-annex-trust(1) for details.
223
224 untrust [repository ...]
225 Records that a repository is not trusted and could lose content
226 at any time.
227
228 See git-annex-untrust(1) for details.
229
230 semitrust [repository ...]
231 Returns a repository to the default semi trusted state.
232
233 See git-annex-semitrust(1) for details.
234
235 group repository groupname
236 Add a repository to a group.
237
238 See git-annex-group(1) for details.
239
240 ungroup repository groupname
241 Removes a repository from a group.
242
243 See git-annex-ungroup(1) for details.
244
245 wanted repository [expression]
246 Get or set preferred content expression.
247
248 See git-annex-wanted(1) for details.
249
250 groupwanted groupname [expression]
251 Get or set groupwanted expression.
252
253 See git-annex-groupwanted(1) for details.
254
255 required repository [expression]
256 Get or set required content expression.
257
258 See git-annex-required(1) for details.
259
260 schedule repository [expression]
261 Get or set scheduled jobs.
262
263 See git-annex-schedule(1) for details.
264
265 config Get and set other configuration stored in git-annex branch.
266
267 See git-annex-config(1) for details.
268
269 vicfg Opens EDITOR on a temp file containing most of the above config‐
270 uration settings, as well as a few others, and when it exits,
271 stores any changes made back to the git-annex branch.
272
273 See git-annex-vicfg(1) for details.
274
275 adjust Switches a repository to use an adjusted branch, which can auto‐
276 matically unlock all files, etc.
277
278 See git-annex-adjust(1) for details.
279
280 direct Switches a repository to use direct mode. (deprecated)
281
282 See git-annex-direct(1) for details.
283
284 indirect
285 Switches a repository to use indirect mode. (deprecated)
286
287 See git-annex-indirect(1) for details.
288
290 fsck [path ...]
291
292 Checks the annex consistency, and warns about or fixes any prob‐
293 lems found. This is a good complement to git fsck.
294
295 See git-annex-fsck(1) for details.
296
297 expire [repository:]time ...
298 Expires repositories that have not recently performed an activ‐
299 ity (such as a fsck).
300
301 See git-annex-expire(1) for details.
302
303 unused Checks the annex for data that does not correspond to any files
304 present in any tag or branch, and prints a numbered list of the
305 data.
306
307 See git-annex-unused(1) for details.
308
309 dropunused [number|range ...]
310 Drops the data corresponding to the numbers, as listed by the
311 last git annex unused
312
313 See git-annex-dropunused(1) for details.
314
315 addunused [number|range ...]
316 Adds back files for the content corresponding to the numbers or
317 ranges, as listed by the last git annex unused.
318
319 See git-annex-addunused(1) for details.
320
321 fix [path ...]
322 Fixes up symlinks that have become broken to again point to an‐
323 nexed content.
324
325 See git-annex-fix(1) for details.
326
327 merge Automatically merge changes from remotes.
328
329 See git-annex-merge(1) for details.
330
331 upgrade
332 Upgrades the repository.
333
334 See git-annex-upgrade(1) for details.
335
336 dead [repository ...] [--key key]
337 Indicates that a repository or a single key has been irretriev‐
338 ably lost.
339
340 See git-annex-dead(1) for details.
341
342 forget Causes the git-annex branch to be rewritten, throwing away his‐
343 torical data about past locations of files.
344
345 See git-annex-forget(1) for details.
346
347 filter-branch
348 Produces a filtered version of the git-annex branch.
349
350 See git-annex-filter-branch(1) for details.
351
352 repair This can repair many of the problems with git repositories that
353 git fsck detects, but does not itself fix. It's useful if a
354 repository has become badly damaged. One way this can happen is
355 if a repository used by git-annex is on a removable drive that
356 gets unplugged at the wrong time.
357
358 See git-annex-repair(1) for details.
359
360 p2p Configure peer-2-Peer links between repositories.
361
362 See git-annex-p2p(1) for details.
363
365 find [path ...]
366
367 Outputs a list of annexed files in the specified path. With no
368 path, finds files in the current directory and its subdirecto‐
369 ries.
370
371 See git-annex-find(1) for details.
372
373 whereis [path ...]
374 Displays information about where the contents of files are lo‐
375 cated.
376
377 See git-annex-whereis(1) for details.
378
379 list [path ...]
380 Displays a table of remotes that contain the contents of the
381 specified files. This is similar to whereis but a more compact
382 display.
383
384 See git-annex-list(1) for details.
385
386 whereused
387 Finds what files use or used a key.
388
389 log [path ...]
390 Displays the location log for the specified file or files, show‐
391 ing each repository they were added to ("+") and removed from
392 ("-").
393
394 See git-annex-log(1) for details.
395
396 info [directory|file|remote|uuid ...]
397 Displays statistics and other information for the specified
398 item, which can be a directory, or a file, or a remote, or the
399 uuid of a repository.
400
401 When no item is specified, displays statistics and information
402 for the repository as a whole.
403
404 See git-annex-info(1) for details.
405
406 version
407 Shows the version of git-annex, as well as repository version
408 information.
409
410 See git-annex-version(1) for details.
411
412 map Generate map of repositories.
413
414 See git-annex-map(1) for details.
415
416 inprogress
417 Access files while they're being downloaded.
418
419 See git-annex-inprogress(1) for details.
420
421 findkeys
422 Similar to git-annex find, but operating on keys.
423
424 See git-annex-findkeys(1) for details.
425
427 metadata [path ...]
428
429 The content of an annexed file can have any number of metadata
430 fields attached to it to describe it. Each metadata field can in
431 turn have any number of values.
432
433 This command can be used to set metadata, or show the currently
434 set metadata.
435
436 See git-annex-metadata(1) for details.
437
438 view [tag ...] [field=value ...] [field=glob ...] [?tag ...]
439 [field?=glob] [!tag ...] [field!=value ...]
440 Uses metadata to build a view branch of the files in the current
441 branch, and checks out the view branch. Only files in the cur‐
442 rent branch whose metadata matches all the specified field val‐
443 ues and tags will be shown in the view.
444
445 See git-annex-view(1) for details.
446
447 vpop [N]
448 Switches from the currently active view back to the previous
449 view. Or, from the first view back to original branch.
450
451 See git-annex-vpop(1) for details.
452
453 vfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]
454 Filters the current view to only the files that have the speci‐
455 fied field values and tags.
456
457 See git-annex-vfilter(1) for details.
458
459 vadd [field=glob ...] [field=value ...] [tag ...]
460 Changes the current view, adding an additional level of directo‐
461 ries to categorize the files.
462
463 See git-annex-vfilter(1) for details.
464
465 vcycle When a view involves nested subdirectories, this cycles the or‐
466 der.
467
468 See git-annex-vcycle(1) for details.
469
471 migrate [path ...]
472
473 Changes the specified annexed files to use a different key-value
474 backend.
475
476 See git-annex-migrate(1) for details.
477
478 reinject src dest
479 Moves the src file into the annex as the content of the dest
480 file. This can be useful if you have obtained the content of a
481 file from elsewhere and want to put it in the local annex.
482
483 See git-annex-reinject(1) for details.
484
485 unannex [path ...]
486 Use this to undo an accidental git annex add command. It puts
487 the file back how it was before the add.
488
489 See git-annex-unannex(1) for details.
490
491 uninit De-initialize git-annex and clean out repository.
492
493 See git-annex-uninit(1) for details.
494
495 reinit uuid|description
496 Initialize repository, reusing old UUID.
497
498 See git-annex-reinit(1) for details.
499
501 pre-commit [path ...]
502
503 This is meant to be called from git's pre-commit hook. git annex
504 init automatically creates a pre-commit hook using this.
505
506 See git-annex-pre-commit(1) for details.
507
508 post-receive
509 This is meant to be called from git's post-receive hook. git an‐
510 nex init automatically creates a post-receive hook using this.
511
512 See git-annex-post-receive(1) for details.
513
514 lookupkey [file ...]
515 Looks up key used for file.
516
517 See git-annex-lookupkey(1) for details.
518
519 calckey [file ...]
520 Calculates the key that would be used to refer to a file.
521
522 See git-annex-calckey(1) for details.
523
524 contentlocation [key ..]
525 Looks up location of annexed content for a key.
526
527 See git-annex-contentlocation(1) for details.
528
529 examinekey [key ...]
530 Print information that can be determined purely by looking at
531 the key.
532
533 See git-annex-examinekey(1) for details.
534
535 matchexpression
536 Checks if a preferred content expression matches provided data.
537
538 See git-annex-matchexpression(1) for details.
539
540 fromkey [key file]
541 Manually set up a file in the git repository to link to a speci‐
542 fied key.
543
544 See git-annex-fromkey(1) for details.
545
546 registerurl [key url]
547 Registers an url for a key.
548
549 See git-annex-registerurl(1) for details.
550
551 unregisterurl [key url]
552 Unregisters an url for a key.
553
554 See git-annex-unregisterurl(1) for details.
555
556 setkey key file
557 Moves a file into the annex as the content of a key.
558
559 See git-annex-setkey(1) for details.
560
561 dropkey [key ...]
562 Drops annexed content for specified keys.
563
564 See git-annex-dropkey(1) for details.
565
566 transferkey key [--from=remote|--to=remote]
567 Transfers a key from or to a remote.
568
569 See git-annex-transferkey(1) for details.
570
571 transferrer
572 Used internally by git-annex to transfer content.
573
574 See git-annex-transferrer(1) for details.
575
576 transferkeys
577 Used internally by old versions of the assistant.
578
579 See git-annex-transferkey(1) for details.
580
581 setpresentkey key uuid [1|0]
582 This plumbing-level command changes git-annex's records about
583 whether the specified key's content is present in a remote with
584 the specified uuid.
585
586 See git-annex-setpresentkey(1) for details.
587
588 readpresentkey key uuid
589 Read records of where key is present.
590
591 See git-annex-readpresentkey(1) for details.
592
593 checkpresentkey key remote
594 Check if key is present in remote.
595
596 See git-annex-checkpresentkey(1) for details.
597
598 rekey [file key ...]
599 Change keys used for files.
600
601 See git-annex-rekey(1) for details.
602
603 resolvemerge
604 Resolves a conflicted merge, by adding both conflicting versions
605 of the file to the tree, using variants of their filename. This
606 is done automatically when using git annex sync or git annex
607 merge.
608
609 See git-annex-resolvemerge(1) for details.
610
611 diffdriver
612 This can be used to make git diff use an external diff driver
613 with annexed files.
614
615 See git-annex-diffdriver(1) for details.
616
617 smudge This command lets git-annex be used as a git filter driver, al‐
618 lowing annexed files in the git repository to be unlocked regu‐
619 lar files instead of symlinks.
620
621 See git-annex-smudge(1) for details.
622
623 filter-process
624 An alternative implementation of a git filter driver, that is
625 faster in some situations and slower in others than git-annex
626 smudge.
627
628 See git-annex-filter-process(1) for details.
629
630 restage
631 Restages unlocked files in the git index.
632
633 See git-annex-restage(1) for details.
634
635 findref [ref]
636 Lists files in a git ref. (deprecated)
637
638 See git-annex-findref(1) for details.
639
640 proxy -- git cmd [options]
641 Bypass direct mode guard. (deprecated)
642
643 See git-annex-proxy(1) for details.
644
646 test
647
648 This runs git-annex's built-in test suite.
649
650 See git-annex-test(1) for details.
651
652 testremote remote
653 This tests a remote by generating some random objects and send‐
654 ing them to the remote, then redownloading them, removing them
655 from the remote, etc.
656
657 It's safe to run in an existing repository (the repository con‐
658 tents are not altered), although it may perform expensive data
659 transfers.
660
661 See git-annex-testremote(1) for details.
662
663 fuzztest
664 Generates random changes to files in the current repository, for
665 use in testing the assistant.
666
667 See git-annex-fuzztest(1) for details.
668
669 benchmark
670 This runs git-annex's built-in benchmarks, if it was built with
671 benchmarking support.
672
673 See git-annex-benchmark(1) for details.
674
676 In addition to all the commands listed above, more commands can be
677 added to git-annex by dropping commands named like "git-annex-foo" into
678 a directory in the PATH.
679
681 Like other git commands, git-annex is configured via .git/config.
682 These settings, as well as relevant git config settings, are the ones
683 git-annex uses.
684
685 (Some of these settings can also be set, across all clones of the
686 repository, using git-annex-config. See its man page for a list.)
687
688 annex.uuid
689 A unique UUID for this repository (automatically set).
690
691 annex.backend
692 Name of the default key-value backend to use when adding new
693 files to the repository. See git-annex-backends(1) for informa‐
694 tion about available backends.
695
696 This is overridden by annex annex.backend configuration in the
697 .gitattributes files, and by the --backend option.
698
699 (This used to be named annex.backends, and that will still be
700 used if set.)
701
702 annex.securehashesonly
703 Set to true to indicate that the repository should only use
704 cryptographically secure hashes (SHA2, SHA3) and not insecure
705 hashes (MD5, SHA1) for content.
706
707 When this is set, the contents of files using cryptographically
708 insecure hashes will not be allowed to be added to the reposi‐
709 tory.
710
711 Also, git-annex fsck will complain about any files present in
712 the repository that use insecure hashes. And, git-annex import
713 --no-content will refuse to import files from special remotes
714 using insecure hashes.
715
716 To configure the behavior in new clones of the repository, this
717 can be set using git-annex-config.
718
719 annex.maxextensionlength
720 Maximum length, in bytes, of what is considered a filename ex‐
721 tension. This is used when adding a file to a backend that pre‐
722 serves filename extensions, and also when generating a view
723 branch.
724
725 The default length is 4, which allows extensions like "jpeg".
726 The dot before the extension is not counted part of its length.
727 At most two extensions at the end of a filename will be pre‐
728 served, e.g. .gz or .tar.gz .
729
730 annex.diskreserve
731 Amount of disk space to reserve. Disk space is checked when
732 transferring annexed content to avoid running out, and addi‐
733 tional free space can be reserved via this option, to make space
734 for other data (such as git commit logs). Can be specified with
735 any commonly used units, for example, "0.5 gb", "500M", or "100
736 KiloBytes"
737
738 The default reserve is 100 megabytes.
739
740 annex.skipunknown
741 Set to true to make commands like "git-annex get" silently skip
742 over items that are listed in the command line, but are not
743 checked into git.
744
745 Set to false to make it an error for commands like "git-annex
746 get" to be asked to operate on files that are not checked into
747 git. (This is the default in recent versions of git-annex.)
748
749 Note that, when annex.skipunknown is false, a command like "git-
750 annex get ." will fail if no files in the current directory are
751 checked into git, but a command like "git-annex get" will not
752 fail, because the current directory is not listed, but is im‐
753 plicit. Commands like "git-annex get foo/" will fail if no files
754 in the directory are checked into git, but if at least one file
755 is, it will ignore other files that are not. This is all the
756 same as the behavior of "git-ls files --error-unmatch".
757
758 Also note that git-annex skips files that are checked into git,
759 but are not annexed files, this setting does not affect that.
760
761 annex.largefiles
762 Used to configure which files are large enough to be added to
763 the annex. It is an expression that matches the large files, eg
764 "include=*.mp3 or largerthan=500kb" See git-annex-matching-ex‐
765 pression(1) for details on the syntax.
766
767 Overrides any annex.largefiles attributes in .gitattributes
768 files.
769
770 To configure a default annex.largefiles for all clones of the
771 repository, this can be set in git-annex-config(1).
772
773 This configures the behavior of both git-annex and git when
774 adding files to the repository. By default, git-annex add adds
775 all files to the annex (except dotfiles), and git add adds files
776 to git (unless they were added to the annex previously). When
777 annex.largefiles is configured, both git annex add and git add
778 will add matching large files to the annex, and the other files
779 to git.
780
781 Other git-annex commands also honor annex.largefiles, including
782 git annex import, git annex addurl, git annex importfeed and the
783 assistant.
784
785 annex.dotfiles
786 Normally, dotfiles are assumed to be files like .gitignore,
787 whose content should always be part of the git repository, so
788 they will not be added to the annex. Setting annex.dotfiles to
789 true makes dotfiles be added to the annex the same as any other
790 file.
791
792 To annex only some dotfiles, set this and configure annex.large‐
793 files to match the ones you want. For example, to match only
794 dotfiles ending in ".big"
795
796 git config annex.largefiles "(include=.*.big or in‐
797 clude=*/.*.big) or (exclude=.* and exclude=*/.*)"
798 git config annex.dotfiles true
799
800 To configure a default annex.dotfiles for all clones of the
801 repository, this can be set in git-annex-config(1).
802
803 annex.gitaddtoannex
804 Setting this to false will prevent git add from adding files to
805 the annex, despite the annex.largefiles configuration.
806
807 annex.addsmallfiles
808 Controls whether small files (not matching annex.largefiles)
809 should be checked into git by git annex add. Defaults to true;
810 set to false to instead make small files be skipped.
811
812 annex.addunlocked
813 Commands like git-annex add default to adding files to the
814 repository in locked form. This can make them add the files in
815 unlocked form, the same as if git-annex-unlock(1) were run on
816 the files.
817
818 This can be set to "true" to add everything unlocked, or it can
819 be a more complicated expression that matches files by name,
820 size, or content. See git-annex-matching-expression(1) for de‐
821 tails.
822
823 To configure a default annex.addunlocked for all clones of the
824 repository, this can be set in git-annex-config(1).
825
826 (Using git add always adds files in unlocked form and it is not
827 affected by this setting.)
828
829 When a repository has core.symlinks set to false, or has an ad‐
830 justed unlocked branch checked out, this setting is ignored, and
831 files are always added to the repository in unlocked form.
832
833 annex.numcopies
834 This is a deprecated setting. You should instead use the git an‐
835 nex numcopies command to configure how many copies of files are
836 kept across all repositories, or the annex.numcopies .gitat‐
837 tributes setting.
838
839 This config setting is only looked at when git annex numcopies
840 has never been configured, and when there's no annex.numcopies
841 setting in the .gitattributes file.
842
843 annex.genmetadata
844 Set this to true to make git-annex automatically generate some
845 metadata when adding files to the repository.
846
847 In particular, it stores year, month, and day metadata, from the
848 file's modification date.
849
850 When importfeed is used, it stores additional metadata from the
851 feed, such as the author, title, etc.
852
853 annex.used-refspec
854 This controls which refs git-annex unused considers to be used.
855 See REFSPEC FORMAT in git-annex-unused(1) for details.
856
857 annex.jobs
858 Configure the number of concurrent jobs to run. Default is 1.
859
860 Only git-annex commands that support the --jobs option will use
861 this.
862
863 Setting this to "cpus" will run one job per CPU core.
864
865 When the --batch option is used, this configuration is ignored.
866
867 annex.adjustedbranchrefresh
868 When git-annex-adjust(1) is used to set up an adjusted branch
869 that needs to be refreshed after getting or dropping files, this
870 config controls how frequently the branch is refreshed.
871
872 Refreshing the branch takes some time, so doing it after every
873 file can be too slow. (It also can generate a lot of dangling
874 git objects.) The default value is 0 (or false), which does not
875 refresh the branch. Setting 1 (or true) will refresh only once,
876 after git-annex has made other changes. Setting 2 refreshes af‐
877 ter every file, 3 after every other file, and so on; setting 100
878 refreshes after every 99 files.
879
880 (If git-annex gets faster in the future, refresh rates will in‐
881 crease proportional to the speed improvements.)
882
883 annex.queuesize
884 git-annex builds a queue of git commands, in order to combine
885 similar commands for speed. By default the size of the queue is
886 limited to 10240 commands; this can be used to change the size.
887 If you have plenty of memory and are working with very large
888 numbers of files, increasing the queue size can speed it up.
889
890 annex.bloomcapacity
891 The git annex unused and git annex sync --content commands use a
892 bloom filter to determine what files are present in eg, the work
893 tree. The default bloom filter is sized to handle up to 500000
894 files. If your repository is larger than that, you should in‐
895 crease this value. Larger values will make git-annex unused and
896 git annex sync --content consume more memory; run git annex info
897 for memory usage numbers.
898
899 annex.bloomaccuracy
900 Adjusts the accuracy of the bloom filter used by git annex un‐
901 used and git annex sync --content. The default accuracy is
902 10000000 -- 1 unused file out of 10000000 will be missed by git
903 annex unused. Increasing the accuracy will make git annex unused
904 consume more memory; run git annex info for memory usage num‐
905 bers.
906
907 annex.sshcaching
908 By default, git-annex caches ssh connections using ssh's Con‐
909 trolMaster and ControlPersist settings (if built using a new
910 enough ssh). To disable this, set to false.
911
912 annex.adviceNoSshCaching
913 When git-annex is unable to use ssh connection caching, or has
914 been configured not to, and concurrency is enabled, it will warn
915 that this might result in multiple ssh processes prompting for
916 passwords at the same time. To disable that warning, eg if you
917 have configured ssh connection caching yourself, or have ssh
918 agent caching passwords, set this to false.
919
920 annex.alwayscommit
921 By default, git-annex automatically commits data to the git-an‐
922 nex branch after each command is run. If you have a series of
923 commands that you want to make a single commit, you can run the
924 commands with -c annex.alwayscommit=false. You can later commit
925 the data by running git annex merge (or by automatic merges) or
926 git annex sync.
927
928 annex.commitmessage
929 When git-annex updates the git-annex branch, it usually makes up
930 its own commit message (eg "update"), since users rarely look at
931 or care about changes to that branch. If you do care, you can
932 specify this setting by running commands with -c annex.com‐
933 mitmessage=whatever
934
935 This works well in combination with annex.alwayscommit=false, to
936 gather up a set of changes and commit them with a message you
937 specify.
938
939 annex.alwayscompact
940 By default, git-annex compacts data it records in the git-annex
941 branch. Setting this to false avoids doing that compaction in
942 some cases, which can speed up operations that populate the git-
943 annex branch with a lot of data. However, when used with opera‐
944 tions that overwrite old values in the git-annex branch, that
945 may cause the git-annex branch to use more disk space, and so
946 slow down reading data from it.
947
948 An example of a command that can be sped up by using -c an‐
949 nex.alwayscompact=false is git-annex registerurl --batch, when
950 adding a large number of urls to the same key.
951
952 This option was first supported by git-annex version
953 10.20220724. It is not entirely safe to set this option in a
954 repository that may also be used by an older version of git-an‐
955 nex at the same time as a version that supports this option.
956
957 annex.allowsign
958 By default git-annex avoids gpg signing commits that it makes
959 when they're not the purpose of a command, but only a side ef‐
960 fect. That default avoids lots of gpg password prompts when
961 commit.gpgSign is set. A command like git annex sync or git an‐
962 nex merge will gpg sign its commit, but a command like git annex
963 get, that updates the git-annex branch, will not. The assistant
964 also avoids signing commits.
965
966 Setting annex.allowsign to true lets all commits be signed, as
967 controlled by commit.gpgSign and other git configuration.
968
969 annex.merge-annex-branches
970 By default, git-annex branches that have been pulled from re‐
971 motes are automatically merged into the local git-annex branch,
972 so that git-annex has the most up-to-date possible knowledge.
973
974 To avoid that merging, set this to "false".
975
976 This can be useful particularly when you don't have write per‐
977 mission to the repository. While git-annex is mostly able to
978 work in a read-only repository with unmerged git-annex branches,
979 some things do not work, and when it does work it will be slower
980 due to needing to look at each of the unmerged branches.
981
982 annex.private
983 When this is set to true, no information about the repository
984 will be recorded in the git-annex branch.
985
986 For example, to make a repository without any mention of it ever
987 appearing in the git-annex branch:
988
989 git init myprivate
990 cd myprivaterepo
991 git config annex.private true
992 git annex init
993
994 annex.hardlink
995 Set this to true to make file contents be hard linked between
996 the repository and its remotes when possible, instead of a more
997 expensive copy.
998
999 Use with caution -- This can invalidate numcopies counting,
1000 since with hard links, fewer copies of a file can exist. So, it
1001 is a good idea to mark a repository using this setting as un‐
1002 trusted.
1003
1004 When a repository is set up using git clone --shared, git-annex
1005 init will automatically set annex.hardlink and mark the reposi‐
1006 tory as untrusted.
1007
1008 When annex.thin is also set, setting annex.hardlink has no ef‐
1009 fect.
1010
1011 annex.thin
1012 Set this to true to make unlocked files be a hard link to their
1013 content in the annex, rather than a second copy. This can save
1014 considerable disk space, but when a modification is made to a
1015 file, you will lose the local (and possibly only) copy of the
1016 old version. So, enable with care.
1017
1018 After setting (or unsetting) this, you should run git annex fix
1019 to fix up the annexed files in the work tree to be hard links
1020 (or copies).
1021
1022 Note that this has no effect when the filesystem does not sup‐
1023 port hard links. And when multiple files in the work tree have
1024 the same content, only one of them gets hard linked to the an‐
1025 nex.
1026
1027 annex.supportunlocked
1028 By default git-annex supports unlocked files as well as locked
1029 files, so this defaults to true. If set to false, git-annex will
1030 only support locked files. That will avoid doing the work needed
1031 to support unlocked files.
1032
1033 Note that setting this to false does not prevent a repository
1034 from having unlocked files added to it, and in that case the
1035 content of the files will not be accessible until they are
1036 locked.
1037
1038 After changing this config, you need to re-run git-annex init
1039 for it to take effect.
1040
1041 annex.resolvemerge
1042 Set to false to prevent merge conflicts in the checked out
1043 branch being automatically resolved by the git-annex assitant,
1044 git-annex sync, git-annex merge, and the git-annex post-receive
1045 hook.
1046
1047 To configure the behavior in all clones of the repository, this
1048 can be set in git-annex-config(1).
1049
1050 annex.synccontent
1051 Set to true to make git-annex sync default to syncing annexed
1052 content.
1053
1054 To configure the behavior in all clones of the repository, this
1055 can be set in git-annex-config(1).
1056
1057 annex.synconlyannex
1058 Set to true to make git-annex sync default to only sincing the
1059 git-annex branch and annexed content.
1060
1061 To configure the behavior in all clones of the repository, this
1062 can be set in git-annex-config(1).
1063
1064 annex.viewunsetdirectory
1065 This configures the name of a directory that is used in a view
1066 to contain files that do not have metadata set. The default name
1067 for the directory is "_". See git-annex-view(1) for details.
1068
1069 annex.debug
1070 Set to true to enable debug logging by default.
1071
1072 annex.debugfilter
1073 Set to configure which debug messages to display (when debug
1074 message display has been enabled by annex.debug or --debug). The
1075 value is one or more module names, separated by commas.
1076
1077 annex.version
1078 The current version of the git-annex repository. This is main‐
1079 tained by git-annex and should never be manually changed.
1080
1081 annex.autoupgraderepository
1082 When an old git-annex repository version is no longer supported,
1083 git-annex will normally automatically upgrade the repository to
1084 the new version. It may also sometimes upgrade from an old
1085 repository version that is still supported but that is not as
1086 good as a later version.
1087
1088 If this is set to false, git-annex won't automatically upgrade
1089 the repository. If the repository version is not supported, git-
1090 annex will instead exit with an error message. If it is still
1091 supported, git-annex will continue to work.
1092
1093 You can run git annex upgrade yourself when you are ready to up‐
1094 grade the repository.
1095
1096 annex.crippledfilesystem
1097 Set to true if the repository is on a crippled filesystem, such
1098 as FAT, which does not support symbolic links, or hard links, or
1099 unix permissions. This is automatically probed by "git annex
1100 init".
1101
1102 annex.pidlock
1103 Normally, git-annex uses fine-grained lock files to allow multi‐
1104 ple processes to run concurrently without getting in each oth‐
1105 ers' way. That works great, unless you are using git-annex on a
1106 filesystem that does not support POSIX fcntl locks. This is
1107 sometimes the case when using NFS or Lustre filesystems.
1108
1109 To support such situations, you can set annex.pidlock to true,
1110 and it will fall back to a single top-level pid file lock.
1111
1112 Although, often, you'd really be better off fixing your net‐
1113 worked filesystem configuration to support POSIX locks.. And,
1114 some networked filesystems are so inconsistent that one node
1115 can't reliably tell when the other node is holding a pid lock.
1116 Caveat emptor.
1117
1118 annex.pidlocktimeout
1119 git-annex will wait up to this many seconds for the pid lock
1120 file to go away, and will then abort if it cannot continue. De‐
1121 fault: 300
1122
1123 When using pid lock files, it's possible for a stale lock file
1124 to get left behind by previous run of git-annex that crashed or
1125 was interrupted. This is mostly avoided, but can occur espe‐
1126 cially when using a network file system. This timeout prevents
1127 git-annex waiting forever in such a situation.
1128
1129 annex.dbdir
1130 The directory where git-annex should store its sqlite databases.
1131 The default location is inside .git/annex/.
1132
1133 Certian filesystems, such as cifs, may not support locking oper‐
1134 ations that sqlite needs, and setting this to a directory on an‐
1135 other filesystem can work around such a problem.
1136
1137 This can safely be set to the same directory in the configura‐
1138 tion of multiple repositories; each repository will use a subdi‐
1139 rectory for its sqlite database.
1140
1141 annex.cachecreds
1142 When "true" (the default), git-annex will cache credentials used
1143 to access special remotes in files in .git/annex/creds/ that
1144 only you can read. To disable that caching, set to "false", and
1145 credentials will only be read from the environment, or if they
1146 have been embedded in encrypted form in the git repository, will
1147 be extracted and decrypted each time git-annex needs to access
1148 the remote.
1149
1150 annex.secure-erase-command
1151 This can be set to a command that should be run whenever git-an‐
1152 nex removes the content of a file from the repository.
1153
1154 In the command line, %file is replaced with the file that should
1155 be erased.
1156
1157 For example, to use the wipe command, set it to wipe -f %file.
1158
1159 annex.freezecontent-command, annex.thawcontent-command
1160 Usually the write permission bits are unset to protect annexed
1161 objects from being modified or deleted. The freezecontent-com‐
1162 mand is run after git-annex has removed (or attempted to remove)
1163 the write bit, and can be used to prevent writing in some other
1164 way. The thawcontent-command should undo its effect, and is run
1165 before git-annex restores the write bit.
1166
1167 In the command line, %path is replaced with the file or direc‐
1168 tory to operate on.
1169
1170 (When annex.crippledfilesystem is set, git-annex will not try to
1171 remove/restore the write bit, but it will still run these
1172 hooks.)
1173
1174 annex.tune.objecthash1, annex.tune.objecthashlower, annex.tune.branch‐
1175 hash1
1176 These can be passed to git annex init to tune the repository.
1177 They cannot be safely changed in a running repository and should
1178 never be set in global git configuration. For details, see
1179 <https://git-annex.branchable.com/tuning/>.
1180
1182 Remotes are configured using these settings in .git/config.
1183
1184 remote.<name>.annex-cost
1185 When determining which repository to transfer annexed files from
1186 or to, ones with lower costs are preferred. The default cost is
1187 100 for local repositories, and 200 for remote repositories.
1188
1189 remote.<name>.annex-cost-command
1190 If set, the command is run, and the number it outputs is used as
1191 the cost. This allows varying the cost based on e.g., the cur‐
1192 rent network.
1193
1194 remote.<name>.annex-start-command
1195 A command to run when git-annex begins to use the remote. This
1196 can be used to, for example, mount the directory containing the
1197 remote.
1198
1199 The command may be run repeatedly when multiple git-annex pro‐
1200 cesses are running concurrently.
1201
1202 remote.<name>.annex-stop-command
1203 A command to run when git-annex is done using the remote.
1204
1205 The command will only be run once *all* running git-annex pro‐
1206 cesses are finished using the remote.
1207
1208 remote.<name>.annex-shell
1209 Specify an alternative git-annex-shell executable on the remote
1210 instead of looking for "git-annex-shell" on the PATH.
1211
1212 This is useful if the git-annex-shell program is outside the
1213 PATH or has a non-standard name.
1214
1215 remote.<name>.annex-ignore
1216 If set to true, prevents git-annex from storing file contents on
1217 this remote by default. (You can still request it be used by
1218 the --from and --to options.)
1219
1220 This is, for example, useful if the remote is located somewhere
1221 without git-annex-shell. (For example, if it's on GitHub). Or,
1222 it could be used if the network connection between two reposito‐
1223 ries is too slow to be used normally.
1224
1225 This does not prevent git-annex sync (or the git-annex assist‐
1226 ant) from syncing the git repository to the remote.
1227
1228 remote.<name>.annex-ignore-command
1229 If set, the command is run, and if it exits nonzero, that's the
1230 same as setting annex-ignore to true. This allows controlling
1231 behavior based on e.g., the current network.
1232
1233 remote.<name>.annex-sync
1234 If set to false, prevents git-annex sync (and the git-annex as‐
1235 sistant) from syncing with this remote by default. However, git
1236 annex sync <name> can still be used to sync with the remote.
1237
1238 remote.<name>.annex-sync-command
1239 If set, the command is run, and if it exits nonzero, that's the
1240 same as setting annex-sync to false. This allows controlling be‐
1241 havior based on e.g., the current network.
1242
1243 remote.<name>.annex-pull
1244 If set to false, prevents git-annex sync (and the git-annex as‐
1245 sistant etc) from ever pulling (or fetching) from the remote.
1246
1247 remote.<name>.annex-push
1248 If set to false, prevents git-annex sync (and the git-annex as‐
1249 sistant etc) from ever pushing to the remote.
1250
1251 remote.<name>.annex-readonly
1252 If set to true, prevents git-annex from making changes to a re‐
1253 mote. This both prevents git-annex sync from pushing changes,
1254 and prevents storing or removing files from read-only remote.
1255
1256 remote.<name>.annex-verify, annex.verify
1257 By default, git-annex will verify the checksums of objects down‐
1258 loaded from remotes. If you trust a remote and don't want the
1259 overhead of these checksums, you can set this to false.
1260
1261 Note that even when this is set to false, git-annex does verifi‐
1262 cation in some edge cases, where it's likely the case than an
1263 object was downloaded incorrectly, or when needed for security.
1264
1265 remote.<name>.annex-tracking-branch
1266 This is for use with special remotes that support exports and
1267 imports.
1268
1269 When set to eg, "master", this tells git-annex that you want the
1270 special remote to track that branch.
1271
1272 When set to eg, "master:subdir", the special remote tracks only
1273 the subdirectory of that branch.
1274
1275 git-annex sync --content will import changes from the remote and
1276 merge them into the annex-tracking-branch. They also export
1277 changes made to the branch to the remote.
1278
1279 remote.<name>.annex-export-tracking
1280 Deprecated name for remote.<name>.annex-tracking-branch. Will
1281 still be used if it's configured and remote.<name>.annex-track‐
1282 ing-branch is not.
1283
1284 remote.<name>.annexUrl
1285 Can be used to specify a different url than the regular re‐
1286 mote.<name>.url for git-annex to use when talking with the re‐
1287 mote. Similar to the pushUrl used by git-push.
1288
1289 remote.<name>.annex-uuid
1290 git-annex caches UUIDs of remote repositories here.
1291
1292 remote.<name>.annex-config-uuid
1293 Used for some special remotes, points to a different special re‐
1294 mote configuration to use.
1295
1296 remote.<name>.annex-retry, annex.retry
1297 Number of times a transfer that fails can be retried. (default
1298 0)
1299
1300 remote.<name>.annex-forward-retry, annex.forward-retry
1301 If a transfer made some forward progress before failing, this
1302 allows it to be retried even when annex.retry does not. The
1303 value is the maximum number of times to do that. (default 5)
1304
1305 When both annex.retry and this are set, the maximum number of
1306 retries is the larger of the two.
1307
1308 remote.<name>.annex-retry-delay, annex.retry-delay
1309 Number of seconds to delay before the first retry of a transfer.
1310 When making multiple retries of the same transfer, the delay
1311 doubles after each retry. (default 1)
1312
1313 remote.<name>.annex-bwlimit, annex.bwlimit
1314 This can be used to limit how much bandwidth is used for a
1315 transfer from or to a remote.
1316
1317 For example, to limit transfers to 1 mebibyte per second: git
1318 config annex.bwlimit "1MiB"
1319
1320 This will work with many remotes, including git remotes, but not
1321 for remotes where the transfer is run by a separate program than
1322 git-annex.
1323
1324 remote.<name>.annex-stalldetecton, annex.stalldetection
1325 Configuring this lets stalled or too-slow transfers be detected,
1326 and dealt with, so rather than getting stuck, git-annex will
1327 cancel the stalled operation. The transfer will be considered to
1328 have failed, so settings like annex.retry will control what it
1329 does next.
1330
1331 By default, git-annex detects transfers that have probably
1332 stalled, and suggests configuring this. If it is incorrectly de‐
1333 tecting stalls, setting this to "false" will avoid that.
1334
1335 Set to "true" to enable automatic stall detection. If a remote
1336 does not update its progress consistently, no automatic stall
1337 detection will be done. And it may take a while for git-annex to
1338 decide a remote is really stalled when using automatic stall de‐
1339 tection, since it needs to be conservative about what looks like
1340 a stall.
1341
1342 For more fine control over what constitutes a stall, set to a
1343 value in the form "$amount/$timeperiod" to specify how much data
1344 git-annex should expect to see flowing, minimum, over a given
1345 period of time.
1346
1347 For example, to detect outright stalls where no data has been
1348 transferred after 30 seconds: git config annex.stalldetection
1349 "1KB/30s"
1350
1351 Or, if you have a remote on a USB drive that is normally capable
1352 of several megabytes per second, but has bad sectors where it
1353 gets stuck for a long time, you could use: git config remote.us‐
1354 bdrive.annex-stalldetection "1MB/1m"
1355
1356 This is not enabled by default, because it can make git-annex
1357 use more resources. To be able to cancel stalls, git-annex has
1358 to run transfers in separate processes (one per concurrent job).
1359 So it may need to open more connections to a remote than usual,
1360 or the communication with those processes may make it a bit
1361 slower.
1362
1363 remote.<name>.annex-checkuuid
1364 This only affects remotes that have their url pointing to a di‐
1365 rectory on the same system. git-annex normally checks the uuid
1366 of such remotes each time it's run, which lets it transparently
1367 deal with different drives being mounted to the location at dif‐
1368 ferent times.
1369
1370 Setting annex-checkuuid to false will prevent it from checking
1371 the uuid at startup (although the uuid is still verified before
1372 making any changes to the remote repository). This may be useful
1373 to set to prevent unnecessary spin-up or automounting of a
1374 drive.
1375
1376 remote.<name>.annex-trustlevel
1377 Configures a local trust level for the remote. This overrides
1378 the value configured by the trust and untrust commands. The
1379 value can be any of "trusted", "semitrusted" or "untrusted".
1380
1381 remote.<name>.annex-availability
1382 Can be used to tell git-annex whether a remote is LocallyAvail‐
1383 able or GloballyAvailable. Normally, git-annex determines this
1384 automatically.
1385
1386 remote.<name>.annex-speculate-present
1387 Set to "true" to make git-annex speculate that this remote may
1388 contain the content of any file, even though its normal location
1389 tracking does not indicate that it does. This will cause git-an‐
1390 nex to try to get all file contents from the remote. Can be use‐
1391 ful in setting up a caching remote.
1392
1393 remote.<name>.annex-private
1394 When this is set to true, no information about the remote will
1395 be recorded in the git-annex branch. This is mostly useful for
1396 special remotes, and is set when using git-annex-initremote(1)
1397 with the --private option.
1398
1399 remote.<name>.annex-bare
1400 Can be used to tell git-annex if a remote is a bare repository
1401 or not. Normally, git-annex determines this automatically.
1402
1403 remote.<name>.annex-ssh-options
1404 Options to use when using ssh to talk to this remote.
1405
1406 remote.<name>.annex-rsync-options
1407 Options to use when using rsync to or from this remote. For ex‐
1408 ample, to force IPv6, and limit the bandwidth to 100Kbyte/s, set
1409 it to -6 --bwlimit 100
1410
1411 Note that git-annex-shell has a whitelist of allowed rsync op‐
1412 tions, and others will not be be passed to the remote rsync. So
1413 using some options may break the communication between the local
1414 and remote rsyncs.
1415
1416 remote.<name>.annex-rsync-upload-options
1417 Options to use when using rsync to upload a file to a remote.
1418
1419 These options are passed after other applicable rsync options,
1420 so can be used to override them. For example, to limit upload
1421 bandwidth to 10Kbyte/s, set --bwlimit 10.
1422
1423 remote.<name>.annex-rsync-download-options
1424 Options to use when using rsync to download a file from a re‐
1425 mote.
1426
1427 These options are passed after other applicable rsync options,
1428 so can be used to override them.
1429
1430 remote.<name>.annex-rsync-transport
1431 The remote shell to use to connect to the rsync remote. Possible
1432 values are ssh (the default) and rsh, together with their argu‐
1433 ments, for instance ssh -p 2222 -c blowfish; Note that the re‐
1434 mote hostname should not appear there, see rsync(1) for details.
1435 When the transport used is ssh, connections are automatically
1436 cached unless annex.sshcaching is unset.
1437
1438 remote.<name>.annex-bup-split-options
1439 Options to pass to bup split when storing content in this re‐
1440 mote. For example, to limit the bandwidth to 100Kbyte/s, set it
1441 to --bwlimit 100k (There is no corresponding option for bup
1442 join.)
1443
1444 remote.<name>.annex-gnupg-options
1445 Options to pass to GnuPG when it's encrypting data. For in‐
1446 stance, to use the AES cipher with a 256 bits key and disable
1447 compression, set it to --cipher-algo AES256 --compress-algo
1448 none. (These options take precedence over the default GnuPG con‐
1449 figuration, which is otherwise used.)
1450
1451 remote.<name>.annex-gnupg-decrypt-options
1452 Options to pass to GnuPG when it's decrypting data. (These op‐
1453 tions take precedence over the default GnuPG configuration,
1454 which is otherwise used.)
1455
1456 annex.ssh-options, annex.rsync-options,
1457 annex.rsync-upload-options, annex.rsync-download-options, an‐
1458 nex.bup-split-options, annex.gnupg-options, annex.gnupg-de‐
1459 crypt-options
1460
1461 Default options to use if a remote does not have more specific
1462 options as described above.
1463
1464 remote.<name>.annex-rsyncurl
1465 Used by rsync special remotes, this configures the location of
1466 the rsync repository to use. Normally this is automatically set
1467 up by git annex initremote, but you can change it if needed.
1468
1469 remote.<name>.annex-buprepo
1470 Used by bup special remotes, this configures the location of the
1471 bup repository to use. Normally this is automatically set up by
1472 git annex initremote, but you can change it if needed.
1473
1474 remote.<name>.annex-borgrepo
1475 Used by borg special remotes, this configures the location of
1476 the borg repository to use. Normally this is automatically set
1477 up by git annex initremote, but you can change it if needed.
1478
1479 remote.<name>.annex-ddarrepo
1480 Used by ddar special remotes, this configures the location of
1481 the ddar repository to use. Normally this is automatically set
1482 up by git annex initremote, but you can change it if needed.
1483
1484 remote.<name>.annex-directory
1485 Used by directory special remotes, this configures the location
1486 of the directory where annexed files are stored for this remote.
1487 Normally this is automatically set up by git annex initremote,
1488 but you can change it if needed.
1489
1490 remote.<name>.annex-adb
1491 Used to identify remotes on Android devices accessed via adb.
1492 Normally this is automatically set up by git annex initremote.
1493
1494 remote.<name>.annex-androiddirectory
1495 Used by adb special remotes, this is the directory on the An‐
1496 droid device where files are stored for this remote. Normally
1497 this is automatically set up by git annex initremote, but you
1498 can change it if needed.
1499
1500 remote.<name>.annex-androidserial
1501 Used by adb special remotes, this is the serial number of the
1502 Android device used by the remote. Normally this is automati‐
1503 cally set up by git annex initremote, but you can change it if
1504 needed, eg when upgrading to a new Android device.
1505
1506 remote.<name>.annex-s3
1507 Used to identify Amazon S3 special remotes. Normally this is
1508 automatically set up by git annex initremote.
1509
1510 remote.<name>.annex-glacier
1511 Used to identify Amazon Glacier special remotes. Normally this
1512 is automatically set up by git annex initremote.
1513
1514 remote.<name>.annex-web
1515 Used to identify web special remotes. Normally this is automat‐
1516 ically set up by git annex initremote.
1517
1518 remote.<name>.annex-webdav
1519 Used to identify webdav special remotes. Normally this is auto‐
1520 matically set up by git annex initremote.
1521
1522 remote.<name>.annex-tahoe
1523 Used to identify tahoe special remotes. Points to the configu‐
1524 ration directory for tahoe.
1525
1526 remote.<name>.annex-gcrypt
1527 Used to identify gcrypt special remotes. Normally this is auto‐
1528 matically set up by git annex initremote.
1529
1530 It is set to "true" if this is a gcrypt remote. If the gcrypt
1531 remote is accessible over ssh and has git-annex-shell available
1532 to manage it, it's set to "shell".
1533
1534 remote.<name>.annex-git-lfs
1535 Used to identify git-lfs special remotes. Normally this is au‐
1536 tomatically set up by git annex initremote.
1537
1538 It is set to "true" if this is a git-lfs remote.
1539
1540 remote.<name>.annex-httpalso
1541 Used to identify httpalso special remotes. Normally this is au‐
1542 tomatically set up by git annex initremote.
1543
1544 remote.<name>.annex-externaltype
1545 Used external special remotes to record the type of the remote.
1546
1547 Eg, if this is set to "foo", git-annex will run a "git-annex-re‐
1548 mote-foo" program to communicate with the external special re‐
1549 mote.
1550
1551 If this is set to "readonly", then git-annex will not run any
1552 external special remote program, but will try to access things
1553 stored in the remote using http. That only works for some exter‐
1554 nal special remotes, so consult the documentation of the one you
1555 are using.
1556
1557 remote.<name>.annex-hooktype
1558 Used by hook special remotes to record the type of the remote.
1559
1560 annex.web-options
1561 Options to pass to curl when git-annex uses it to download urls
1562 (rather than the default built-in url downloader).
1563
1564 For example, to force IPv4 only, set it to "-4".
1565
1566 Setting this option makes git-annex use curl, but only when an‐
1567 nex.security.allowed-ip-addresses is configured in a specific
1568 way. See its documentation.
1569
1570 Setting this option prevents git-annex from using git-credential
1571 for prompting for http passwords. Instead, you can include
1572 "--netrc" to make curl use your ~/.netrc file and record the
1573 passwords there.
1574
1575 annex.youtube-dl-options
1576 Options to pass to youtube-dl (or yt-dlp) when using it to find
1577 the url to download for a video.
1578
1579 Some options may break git-annex's integration with youtube-dl.
1580 For example, the --output option could cause it to store files
1581 somewhere git-annex won't find them. Avoid setting here or in
1582 the youtube-dl config file any options that cause youtube-dl to
1583 download more than one file, or to store the file anywhere other
1584 than the current working directory.
1585
1586 annex.youtube-dl-command
1587 Command to run for youtube-dl. Default is to use "youtube-dl" or
1588 if that is not available in the PATH, to use "yt-dlp".
1589
1590 annex.aria-torrent-options
1591 Options to pass to aria2c when using it to download a torrent.
1592
1593 annex.http-headers
1594 HTTP headers to send when downloading from the web. Multiple
1595 lines of this option can be set, one per header.
1596
1597 annex.http-headers-command
1598 If set, the command is run and each line of its output is used
1599 as a HTTP header. This overrides annex.http-headers.
1600
1601 annex.security.allowed-url-schemes
1602 List of URL schemes that git-annex is allowed to download con‐
1603 tent from. The default is "http https ftp".
1604
1605 Think very carefully before changing this; there are security
1606 implications. For example, if it's changed to allow "file" URLs,
1607 then anyone who can get a commit into your git-annex repository
1608 could git-annex addurl a pointer to a private file located out‐
1609 side that repository, possibly causing it to be copied into your
1610 repository and transferred on to other remotes, exposing its
1611 content.
1612
1613 Any url schemes supported by curl can be listed here, but you
1614 will also need to configure annex.allowed-ip-addresses to allow
1615 using curl.
1616
1617 Some special remotes support their own domain-specific URL
1618 schemes; those are not affected by this configuration setting.
1619
1620 annex.security.allowed-ip-addresses
1621 By default, git-annex only makes connections to public IP ad‐
1622 dresses; it will refuse to use HTTP and other servers on local‐
1623 host or on a private network.
1624
1625 This setting can override that behavior, allowing access to par‐
1626 ticular IP addresses that would normally be blocked. For example
1627 "127.0.0.1 ::1" allows access to localhost (both IPV4 and IPV6).
1628 To allow access to all IP addresses, use "all"
1629
1630 Think very carefully before changing this; there are security
1631 implications. Anyone who can get a commit into your git-annex
1632 repository could git annex addurl an url on a private server,
1633 possibly causing it to be downloaded into your repository and
1634 transferred to other remotes, exposing its content.
1635
1636 Note that, since the interfaces of curl and youtube-dl do not
1637 allow these IP address restrictions to be enforced, curl and
1638 youtube-dl will never be used unless annex.security.al‐
1639 lowed-ip-addresses=all.
1640
1641 To allow accessing local or private IP addresses on only spe‐
1642 cific ports, use the syntax "[addr]:port". For example,
1643 "[127.0.0.1]:80 [127.0.0.1]:443 [::1]:80 [::1]:443" allows lo‐
1644 calhost on the http ports only.
1645
1646 annex.security.allowed-http-addresses
1647 Old name for annex.security.allowed-ip-addresses. If set, this
1648 is treated the same as having annex.security.allowed-ip-ad‐
1649 dresses set.
1650
1651 annex.security.allow-unverified-downloads
1652 For security reasons, git-annex refuses to download content from
1653 most special remotes when it cannot check a hash to verify that
1654 the correct content was downloaded. This particularly impacts
1655 downloading the content of URL or WORM keys, which lack hashes.
1656
1657 The best way to avoid problems due to this is to migrate files
1658 away from such keys, before their content reaches a special re‐
1659 mote. See git-annex-migrate(1).
1660
1661 When the content is only available from a special remote, you
1662 can use this configuration to force git-annex to download it.
1663 But you do so at your own risk, and it's very important you read
1664 and understand the information below first!
1665
1666 Downloading unverified content from encrypted special remotes is
1667 prevented, because the special remote could send some other en‐
1668 crypted content than what you expect, causing git-annex to de‐
1669 crypt data that you never checked into git-annex, and risking
1670 exposing the decrypted data to any non-encrypted remotes you
1671 send content to.
1672
1673 Downloading unverified content from (non-encrypted) external
1674 special remotes is prevented, because they could follow http
1675 redirects to web servers on localhost or on a private network,
1676 or in some cases to a file:/// url.
1677
1678 If you decide to bypass this security check, the best thing to
1679 do is to only set it temporarily while running the command that
1680 gets the file. The value to set the config to is "ACKTHPPT".
1681 For example:
1682
1683 git -c annex.security.allow-unverified-downloads=ACKTHPPT annex
1684 get myfile
1685
1686 It would be a good idea to check that it downloaded the file you
1687 expected, too.
1688
1689 remote.<name>.annex-security-allow-unverified-downloads
1690 Per-remote configuration of annex.security.allow-unveri‐
1691 fied-downloads.
1692
1694 annex.delayadd
1695
1696 Makes the watch and assistant commands delay for the specified
1697 number of seconds before adding a newly created file to the an‐
1698 nex. Normally this is not needed, because they already wait for
1699 all writers of the file to close it.
1700
1701 Note that this only delays adding files created while the daemon
1702 is running. Changes made when it is not running will be added
1703 immediately the next time it is started up.
1704
1705 annex.expireunused
1706 Controls what the assistant does about unused file contents that
1707 are stored in the repository.
1708
1709 The default is false, which causes all old and unused file con‐
1710 tents to be retained, unless the assistant is able to move them
1711 to some other repository (such as a backup repository).
1712
1713 Can be set to a time specification, like "7d" or "1m", and then
1714 file contents that have been known to be unused for a week or a
1715 month will be deleted.
1716
1717 annex.fscknudge
1718 When set to false, prevents the webapp from reminding you when
1719 using repositories that lack consistency checks.
1720
1721 annex.autoupgrade
1722 When set to ask (the default), the webapp will check for new
1723 versions and prompt if they should be upgraded to. When set to
1724 true, automatically upgrades without prompting (on some sup‐
1725 ported platforms). When set to false, disables any upgrade
1726 checking.
1727
1728 Note that upgrade checking is only done when git-annex is in‐
1729 stalled from one of the prebuilt images from its website. This
1730 does not bypass e.g., a Linux distribution's own upgrade han‐
1731 dling code.
1732
1733 This setting also controls whether to restart the git-annex as‐
1734 sistant when the git-annex binary is detected to have changed.
1735 That is useful no matter how you installed git-annex.
1736
1737 annex.autocommit
1738 Set to false to prevent the git-annex assistant and git-annex
1739 sync from automatically committing changes to files in the
1740 repository.
1741
1742 To configure the behavior in all clones of the repository, this
1743 can be set in git-annex-config(1).
1744
1745 annex.startupscan
1746 Set to false to prevent the git-annex assistant from scanning
1747 the repository for new and changed files on startup. This will
1748 prevent it from noticing changes that were made while it was not
1749 running, but can be a useful performance tweak for a large
1750 repository.
1751
1752 annex.listen
1753 Configures which address the webapp listens on. The default is
1754 localhost. Can be either an IP address, or a hostname that re‐
1755 solves to the desired address.
1756
1758 The key-value backend used when adding a new file to the annex can be
1759 configured on a per-file-type basis via .gitattributes files. In the
1760 file, the annex.backend attribute can be set to the name of the backend
1761 to use. (See git-annex-backends(1) for information about available
1762 backends.) For example, this here's how to use the WORM backend by de‐
1763 fault, but the SHA256E backend for ogg files:
1764
1765 * annex.backend=WORM
1766 *.ogg annex.backend=SHA256E
1767
1768 There is a annex.largefiles attribute, which is used to configure which
1769 files are large enough to be added to the annex. Since attributes can‐
1770 not contain spaces, it is difficult to use for more complex an‐
1771 nex.largefiles settings. Setting annex.largefiles in git-annex-con‐
1772 fig(1) is an easier way to configure it across all clones of the repos‐
1773 itory. See git-annex-matching-expression(1) for details on the syntax.
1774
1775 The numcopies and mincopies settings can also be configured on a
1776 per-file-type basis via the annex.numcopies and annex.mincopies at‐
1777 tributes in .gitattributes files. This overrides other settings. For
1778 example, this makes two copies be needed for wav files and 3 copies for
1779 flac files:
1780
1781 *.wav annex.numcopies=2
1782 *.flac annex.numcopies=3
1783
1784 These settings are honored by git-annex whenever it's operating on a
1785 matching file. However, when using --all, --unused, or --key to specify
1786 keys to operate on, git-annex is operating on keys and not files, so
1787 will not honor the settings from .gitattributes. For this reason, the
1788 git annex numcopies and git annex mincopies commands are useful to con‐
1789 figure a global default.
1790
1791 Also note that when using views, only the toplevel .gitattributes file
1792 is preserved in the view, so other settings in other files won't have
1793 any effect.
1794
1796 git-annex itself will exit 0 on success and 1 on failure, unless the
1797 --size-limit or --time-limit option is hit, in which case it exits 101.
1798
1799 A few git-annex subcommands have other exit statuses used to indicate
1800 specific problems, which are documented on their individual man pages.
1801
1803 These environment variables are used by git-annex when set:
1804
1805 GIT_WORK_TREE, GIT_DIR
1806 Handled the same as they are by git, see git(1)
1807
1808 GIT_SSH, GIT_SSH_COMMAND
1809 Handled similarly to the same as described in git(1). The one
1810 difference is that git-annex will sometimes pass an additional
1811 "-n" parameter to these, as the first parameter, to prevent ssh
1812 from reading from stdin. Since that can break existing uses of
1813 these environment variables that don't expect the extra parame‐
1814 ter, you will need to set GIT_ANNEX_USE_GIT_SSH=1 to make git-
1815 annex support these.
1816
1817 Note that setting either of these environment variables prevents
1818 git-annex from automatically enabling ssh connection caching
1819 (see annex.sshcaching), so it will slow down some operations
1820 with remotes over ssh. It's up to you to enable ssh connection
1821 caching if you need it; see ssh's documentation.
1822
1823 Also, annex.ssh-options and remote.<name>.annex-ssh-options
1824 won't have any effect when these envionment variables are set.
1825
1826 Usually it's better to configure any desired options through
1827 your ~/.ssh/config file, or by setting annex.ssh-options.
1828
1829 GIT_ANNEX_VECTOR_CLOCK
1830 Normally git-annex timestamps lines in the log files committed
1831 to the git-annex branch. Setting this environment variable to a
1832 number will make git-annex use that (or a larger number) rather
1833 than the current number of seconds since the UNIX epoch. Note
1834 that decimal seconds are supported.
1835
1836 This is only provided for advanced users who either have a bet‐
1837 ter way to tell which commit is current than the local clock, or
1838 who need to avoid embedding timestamps for policy reasons.
1839
1840 Some special remotes use additional environment variables
1841 for authentication etc. For example, AWS_ACCESS_KEY_ID and
1842 GIT_ANNEX_P2P_AUTHTOKEN. See special remote documentation.
1843
1845 These files are used by git-annex:
1846
1847 .git/annex/objects/ in your git repository contains the annexed file
1848 contents that are currently available. Annexed files in your git repos‐
1849 itory symlink to that content.
1850
1851 .git/annex/ in your git repository contains other run-time information
1852 used by git-annex.
1853
1854 ~/.config/git-annex/autostart is a list of git repositories to start
1855 the git-annex assistant in.
1856
1857 .git/hooks/pre-commit-annex in your git repository will be run whenever
1858 a commit is made to the HEAD branch, either by git commit, git-annex
1859 sync, or the git-annex assistant.
1860
1861 .git/hooks/post-update-annex in your git repository will be run when‐
1862 ever the git-annex branch is updated. You can make this hook run git
1863 update-server-info when publishing a git-annex repository by http.
1864
1866 More git-annex documentation is available on its web site,
1867 <https://git-annex.branchable.com/>
1868
1869 If git-annex is installed from a package, a copy of its documentation
1870 should be included, in, for example, /usr/share/doc/git-annex/.
1871
1873 Joey Hess <id@joeyh.name>
1874
1875 <https://git-annex.branchable.com/>
1876
1877 git-annex(1)