aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-03-10 21:36:13 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-03-10 22:10:26 -0400
commit9d5b42222a10050fc733a49c427359f88e8be36c (patch)
tree4fa0b1d6cf4a38ba772557dc4277fbd887020e46 /doc
parente107ddb4507d92303e14ebee3ccdec7662350031 (diff)
assistant: generate better commits for renames
Diffstat (limited to 'doc')
-rw-r--r--doc/design/assistant/blog/day_210__spring.mdwn14
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.