summaryrefslogtreecommitdiff
path: root/Git/Fsck.hs
Commit message (Collapse)AuthorAge
* Merge from git-annex.Joey Hess2015-04-29
|
* Merge from git-annex.Joey Hess2014-07-21
|
* merge from git-annexJoey Hess2014-03-12
|
* Improve memory usage when git fsck finds a great many broken objects.Joey Hess2014-03-10
| | | | | | | | | From 1.7 gb to 900 mb on 300 thousand unique reported shas. When shas are not unique, this streams much better than before, so won't buffer the full list before putting them into the Set and throwing away dups. And when fsck output includes ignorable lines, especially dangling object lines, they won't be buffered in memory at all.
* merge from git-annexJoey Hess2014-02-24
|
* Check git version at run time.Joey Hess2014-01-21
|
* Support old git versions from before git fsck --no-dangling was implemented.Joey Hess2014-01-13
|
* merge from git-annexJoey Hess2013-12-10
|
* merge from git-annexJoey Hess2013-12-01
| | | | | | Note that the batchCommand stuff is not used in git-repair, so configure does not need to check for nice, ionice, and nocache, nor are they dependend on.
* better data typeJoey Hess2013-11-30
|
* remove debug printJoey Hess2013-11-21
|
* clean upJoey Hess2013-11-21
|
* really fix findMissing (?)Joey Hess2013-11-21
| | | | | My hashing was ill-thought, git loose objects can't be easily checked that way. Use git show instead.
* improve findMissingJoey Hess2013-11-21
| | | | | | | | | | | | | | | | | | | git cat-file -p cannot be relied on to tell when an object is corrupt. If it fails, the fsck may not find all bad objects -- but as long as fsck exits nonzero, it will return a failing fsckresult, and so recovery will run. In recovery, the objects get unpacked. This allows the improved findMissing to find all corrupt loose objects when fsck is run again as part of the recovery. Removed the repack / prune-packed workaround that I added earlier to find corrupt loose objects that fsck wasn't finding. That was slow, and we want to keep all loose objects, so that findMissing will work. And, it's unncessary, now that findMissing is fixed. Also, fixed some places where unreadable files would crash recovery.
* stop using cat-file --batch for findMissingJoey Hess2013-11-20
| | | | | | | | | Some corrupt objects can cause it to say the object is several TB, which led to OOM. Added some fork overhead, but it shouldn't be too bad; this is only run against objects fsck outputs, and most of the time that is only corrupt objects, and objects that refer to them.
* fix cat-file stall bugJoey Hess2013-11-20
| | | | | | | Apparently some corruption to an object can cause cat-file to say it's N bytes long, but only output N-M bytes of data. This causes Git.CatFile to stall waiting for the rest. To fix, add a 1 minute timeout to the cat-file, which should be enough time to read any reasonable object.
* catch non-IO exception from cat-fileJoey Hess2013-11-20
| | | | | Aguably, I should make cat-file only throw IO exceptions, but currently it throws some errors too.
* fix reversion of bad fsck tryharder codeJoey Hess2013-11-20
|
* remove fsck tryharder codeJoey Hess2013-11-20
| | | | | | It turned out to be broken, and led to failures. 6d67245728bbbc07ad1eeaf5b3c49f64c6bbcd11 was a better fix for the problem that code tried to fix.
* fix a crashJoey Hess2013-11-20
|
* try to recover even if git fsck cannot be coaxed to tell us any bad objectsJoey Hess2013-11-20
| | | | | | | Sometimes git fsck outputs no shas even with --verbose, but fails, due to badly corrupt objects. The best thing to do in this situation is to try to pull and rsync from remotes, hoping that the bad objects will be overwritten.
* copied from git-annexJoey Hess2013-11-18