summaryrefslogtreecommitdiff
path: root/include/git2/odb_backend.h
Commit message (Collapse)AuthorAgeFilesLines
* odb: use `git_object_size_t` for object sizeEdward Thomson2019-11-221-2/+2
| | | | | Instead of using a signed type (`off_t`) use a new `git_object_size_t` for the sizes of objects.
* indexer: correct missing includesEtienne Samson2019-06-151-0/+1
| | | | Docurium seems to choke on this header because it can't see both git_indexer_progress & git_indexer_progress_cb, let's add the include.
* indexer: use git_indexer_progress throughoutEdward Thomson2019-02-221-2/+2
| | | | | Update internal usage of `git_transfer_progress` to `git_indexer_progreses`.
* Introduce GIT_CALLBACK macro to enforce cdeclEdward Thomson2019-01-171-7/+7
| | | | | | | | | Since we now always build the library with cdecl calling conventions, our callbacks should be decorated as such so that users will not be able to provide callbacks defined with other calling conventions. The `GIT_CALLBACK` macro will inject the `__cdecl` attribute as appropriate.
* odb_loose: actually honor the fsync optionEdward Thomson2017-02-281-1/+1
| | | | | We've had an fsync option for a long time, but it was "ignored". Stop ignoring it.
* odb: make the writestream's size a git_off_tcmn/stream-sizeCarlos Martín Nieto2015-05-131-2/+2
| | | | | | | | | | Restricting files to size_t is a silly limitation. The loose backend writes to a file directly, so there is no issue in using 63 bits for the size. We still assume that the header is going to fit in 64 bytes, which does mean quite a bit smaller files due to the run-length encoding, but it's still a much larger size than you would want Git to handle.
* Take umask into account in filebuf_commitEdward Thomson2013-11-041-2/+2
|
* Allow backend consumers to specify file modeEdward Thomson2013-11-041-1/+9
|
* indexer: remove the stream infixCarlos Martín Nieto2013-10-301-1/+1
| | | | | | | | | | | It was there to keep it apart from the one which read in from a file on disk. This other indexer does not exist anymore, so there is no need for anything other than git_indexer to refer to it. While here, rename _add() function to _append() and _finalize() to _commit(). The former change is cosmetic, while the latter avoids talking about "finalizing", which OO languages use to mean something completely different.
* fixing headers with bad values for objective-cJohn Josef2013-09-091-2/+2
|
* Comment updatesRussell Belfer2013-09-091-9/+9
|
* odb: Error when streaming in too [few|many] bytesnulltoken2013-09-071-3/+10
|
* odb: Prevent stream_finalize_write() from overwritingnulltoken2013-09-061-0/+4
| | | | | | Now that #1785 is merged, git_odb_stream_finalize_write() calculates the object id before invoking the odb backend. This commit gives a chance to the backend to check if it already knows this object.
* Don't expose git_hash_ctx since it's internalEdward Thomson2013-08-191-3/+1
| | | | And doing so makes the mingw build choke.
* odb: document git_odb_streamCarlos Martín Nieto2013-08-171-1/+25
| | | | | | Clarify the role of each function and in particular mention that there is no need for the backend or stream to worry about the object's id, as it will be given when `finalize_write` is called.
* odb: make it clearer that the id is calculated in the frontendCarlos Martín Nieto2013-08-171-1/+1
| | | | | | | | | | The frontend is in charge of calculating the id of the objects. Thus the backends should treat it as a read-only value. The positioning in the function signature made it seem as though it was an output parameter. Make the id const and move it from the front to behind the subject (backend or stream).
* odb: perform the stream hashing in the frontendCarlos Martín Nieto2013-08-151-0/+3
| | | | | | Hash the data as it's coming into the stream and tell the backend what its name is when finalizing the write. This makes it consistent with the way a plain git_odb_write() performs the write.
* Add typedefs on some public enumsRussell Belfer2013-05-241-2/+2
| | | | Apparently this makes things easier to bind in some languages.
* Document the odb backend constructorsCarlos Martín Nieto2013-04-231-1/+33
|
* Move odb_backend implementors stuff into git2/sysRussell Belfer2013-04-211-107/+16
| | | | | | | | | | | | This moves some of the odb_backend stuff that is related to the internals of an odb_backend implementation into include/git2/sys. Some of the stuff related to streaming I left in include/git2 because it seemed like it would be reasonably needed by a normal user who wanted to stream objects into and out of the ODB. Also, I added APIs for traversing the list of backends so that some of the tests would not need to access ODB internals.
* Sane refresh logicVicent Marti2013-01-101-0/+2
| | | | | | | All the ODB backends have a specific refresh interface. When reading an object, first we attempt every single backend: if the read fails, then we refresh all the backends and retry the read one more time to see if the object has appeared.
* update copyrightsEdward Thomson2013-01-081-1/+1
|
* odb: check if object exists before writingDavid Michael Barr2012-12-211-0/+4
| | | | | Update the procondition of git_odb_backend::write. It may now be assumed that the object has already been hashed.
* Allow compilation as C++Ben Straub2012-12-061-1/+1
|
* Add version fields and init macros for public input structs.Ben Straub2012-11-301-0/+4
|
* Make git_odb_foreach_cb take const paramRussell Belfer2012-11-271-2/+9
| | | | | This makes the first OID param of the ODB callback a const pointer and also propogates that change all the way to the backends.
* API updates for odb_backend.hBen Straub2012-11-271-7/+10
|
* create callback to handle packs from fetch, move the indexer to odb_packEdward Thomson2012-11-051-5/+21
|
* Expose a malloc function to 3rd party ODB backendsPhilip Kelley2012-08-271-0/+6
|
* Merge remote-tracking branch 'nulltoken/topic/amd64-compat' into developmentVicent Marti2012-08-021-1/+1
|\ | | | | | | | | | | | | Conflicts: src/netops.c src/netops.h src/oid.c
| * portability: Improve x86/amd64 compatibilitynulltoken2012-07-241-1/+1
| |
* | odb: allow creating an ODB backend from a packfile indexCarlos Martín Nieto2012-07-211-0/+1
|/ | | | | git_odb_backend_one_packfile() allows us to create an ODB backend out of an .idx file.
* odb: add git_odb_foreach()Carlos Martín Nieto2012-07-031-0/+6
| | | | | Go through each backend and list every objects that exists in them. This allows fsck-like uses.
* Properly tag all `enums` with a `_t`Vicent Martí2012-05-181-7/+7
|
* Update Copyright headerschu2012-02-131-1/+1
| | | | Signed-off-by: schu <schu-github@schulog.org>
* odb: Let users decide compression level for the loose ODBVicent Marti2011-09-291-1/+1
|
* Cleanup legal dataVicent Marti2011-09-191-21/+3
| | | | | | | | | | 1. The license header is technically not valid if it doesn't have a copyright signature. 2. The COPYING file has been updated with the different licenses used in the project. 3. The full GPLv2 header in each file annoys me.
* Remove custom backendsVicent Marti2011-06-141-2/+0
| | | | | All the custom backend code will be moved to a separate project, together with the new MySQL backend.
* short-oid: CleanupVicent Marti2011-06-011-2/+2
|
* Added a read_unique_short_oid method to backends, to make it possible to ↵Marc Pegon2011-06-011-0/+13
| | | | find objects from sha1 prefixes in the future. Default implementations throw GIT_ENOTIMPLEMENTED for strict prefixes (i.e. length < GIT_OID_HEXSZ).
* Remove circular dependency in includesVicent Marti2011-03-231-1/+0
|
* Improve the ODB writing backendVicent Marti2011-03-231-0/+7
| | | | | | | | | Temporary files when doing streaming writes are now stored inside the Objects folder, to prevent issues when moving files between disks/partitions. Add support for block writes to the ODB again (for those backends that cannot implement streaming).
* I broke your bindingsVicent Marti2011-03-201-8/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hey. Apologies in advance -- I broke your bindings. This is a major commit that includes a long-overdue redesign of the whole object-database structure. This is expected to be the last major external API redesign of the library until the first non-alpha release. Please get your bindings up to date with these changes. They will be included in the next minor release. Sorry again! Major features include: - Real caching and refcounting on parsed objects - Real caching and refcounting on objects read from the ODB - Streaming writes & reads from the ODB - Single-method writes for all object types - The external API is now partially thread-safe The speed increases are significant in all aspects, specially when reading an object several times from the ODB (revwalking) and when writing big objects to the ODB. Here's a full changelog for the external API: blob.h ------ - Remove `git_blob_new` - Remove `git_blob_set_rawcontent` - Remove `git_blob_set_rawcontent_fromfile` - Rename `git_blob_writefile` -> `git_blob_create_fromfile` - Change `git_blob_create_fromfile`: The `path` argument is now relative to the repository's working dir - Add `git_blob_create_frombuffer` commit.h -------- - Remove `git_commit_new` - Remove `git_commit_add_parent` - Remove `git_commit_set_message` - Remove `git_commit_set_committer` - Remove `git_commit_set_author` - Remove `git_commit_set_tree` - Add `git_commit_create` - Add `git_commit_create_v` - Add `git_commit_create_o` - Add `git_commit_create_ov` tag.h ----- - Remove `git_tag_new` - Remove `git_tag_set_target` - Remove `git_tag_set_name` - Remove `git_tag_set_tagger` - Remove `git_tag_set_message` - Add `git_tag_create` - Add `git_tag_create_o` tree.h ------ - Change `git_tree_entry_2object`: New signature is `(git_object **object_out, git_repository *repo, git_tree_entry *entry)` - Remove `git_tree_new` - Remove `git_tree_add_entry` - Remove `git_tree_remove_entry_byindex` - Remove `git_tree_remove_entry_byname` - Remove `git_tree_clearentries` - Remove `git_tree_entry_set_id` - Remove `git_tree_entry_set_name` - Remove `git_tree_entry_set_attributes` object.h ------------ - Remove `git_object_new - Remove `git_object_write` - Change `git_object_close`: This method is now *mandatory*. Not closing an object causes a memory leak. odb.h ----- - Remove type `git_rawobj` - Remove `git_rawobj_close` - Rename `git_rawobj_hash` -> `git_odb_hash` - Change `git_odb_hash`: New signature is `(git_oid *id, const void *data, size_t len, git_otype type)` - Add type `git_odb_object` - Add `git_odb_object_close` - Change `git_odb_read`: New signature is `(git_odb_object **out, git_odb *db, const git_oid *id)` - Change `git_odb_read_header`: New signature is `(size_t *len_p, git_otype *type_p, git_odb *db, const git_oid *id)` - Remove `git_odb_write` - Add `git_odb_open_wstream` - Add `git_odb_open_rstream` odb_backend.h ------------- - Change type `git_odb_backend`: New internal signatures are as follows int (* read)(void **, size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* read_header)(size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* writestream)(struct git_odb_stream **, struct git_odb_backend *, size_t, git_otype) int (* readstream)( struct git_odb_stream **, struct git_odb_backend *, const git_oid *) - Add type `git_odb_stream` - Add enum `git_odb_streammode` Signed-off-by: Vicent Marti <tanoku@gmail.com>
* Move the external includes folder from `src` to `include`Vicent Marti2011-03-031-0/+77
Signed-off-by: Vicent Marti <tanoku@gmail.com>