devblog
This commit is contained in:
parent
ef2d3a7999
commit
e4f2ec681e
1 changed files with 36 additions and 0 deletions
36
doc/devblog/day_60__damage_driven_development.mdwn
Normal file
36
doc/devblog/day_60__damage_driven_development.mdwn
Normal file
|
@ -0,0 +1,36 @@
|
|||
Wrote some evil code you don't want to run today. Git.Destroyer randomly
|
||||
generates Damage, and applies it to a git repository, in a way that is
|
||||
reproducible -- applying the same Damage to clones of the same git repo
|
||||
will always yeild the same result.
|
||||
|
||||
This let me build a test harness for git-repair, which repeatedly clones,
|
||||
damages, and repairs a repository. And when it fails, I can just ask it to
|
||||
retry after fixing the bug and it'll re-run every attempt it's logged.
|
||||
|
||||
This is already yeilding improvements to the git-repair code.
|
||||
The first randomly constructed Damage that it failed to recover
|
||||
turned out to be a truncated index file that hid some other
|
||||
corrupted object files from being repaired.
|
||||
|
||||
[Damage Empty (FileSelector 1),
|
||||
Damage Empty (FileSelector 2),
|
||||
Damage Empty (FileSelector 3),
|
||||
Damage Reverse (FileSelector 3),
|
||||
Damage (ScrambleFileMode 3) (FileSelector 5),
|
||||
Damage Delete (FileSelector 9),
|
||||
Damage (PrependGarbage "¥SOH¥STX¥ENQ¥f¥a¥ACK¥b¥DLE¥n") (FileSelector 9),
|
||||
Damage Empty (FileSelector 12),
|
||||
Damage (CorruptByte 11 25) (FileSelector 6),
|
||||
Damage Empty (FileSelector 5),
|
||||
Damage (ScrambleFileMode 4294967281) (FileSelector 14)
|
||||
]
|
||||
|
||||
I need to improve the ranges of files that it damages -- currently QuickCheck
|
||||
seems to only be selecting one of the first 20 or so files. Also, it's quite
|
||||
common that it will damage `.git/config` so badly that git thinks it's not
|
||||
a git repository anymore. I am not sure if that is something `git-repair`
|
||||
should try to deal with.
|
||||
|
||||
---
|
||||
|
||||
Today's work was sponsored by the WikiMedia Foundation.
|
Loading…
Reference in a new issue