summaryrefslogtreecommitdiff
path: root/doc/walkthrough/automatically_managing_content.mdwn
blob: 0080ebcb5e6d8c738bf5ef1aef659b2317c7c0f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Once you have multiple repositories, and have perhaps configured numcopies,
any given file can have many more copies than is needed, or perhaps fewer
than you would like. How to manage this?

The whereis subcommand can be used to see how many copies of a file are known,
but then you have to decide what to get or drop. In this example, there
are perhaps not enough copies of the first file, and too many of the second
file.

	# cd /media/usbdrive
	# git annex whereis
	whereis my_cool_big_file (1 copy)
		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
	whereis other_file (3 copies)
		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
		62b39bbe-4149-11e0-af01-bb89245a1e61  -- here (usb drive)
		7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive

What would be handy is some automated versions of get and drop, that only
gets a file if there are not yet enough copies of it, or only drops a file
if there are too many copies. Well, these exist, just use the --auto option.

	# git annex get --auto --numcopies=2
	get my_cool_big_file (from laptop...) ok
	# git annex drop --auto --numcopies=2
	drop other_file ok

With two quick commands, git-annex was able to decide for you how to
work toward having two copies of your files.

	# git annex whereis
	whereis my_cool_big_file (2 copies)
		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
		62b39bbe-4149-11e0-af01-bb89245a1e61  -- here (usb drive)
	whereis other_file (2 copies)
		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
		7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive

The --auto option can also be used with the copy command,
again this lets git-annex decide whether to actually copy content.

The above shows how to use --auto to manage content based on the number
of copies. It's also possible to configure, on a per-repository basis,
which content is desired. Then --auto also takes that into account
see [[preferred_content]] for details.