libgit2 / objective-git

Objective-C bindings to libgit2
MIT License
1.16k stars 280 forks source link

GTTreeBuilder: don't add blob data lazily #566

Closed ethomson closed 8 years ago

ethomson commented 8 years ago

Add the blob data to the object database immediately in [GTTreeBuilder addEntryWithData], instead of queueing it up. This enables strict object validity checking, prevents us from hashing the file twice (once to compute the OID to give to addEntryWithOID, and again when adding to the object database) and reduces memory overhead.

ethomson commented 8 years ago

Note, of course, that I'm missing the historical context here. So I may be missing the use case that this enables. I think that in the general case, removing this is probably the right thing, but if there's value here then it could be optional instead...

pietbrauer commented 8 years ago

Seem like the initial implementation was made back in 2013 (https://github.com/libgit2/objective-git/commit/1f203eb58015923bddfb5d5a71226c080f99b80f) but it seems to have no specific reason to write the data to the odb at once.

This also fixes the test for the 0.24.0 which is stricter with writing the correct objects, so my guess is: Because libgit2 did not complain back then it was ok to do it like that. Now that it is complaining we should think of the proper way of doing it, which is this implementation.

Thanks so much for sorting this out! :sparkles: