Commit graph

17153 commits

Author SHA1 Message Date
Joey Hess
9418685b5d devblog 2014-01-22 23:11:20 -04:00
Joey Hess
489972c035 allow annex.expireunused to be set to false, as well as to a duration 2014-01-22 23:10:51 -04:00
Joey Hess
ee5bb374bb Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-22 22:54:19 -04:00
Joey Hess
3da0064657 assistant unused file handling
Make sanity checker run git annex unused daily, and queue up transfers
of unused files to any remotes that will have them. The transfer retrying
code works for us here, so eg when a backup disk remote is plugged in,
any transfers to it are done. Once the unused files reach a remote,
they'll be removed locally as unwanted.

If the setup does not cause unused files to go to a remote, they'll pile
up, and the sanity checker detects this using some heuristics that are
pretty good -- 1000 unused files, or 10% of disk used by unused files,
or more disk wasted by unused files than is left free. Once it detects
this, it pops up an alert in the webapp, with a button to take action.

TODO: Webapp UI to configure this, and also the ability to launch an
immediate cleanup of all unused files.

This commit was sponsored by Simon Michael.
2014-01-22 22:53:18 -04:00
Joey Hess
85aae97b63 add getDiskSize
Couldn't find anything that exposed this for Windows.
2014-01-22 22:19:52 -04:00
https://launchpad.net/~maestro-alubia
3f7d5d1e50 Added a comment 2014-01-22 21:20:31 +00:00
Joey Hess
ed7c61914c assistant: Run the periodic git gc in batch mode. 2014-01-22 17:11:41 -04:00
Joey Hess
82d6cc69e9 Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-22 16:40:44 -04:00
Joey Hess
4b55afe9e9 add "unused" preferred content expression
With a really nice optimisation that keeps it from having any overhead
in normal operation!

This commit was sponsored by Ulises Vitulli.
2014-01-22 16:35:32 -04:00
http://joeyh.name/
2fc6e963cb Added a comment 2014-01-22 20:25:52 +00:00
Joey Hess
02896ee15d preferred content stability analysis 2014-01-22 15:55:44 -04:00
Joey Hess
ae3cd632bd add timestamps to unused log files
This will be used in expiring old unused objects. The timestamp is when it
was first noticed it was unused.

Backwards compatability: It supports reading old format unused log files.
The old version of git-annex will ignore lines in log files written by the
new version, so the worst interop problem would be git annex dropunused not
knowing some numbers that git-annex unused reported.
2014-01-22 15:33:02 -04:00
https://launchpad.net/~maestro-alubia
3c27064ece Added a comment: Sources? 2014-01-22 19:00:21 +00:00
Joey Hess
5f6ebfcd07 Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-22 14:37:32 -04:00
Joey Hess
05ead99cc2 promote forum post to feature request; add design 2014-01-22 14:35:38 -04:00
http://olivier.mehani.name/
4207564827 Added a comment 2014-01-22 13:08:21 +00:00
Joey Hess
e14e74b467 devblog 2014-01-21 19:21:48 -04:00
Joey Hess
f2713a3bb9 benchmarked numcopies .gitattributes in preferred content
Checking .gitattributes adds a full minute to a git annex find looking for
files that don't have enough copies. 2:25 increasts to 3:27. I feel this is
too much of a slowdown to justify making it the default. So, exposed two
versions of the preferred content expression, a slow one and a fast but
approximate one.

I'm using the approximate one in the default preferred content expressions
to avoid slowing down the assistant.
2014-01-21 18:49:25 -04:00
Joey Hess
f7cdc40f7b reorg 2014-01-21 18:08:56 -04:00
Joey Hess
0ef282a116 numcopies cleanup, part 2
This includes several bug fixes.
2014-01-21 17:25:39 -04:00
Joey Hess
b40df4f0d0 reorganize numcopies code (no behavior changes)
Move stuff into Logs.NumCopies. Add a NumCopies newtype.

Better names for various serialization classes that are specific to one
thing or another.
2014-01-21 16:08:59 -04:00
Joey Hess
e38a21a768 tests should now all run independently, without needing any prior tests to have run
Should be ready now for tasty-rerun.
2014-01-21 14:26:13 -04:00
Joey Hess
4a4e2f9a6c use tasty resources 2014-01-21 14:04:50 -04:00
Joey Hess
78ead70ea4 repair: Check git version at run time. 2014-01-21 13:22:48 -04:00
Joey Hess
b213df2038 Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-21 13:04:15 -04:00
https://www.google.com/accounts/o8/id?id=AItOawnE6kFAbud1LWrQuyX76yMYnUjHt9tR-A8
d25a87bc7c Added a comment: Chroots 2014-01-21 13:52:30 +00:00
Joey Hess
d1bf61464f expose tasty test suite's option parser 2014-01-21 00:08:43 -04:00
http://joeyh.name/
f2e96be0ac Added a comment 2014-01-21 02:23:01 +00:00
https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U
72b0ca6e99 Added a comment 2014-01-21 00:20:36 +00:00
Richard Hartmann
48cdbf3bfd Merge branch 'master' of git://git-annex.branchable.com 2014-01-21 00:58:15 +01:00
Richard Hartmann
5c33242dd0 Wording 2014-01-21 00:58:04 +01:00
https://www.google.com/accounts/o8/id?id=AItOawkLdR1fuu5aEz3s9VKTBKVMize_SmeNRJM
f11ccc16a6 Added a comment: Past the SHA issues 2014-01-20 23:14:53 +00:00
Joey Hess
df66e15555 devblog 2014-01-20 17:47:17 -04:00
Joey Hess
3159da2693 Add and use numcopiesneeded preferred content expression.
* Add numcopiesneeded preferred content expression.
* Client, transfer, incremental backup, and archive repositories
  now want to get content that does not yet have enough copies.

This means the asssistant will make copies of files that don't yet
meet the configured numcopies, even to places that would not normally want
the file.

For example, if numcopies is 4, and there are 2 client repos and
2 transfer repos, and 2 removable backup drives, the file will be sent
to both transfer repos in order to make 4 copies. Once a removable drive
get a copy of the file, it will be dropped from one transfer repo or the
other (but not both).

Another example, numcopies is 3 and there is a client that has a backup
removable drive and two small archive repos. Normally once one of the small
archives has a file, it will not be put into the other one. But, to satisfy
numcopies, the assistant will duplicate it into the other small archive
too, if the backup repo is not available to receive the file.

I notice that these examples are fairly unlikely setups .. the old behavior
was not too bad, but it's nice to finally have it really correct.

.. Almost. I have skipped checking the annex.numcopies .gitattributes
out of fear it will be too slow.

This commit was sponsored by Florian Schlegel.
2014-01-20 17:35:29 -04:00
Joey Hess
5ddbd24a1c stability analysis 2014-01-20 17:11:02 -04:00
Joey Hess
b7828ec22e Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-20 16:48:31 -04:00
Joey Hess
d66535f065 global numcopies setting
* numcopies: New command, sets global numcopies value that is seen by all
  clones of a repository.
* The annex.numcopies git config setting is deprecated. Once the numcopies
  command is used to set the global number of copies, any annex.numcopies
  git configs will be ignored.
* assistant: Make the prefs page set the global numcopies.

This global numcopies setting is needed to let preferred content
expressions operate on numcopies.

It's also convenient, because typically if you want git-annex to preserve N
copies of files in a repo, you want it to do that no matter which repo it's
running in. Making it global avoids needing to warn the user about gotchas
involving inconsistent annex.numcopies settings.
(See changes to doc/numcopies.mdwn.)

Added a new variety of git-annex branch log file, that holds only 1 value.
Will probably be useful for other stuff later.

This commit was sponsored by Nicolas Pouillard.
2014-01-20 16:47:56 -04:00
https://id.koumbit.net/anarcat
d979f2fbdf a separate sync daemon has many advantages indeed 2014-01-20 18:41:59 +00:00
Joey Hess
ecd4c35d7e promote stm dependency, since Remote.External needs it 2014-01-20 14:32:06 -04:00
Joey Hess
514a4efb7a Merge branch 'master' of ssh://git-annex.branchable.com 2014-01-20 14:30:39 -04:00
Joey Hess
e7f8c1911a design for preferred content numcopies check 2014-01-20 14:28:33 -04:00
Joey Hess
5130bfdff3 export cleanup 2014-01-20 13:37:13 -04:00
Joey Hess
73c420ffcf much better command action handling for sync --content 2014-01-20 13:31:03 -04:00
Joey Hess
cfa6865056 wontfix 2014-01-20 12:36:19 -04:00
http://joeyh.name/
dde13f775a Added a comment 2014-01-20 16:33:28 +00:00
http://joeyh.name/
4a0fbbd472 Added a comment 2014-01-20 16:28:50 +00:00
https://www.google.com/accounts/o8/id?id=AItOawm_YXzEdPHzbSGVwtmTR7g1BqDtTnIBB5s
1ba8ea0c8a Added a comment: Chunk it 2014-01-20 16:22:21 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkqUg2sSO_pOdi6M7GU86Hsyv5-r33baLs
92071e2170 2014-01-20 10:42:06 +00:00
Joey Hess
34c8af74ba fix inversion of control in CommandSeek (no behavior changes)
I've been disliking how the command seek actions were written for some
time, with their inversion of control and ugly workarounds.

The last straw to fix it was sync --content, which didn't fit the
Annex [CommandStart] interface well at all. I have not yet made it take
advantage of the changed interface though.

The crucial change, and probably why I didn't do it this way from the
beginning, is to make each CommandStart action be run with exceptions
caught, and if it fails, increment a failure counter in annex state.
So I finally remove the very first code I wrote for git-annex, which
was before I had exception handling in the Annex monad, and so ran outside
that monad, passing state explicitly as it ran each CommandStart action.

This was a real slog from 1 to 5 am.

Test suite passes.

Memory usage is lower than before, sometimes by a couple of megabytes, and
remains constant, even when running in a large repo, and even when
repeatedly failing and incrementing the error counter. So no accidental
laziness space leaks.

Wall clock speed is identical, even in large repos.

This commit was sponsored by an anonymous bitcoiner.
2014-01-20 04:57:36 -04:00
Richard Hartmann
7845e09320 Fix misleading description 2014-01-20 01:13:41 +01:00