git-annex/Command
Joey Hess 2fd294d06f move --from, copy --from: 10 times faster scanning remote on local disk
Rather than go through the location log to see which files are present on
the remote, it simply looks at the disk contents directly.

I benchmarked this speeding up scanning 834 files, from an annex on my
phone's SSD, from 11.39 seconds to 1.31 seconds. (No files actually moved.)

Also benchmarked 8139 files, from an annex on spinning storage,
speeding up from 103.17 to 13.39 seconds.

Note that benchmarking with an encrypted annex on flash actually showed a
minor slowdown with this optimisation -- from 13.93 to 14.50 seconds. Seems
the overhead of doing the crypto needed to get the filenames to directly
check can be higher than the overhead of looking up data in the location
log. (Which says good things about how well the location log and git have
been optimised!) It *may* make sense to make encrypted local remotes not
have hasKeyCheap set; further benchmarking is called for.
2012-02-26 14:59:48 -04:00
..
Add.hs rework git check-attr interface 2012-02-13 23:52:21 -04:00
AddUrl.hs more robustness fixes 2012-02-18 12:08:02 -04:00
Commit.hs add git-annex-shell commit 2012-02-25 16:47:28 -04:00
ConfigList.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Copy.hs rework git check-attr interface 2012-02-13 23:52:21 -04:00
Dead.hs add 2011-12-02 19:22:43 -04:00
Describe.hs lint 2011-11-11 01:52:58 -04:00
Drop.hs hlint 2012-02-16 00:44:51 -04:00
DropKey.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
DropUnused.hs tweak 2012-01-06 10:57:57 -04:00
Find.hs hlint 2012-02-16 00:44:51 -04:00
Fix.hs type alias cleanup 2011-12-31 04:11:58 -04:00
FromKey.hs lint 2011-11-11 01:52:58 -04:00
Fsck.hs rework git check-attr interface 2012-02-13 23:52:21 -04:00
Get.hs hlint 2012-02-16 00:44:51 -04:00
InAnnex.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Init.hs init: When run in an already initalized repository, and without a description specified, don't delete the old description. 2011-11-12 15:42:52 -04:00
InitRemote.hs type alias cleanup 2011-12-31 04:11:58 -04:00
Lock.hs rework git check-attr interface 2012-02-13 23:52:21 -04:00
Log.hs hlint 2012-02-16 00:44:51 -04:00
Map.hs reorg 2012-01-10 15:29:10 -04:00
Merge.hs improve alwayscommit=false mode 2012-02-25 16:18:55 -04:00
Migrate.hs reorg 2012-02-17 00:19:47 -04:00
Move.hs move --from, copy --from: 10 times faster scanning remote on local disk 2012-02-26 14:59:48 -04:00
PreCommit.hs rework git check-attr interface 2012-02-13 23:52:21 -04:00
RecvKey.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Reinject.hs hlint 2012-02-16 00:44:51 -04:00
ReKey.hs variable name 2012-02-17 00:21:35 -04:00
Semitrust.hs clean up check selection code 2011-10-29 15:19:05 -04:00
SendKey.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Status.hs whereis: Prints the urls of files that the web special remote knows about. 2012-02-14 03:49:48 -04:00
Sync.hs improve alwayscommit=false mode 2012-02-25 16:18:55 -04:00
Trust.hs clean up check selection code 2011-10-29 15:19:05 -04:00
Unannex.hs type alias cleanup 2011-12-31 04:11:58 -04:00
Uninit.hs support all filename encodings with ghc 7.4 2012-02-03 16:23:20 -04:00
Unlock.hs type alias cleanup 2011-12-31 04:11:58 -04:00
Untrust.hs clean up check selection code 2011-10-29 15:19:05 -04:00
Unused.hs hlint 2012-02-16 00:44:51 -04:00
Upgrade.hs clean up check selection code 2011-10-29 15:19:05 -04:00
Version.hs set oneshot mode on a per-command basis 2012-02-14 12:40:40 -04:00
Whereis.hs hlint 2012-02-16 00:44:51 -04:00