diff options
author | 2013-03-10 21:36:13 -0400 | |
---|---|---|
committer | 2013-03-10 22:10:26 -0400 | |
commit | 9d5b42222a10050fc733a49c427359f88e8be36c (patch) | |
tree | 4fa0b1d6cf4a38ba772557dc4277fbd887020e46 /doc/design/assistant/blog | |
parent | e107ddb4507d92303e14ebee3ccdec7662350031 (diff) |
assistant: generate better commits for renames
Diffstat (limited to 'doc/design/assistant/blog')
-rw-r--r-- | doc/design/assistant/blog/day_210__spring.mdwn | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/doc/design/assistant/blog/day_210__spring.mdwn b/doc/design/assistant/blog/day_210__spring.mdwn index 061110b08..ff34cfbfe 100644 --- a/doc/design/assistant/blog/day_210__spring.mdwn +++ b/doc/design/assistant/blog/day_210__spring.mdwn @@ -13,3 +13,17 @@ Fixed some problems around USB drives. One was a real jaw-dropping bug: "git annex drop --from usbdrive" when the drive was not connected still updated the location log to indicate it did not have the file anymore! (Thank goodness for fsck..) + +I've noticed that moving around files in direct mode repos is inneficient, +because the assistant re-checksums the "new" file. One way to avoid +that would be to have a lookup table from (inode, size, mtime) to +key, but I don't have one, and would like to avoid adding one. + +Instead, I have a cunning plan to deal with this heuristically. If the +assistant can notice a file was removed and another file added at the same +time, it can compare the (inode, size, mtime) to see if it's a rename, and +avoid the checksum overhead. + +The first step to getting there was to make the assistant better at +batching together delete+add events into a single rename commit. I'm happy +to say I've accomplished that, with no perceptable delay to commits. |