lib/pack.c


Log

Author Commit Date CI Message
Stefan Sperling 40aeb19c 2018-06-22T13:03:45 use binary search to find objects in pack index
Stefan Sperling 56cca8e5 2018-06-04T20:54:13 use macro instead of literal ".pack"
Stefan Sperling 72fb0363 2018-06-04T20:53:30 use macro instead of literal ".idx"
Stefan Sperling d475dd0d 2018-06-04T20:52:43 use strlcpy instead of strncpy
Stefan Sperling 4738e5f4 2018-06-04T20:46:09 remove unnecessary forward declaration
Stefan Sperling c8262310 2018-06-04T18:11:39 use local variable to save screen estate in got_packidx_open()
Stefan Sperling 0b48ab23 2018-06-04T18:06:47 wrap overlong lines
Stefan Sperling 6fd11751 2018-06-04T18:02:06 turns out on-disk path of pack file may not match its hash Fixes reading a repo with a pack idx and file dated June 2011, where the filename does not contain the actual packfile SHA1.
Stefan Sperling f5feadcc 2018-06-04T16:22:01 fix bogus free() in error path of cache_pack()
Stefan Sperling 511a516b 2018-05-19T16:57:12 move got_opentmp* functions to public API; used from tog
Stefan Sperling 0c048b15 2018-04-27T11:25:46 offsets in pack files should not make us seek beyond EOF
Stefan Sperling 8b2180d4 2018-04-26T19:47:10 store fd instead of FILE in struct got_pack to prepare privsep
Stefan Sperling 2178c42e 2018-04-22T14:51:49 read object headers with privsep
Stefan Sperling 5b7e13a7 2018-04-02T12:46:33 put a limit on delta chain recursion
Stefan Sperling dfb54902 2018-04-02T11:45:31 wrap long lines
Stefan Sperling 97128b57 2018-04-02T10:09:22 in get_packfile_size(), get errno from stat() and init output early
Stefan Sperling 1c7e24f1 2018-04-02T10:05:35 avoid unnecessary string copies and allocations in get_packfile_size()
Stefan Sperling 4810de4a 2018-04-01T23:16:35 we have implemented all object types, switch to better error code
Stefan Sperling 16dcbf91 2018-04-01T15:59:36 remove debug code accidentally committed
Stefan Sperling 72eb3431 2018-04-01T15:57:43 look up deltas in the correct pack file
Stefan Sperling 040bf4a1 2018-04-01T14:43:53 stop using fmemopen(); that code path didn't work correctly
Stefan Sperling 0a585a0d 2018-03-17T18:13:19 remove GOT_ERR_NO_MEM, we can just use errno in those cases
Stefan Sperling 718b3ab0 2018-03-17T17:50:48 rename the library-internal headers again to a common prefix
Stefan Sperling 4589e373 2018-03-17T15:41:39 remove mmap() stuff; checkout is fast enough for now
Stefan Sperling 0bd0053c 2018-03-17T15:31:18 handle empty files in got_packfile_extract_object()
Stefan Sperling d0f3be7c 2018-03-17T15:17:14 initialize some output variables on failure
Stefan Sperling 6bb255dc 2018-03-17T15:12:44 don't dup_packidx() during cache lookup; fixes performance :)
Stefan Sperling 40426839 2018-03-17T15:05:06 remove unused argument from get_delta_chain_max_size()
Stefan Sperling c52ac529 2018-03-17T15:01:36 extract objects smaller than DELTA_RESULT_SIZE_CACHED_MAX to memory
Stefan Sperling a53d2f13 2018-03-17T14:19:13 cache delta data in struct got_delta directly
Stefan Sperling 6d89869a 2018-03-17T03:35:04 use cached packfile in open_packed_object()
Stefan Sperling 999f19f6 2018-03-17T02:36:20 use cached packfile in resolve_ref_delta()
Stefan Sperling e1ad6ebc 2018-03-17T02:12:34 remove path_packfile from struct got_delta_cache; add a counter instead
Stefan Sperling f7e127f3 2018-03-17T02:02:32 move delta cache into struct got_pack
Stefan Sperling 7e656b93 2018-03-17T01:37:48 add struct got_pack; some preparation for mmap, which isn't used yet
Stefan Sperling b29656e2 2018-03-16T23:05:12 set obj->size of packed deltified objects to object's actual size
Stefan Sperling 65cf1e80 2018-03-16T22:33:22 revert the pack file handle cache again; needs more thought
Stefan Sperling ef2bccd9 2018-03-16T22:14:51 stop opening pack files redundantly to read deltas
Stefan Sperling 6845d284 2018-03-16T21:40:20 use SEEK_SET instead of SEEK_CUR after opening packfile
Stefan Sperling 87c99799 2018-03-16T21:26:06 start caching file handles to packfiles
Stefan Sperling ea35256b 2018-03-16T19:27:48 avoid a round-trip via tempfile when reading packed commits
Stefan Sperling 40dc5ff8 2018-03-16T19:22:22 rename a function for clarity
Stefan Sperling e0ab43e7 2018-03-16T19:20:15 avoid a round-trip of data through a temp file when reading trees
Stefan Sperling 8628c62d 2018-03-15T01:21:57 process small deltas in memory; unfortunately it is not faster...
Stefan Sperling 1cc8e7f9 2018-03-15T00:31:05 remove a useless and leaky allocation
Stefan Sperling 9db65d41 2018-03-14T23:42:16 In dump_delta_chain(), don't open the packfile if it's not needed.
Stefan Sperling ec889268 2018-03-14T23:32:19 fix open file handle leak in dump_delta_chain()
Stefan Sperling 9feb4ff2 2018-03-14T02:37:58 propagate error from delta cache insertion; fixes mem leak
Stefan Sperling bd1223b9 2018-03-14T01:21:09 add a delta cache; saves us from reading + decompressing some deltas
Stefan Sperling 22484865 2018-03-13T18:28:40 process delta chains in memory if max size is < 32 MB
Stefan Sperling 25783624 2018-03-12T13:59:29 use stricter CPPFLAGS from mpi
Stefan Sperling 32cb896c 2018-03-11T14:10:56 rename library-private headers from *_priv.h to *_lib.h
Stefan Sperling 5677e194 2018-03-11T13:20:25 rename got_zb_priv.h to got_zbuf_priv.h
Stefan Sperling 63afc6c6 2018-03-10T01:09:31 unwrap short line
Stefan Sperling 0a71ee67 2018-03-09T18:12:10 return error from search_packidx() if dup_packidx() fails
Stefan Sperling 79b11c62 2018-03-09T17:01:49 add a pack index cache; speeds tree listing up quite a lot
Stefan Sperling 39e73dc9 2018-03-03T14:18:08 We don't use a delta combiner, we use delta application. A "delta combiner" (as used in SVN) combines deltas and applies the combined delta to the base. We don't do this yet; we apply deltas one by one.
Stefan Sperling 1411938b 2018-02-12T23:25:38 rename private header filenames so they are in got_ namespace
Stefan Sperling 908b0194 2018-02-12T21:29:08 move struct got_zstream_buf to private header zb.h
Stefan Sperling bdd2fbb3 2018-02-12T00:01:26 read delta data from the right offset
Stefan Sperling 0e22967e 2018-02-11T22:43:21 we must store delta's type-and-size length separately to skip it
Stefan Sperling a6b158cc 2018-02-11T19:15:55 don't read plain objects to memory during unpack
Stefan Sperling 044e7393 2018-02-11T18:35:45 don't assume objects IDs are sorted by their values in packidx
Stefan Sperling 61d262a8 2018-02-11T16:37:53 make got_inflate_read() properly indicate if it needs to be called again
Stefan Sperling 3606d7fc 2018-02-11T16:17:37 tweak the API which inflates data to a file
Stefan Sperling 885d3e02 2018-01-27T01:05:56 implement delta combiner and a small test suite for it
Stefan Sperling ef715580 2018-01-26T15:01:44 ensure we don't call closedir(NULL) in search_packidx()
Stefan Sperling 710bb5ca 2018-01-23T23:48:41 rename delta dumping helper function and tweak its parameter list
Stefan Sperling 6691714a 2018-01-23T23:44:49 prepare application of deltas
Stefan Sperling c7fe698a 2018-01-23T18:07:21 add a helper function for opening a pack file
Stefan Sperling b432fb3b 2018-01-23T17:52:24 treat tag objects as a plain type in got_packfile_extract_object()
Stefan Sperling d33fc9ef 2018-01-23T17:50:42 treat tag objects as a plain type in open_packed_object()
Stefan Sperling a48db7e5 2018-01-23T17:49:03 add support for opening ref delta objects
Stefan Sperling 6b9c9673 2018-01-23T17:44:17 resolve ref deltas as part of a delta chain
Stefan Sperling 348f621c 2018-01-23T15:22:16 s/decode_/parse_/
Stefan Sperling c3703302 2018-01-23T15:19:45 model delta chains in a better way
Stefan Sperling a3500804 2018-01-23T13:52:21 add a helper function to reduce size of a switch statement
Stefan Sperling 96f5e8b3 2018-01-23T13:38:17 add support for delta chains; implement them for offset deltas
Stefan Sperling cecc778e 2018-01-23T11:27:29 compute off_delta offset correctly
Stefan Sperling 4e8cda55 2018-01-19T18:14:44 We only support plain objects as delta base for now.
Stefan Sperling eef6493a 2018-01-19T18:09:29 Make struct got_object opaque to users of the library
Stefan Sperling b107e67f 2018-01-19T18:03:07 Implement open() support for offset delta objects
Stefan Sperling 9710aac2 2018-01-19T16:29:59 rename helper function
Stefan Sperling 6ccb713b 2018-01-19T16:28:55 Add helper function for opening packed plain objects
Stefan Sperling efd2a263 2018-01-19T16:18:44 add some stub code for packed ref-delta objects
Stefan Sperling bbcf6d65 2018-01-17T22:33:38 plug a memory leak by freeing packidx
Stefan Sperling 3ee5fc21 2018-01-17T22:25:01 add support for extracting non-deltified packed objects
Stefan Sperling 6c00b545 2018-01-17T21:59:05 open packed objects correctly; don't worry about their contents yet
Stefan Sperling a487c1d0 2018-01-14T17:49:25 refactor dump_packed_object() a bit; no functional change
Stefan Sperling 2b2ca9f0 2018-01-13T12:32:35 call got_object_id_cmp() just once in got_object_idx()
Stefan Sperling c54542a0 2018-01-13T12:27:47 whitespace
Stefan Sperling 8251fdbc 2018-01-12T23:00:06 introduce got_ferror() and use it
Stefan Sperling f334529e 2018-01-12T21:17:22 add a conversion function from errno to got_error and use it
Stefan Sperling a1fd68d8 2018-01-12T20:59:51 Extract non-deltified objects from pack files.
Stefan Sperling 24541888 2018-01-10T21:58:17 get_packfile_size() should be static
Stefan Sperling 39b01da5 2018-01-10T21:57:50 whitespace
Stefan Sperling 0ebaf008 2018-01-10T21:56:48 verify pack file index checksum
Stefan Sperling b0517dd0 2018-01-10T21:18:24 fix off-by-one in pack file size check
Stefan Sperling 0a0a3048 2018-01-10T21:15:21 open pack file index