summaryrefslogtreecommitdiff
path: root/doc/forum/new_microfeatures.mdwn
blob: 683cc69b8bdb1a9633fea719b636dcecd826fdf8 (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
46
47
48
49
50
51
52
53
I'm soliciting ideas for new small features that let git-annex do things that currently have to be done manually or whatever.

Here are a few I've been considering:

---

* --numcopies would be a useful command line switch.
  > Update: Added. Also allows for things like `git annex drop --numcopies=2` when in a repo that normally needs 3 copies, if you need
  > to urgently free up space.
* A way to make `drop` and other commands temporarily trust a given remote, or possibly all remotes. 

Combined, this would allow `git annex drop --numcopies=2 --trust=repoa --trust=repob` to remove files that have been replicated out to the other 2 repositories, which could be offline. (Slightly unsafe, but in this case the files are podcasts so not really.)

> Update: done --[[Joey]] 

---

[[wishlist:_git-annex_replicate]] suggests some way for git-annex to have the smarts to copy content around on its own to ensure numcopies is satisfied. I'd be satisfied with a `git annex copy --to foo --if-needed-by-numcopies`

  > Contrary to the "basic" solution, I would love to have a git annex distribute which is smart enough to simply distribute all data according to certain rules. My ideal, personal use case during the next holidays where I will have two external disks, several SD cards with 32 GB each and a local disk with 20 GB (yes....) would be:

    cd ~/photos.annex # this repository does not have any objects!
    git annex inject --bare /path/to/SD/card  # this adds softlinks, but does **not** add anything to the index. it would calculate checksums (if enabled) and have to add a temporary location list, though
    git annex distribute # this checks the config. it would see that my two external disks have a low cost whereas the two remotes have a higher cost.
     # check numcopies. it's 3
     # copy to external disk one (cost x)
     # copy to external disk two (cost x)
     # copy to remote one (cost x * 2)
     # remove file from temporary tracking list
    git annex fsck # everything ok. yay!

Come to think of it, the inject --bare thing is probably not a microfeature. Should I add a new wishlist item for that? -- RichiH

> I've thought about such things before; does not seem really micro and I'm unsure how well it would work, but it would be worth a [[todo]]. --[[Joey]]

---

Along similar lines, it might be nice to have a mode where git-annex tries to fill up a disk up to the `annex.diskreserve` with files, preferring files that have relatively few copies. Then as storage prices continue to fall, new large drives could just be plopped in and git-annex used to fill it up in a way that improves the overall redundancy without needing to manually pick and choose.

---

If a remote could send on received files to another remote, I could use my own local bandwith efficiently while still having my git-annex repos replicate data. -- RichiH

---

Really micro:

    % grep annex-push .git/config
        annex-push = !git pull && git annex add . && git annex copy . --to origin --fast --quiet && git commit -a -m "$HOST $(date +%F--%H-%M-%S-%Z)" && git push
    %

-- RichiH
--[[Joey]]