git-annex/Git
Joey Hess 34530e59d9
Avoid using a lot of memory when large objects are present in the git repository
.. and have to be checked to see if they are a pointed to an annexed file.

Cases where such memory use could occur included, but were not limited to:
  - git commit -a of a large unlocked file (in v5 mode)
  - git-annex adjust when a large file was checked into git directly
Generally, any use of catKey was a potential problem.

Fix by using git cat-file --batch-check to check size before catting.
This adds another git batch process, which is included in the CatFileHandle
for simplicity.

There could be performance impact, anywhere catKey is used. Particularly
likely to affect adjusted branch generation speed, and operations on
unlocked files in v6 mode. Hopefully since the --batch-check and
--batch read the same data, disk buffering will avoid most overhead.
Leaving only the overhead of talking to the process over the pipe and
whatever computation --batch-check needs to do.

This commit was sponsored by Bruno BEAUFILS on Patreon.
2016-10-05 15:24:13 -04:00
..
Command update my email address and homepage url 2015-01-21 12:50:09 -04:00
Remote desc 2015-04-19 08:18:17 -04:00
AutoCorrect.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Branch.hs Pass -S to git commit-tree when commit.gpgsign is set and when making a non-automatic commit, in order to preserve current behavior when used with git 1.9, which has stopped doing this itself. 2016-06-02 15:07:20 -04:00
BuildVersion.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
CatFile.hs Avoid using a lot of memory when large objects are present in the git repository 2016-10-05 15:24:13 -04:00
CheckAttr.hs fix handling of unspecified attributes (particularly for annex.largefiles) 2016-02-05 18:41:23 -04:00
CheckIgnore.hs work around git check-ignore --batch bad exit status bug, and bring back import -J 2015-11-06 15:39:51 -04:00
Command.hs avoid withWorkTreeRelated affecting annex symlink calculation 2016-04-08 14:24:00 -04:00
Config.hs Submodules are now supported by git-annex! 2015-03-02 16:43:44 -04:00
Construct.hs avoid withWorkTreeRelated affecting annex symlink calculation 2016-04-08 14:24:00 -04:00
CurrentRepo.hs avoid unncessary IO 2015-02-12 15:33:44 -04:00
DiffTree.hs fix warning 2016-03-11 14:33:38 -04:00
DiffTreeItem.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Env.hs Optimisations to git-annex branch query and setting, avoiding repeated copies of the environment. 2016-09-29 13:36:48 -04:00
FileMode.hs fix various build warnings, mostly on Windows 2015-10-13 13:24:44 -04:00
Filename.hs fix use of hifalutin terminology 2015-11-16 14:37:31 -04:00
FilePath.hs --branch, stage 2 2016-07-20 15:23:43 -04:00
Fsck.hs Assistant, repair: Filter out git fsck lines about duplicate file entries in tree objects. 2016-09-05 16:08:49 -04:00
GCrypt.hs New url for git-remote-gcrypt, now maintained by spwhitton. 2016-07-05 11:30:58 -04:00
HashObject.hs Windows: Avoid terminating git-annex branch lines with \r\n when union merging. 2016-05-27 15:22:52 -04:00
Hook.hs Windows: Handle shebang in external special remote program. 2016-09-05 12:09:23 -04:00
Index.hs git's handing of relative GIT_INDEX_FILE is more insane than I thought; always make absolute 2016-05-22 15:02:55 -04:00
LockFile.hs replicate git's message about an existing lock file 2016-03-03 13:06:39 -04:00
LsFiles.hs remove Params constructor from Utility.SafeCommand 2015-06-01 13:52:23 -04:00
LsTree.hs forgot to use sfile 2016-02-26 16:12:40 -04:00
Merge.hs --allow-unrelated-histories will be in git 2.9.0, not 2.8.2 2016-04-27 13:54:46 -04:00
Objects.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Queue.hs minor typo fixes throughout 2016-06-02 11:22:18 -04:00
Ref.hs fix bugs in handing of deep branches with sync and adjusted branches 2016-09-21 15:23:47 -04:00
RefLog.hs Only look at reflogs for relevant branches, not for git-annex branches 2015-07-07 17:36:30 -04:00
Remote.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Repair.hs improve data type 2016-01-01 15:56:24 -04:00
Sha.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
SharedRepository.hs Support git's undocumented core.sharedRepository=2 value, which is equivilant to "world". 2015-07-06 15:33:44 -04:00
Status.hs status: Show added but not yet committed files. 2015-09-22 17:32:28 -04:00
Tree.hs more windows path fixes 2016-05-04 12:42:05 -04:00
Types.hs avoid withWorkTreeRelated affecting annex symlink calculation 2016-04-08 14:24:00 -04:00
UnionMerge.hs Sped up git-annex merge by using git hash-object --batch. 2016-03-14 16:23:22 -04:00
UpdateIndex.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Url.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Version.hs more {-# OPTIONS_GHC -fno-warn-tabs #-} ... Forcing people who have what is merely a difference of opinion to you to do this is a bit of an asshole move. Just saying. 2015-05-10 16:38:49 -04:00