lib


Log

Author Commit Date CI Message
Stefan Sperling d5c81d44 2021-07-08T11:03:29 verify object ID checksums while loose objects are being accessed
Stefan Sperling 4f655d1b 2021-07-08T10:37:01 sync files from diff.git 9879b82a581a245e365fb159488c4294c318d8b3
Stefan Sperling ff56836b 2021-07-08T10:30:10 Make 'got add' always require the -I option in order to add ignored files.
Stefan Sperling 1124fe40 2021-07-07T17:21:52 handle pack index files which lack a corresponding pack file ok millert
Stefan Sperling aea75d87 2021-07-06T07:57:00 make got_packidx_get_packfile_path() usable for callers who only have a path
Stefan Sperling 5345b4c7 2021-07-06T07:39:36 allow lockfiles to be used in cases where we have a dir_fd and a relative path
Stefan Sperling 12f2167a 2021-07-04T16:24:52 add checksum parameters to got_inflate functions which did not provide them yet
Stefan Sperling 9614da0d 2021-07-04T10:27:59 avoid searching the pack index twice in 'gotadmin cleanup'
Stefan Sperling 2252c019 2021-07-03T22:55:27 Update a code comment regarding support of the preciousObjects extension.
Stefan Sperling 9188bd78 2021-07-03T22:51:03 add support for the preciousObjects Git extension to 'gotadmin cleanup'
Stefan Sperling 4b2e47fb 2021-07-03T19:49:37 fix memory leak in error path of load_commit_or_tag()
Stefan Sperling b3d68e7f 2021-07-03T19:49:37 implement 'gotadmin cleanup'
Stefan Sperling 07165b17 2021-07-01T14:57:10 cache object type in memory to speed up packing of objects referenced by tags
Stefan Sperling ae23ce34 2021-07-01T14:57:10 fix inverted check guarding recallocarray() calls in get_reflist_object_ids()
Stefan Sperling 372b6d8e 2021-07-01T14:30:26 remove unused function got_object_idset_lookup_data(); same code as idset_get()
Stefan Sperling f4a2ff2d 2021-07-01T14:10:33 fix out-of-bounds access in 'gotadmin pack'; wrong array pointer in read_meta()
Stefan Sperling 2c41dce7 2021-06-27T15:30:08 allow obstructed files skipped by 'got update' to be updated again
Stefan Sperling a769b60b 2021-06-27T09:22:52 fix a bug where files skipped by 'got update' could not be updated again ok semarie@
Christian Weisgerber dbdddfee 2021-06-23T20:48:35 switch from SIMPLEQ to equivalent STAILQ macros The singly-linked tail queue macros were added to OpenBSD 6.9 and are more widely available on other systems. ok stsp
Christian Weisgerber c8d1f14f 2021-06-23T15:39:58 explicitly include <endian.h> for be32toh()
Stefan Sperling 08736cf9 2021-06-23T10:16:23 fix imsg header includes in pack_create.c
Stefan Sperling f6343036 2021-06-22T20:00:44 new -I option for 'got status' to show files which match an ignore pattern
Stefan Sperling 05118f5a 2021-06-22T19:37:20 implement gotadmin pack, indexpack, and listpack commands
Stefan Sperling e6bcace5 2021-06-22T19:34:53 initial port of git9's pack file creation code to gameoftrees; thank you, Ori!
Stefan Sperling 136ec6c9 2021-06-22T19:18:55 forward-declare struct got_packidx to make got_lib_pack.h self-contained
Stefan Sperling c4330eff 2021-06-22T19:11:54 expose got_pack_parse_ref_delta() for library-internal use This will be needed by a future 'gotadmin listpack' command.
Stefan Sperling 02828bfd 2021-06-22T19:05:05 expose got_packidx_get_object_offset() for library-internal use This will be needed by a future 'gotadmin listpack' command.
Stefan Sperling 1c4cdd89 2021-06-20T21:07:54 fix bogus 'permission denied' error when a file at work tree root is removed ok naddy
Stefan Sperling b4f37570 2021-06-19T16:32:39 mark got_pack_stop_privsep_child() static; it is only used inside pack.c
Tracey Emery cc2a8ef4 2021-06-19T16:12:52 fix a leaky ibuf. ok stsp
Stefan Sperling 779e1159 2021-06-18T14:14:49 expose the reflist_insert() helper function as got_reflist_insert() This will be needed by 'gotadmin pack'.
Stefan Sperling 9a8dc2b3 2021-06-18T14:10:55 fix deltas with trailing data that is smaller than the minimum chunk size
Stefan Sperling 740bba1c 2021-06-18T14:07:35 allow the delta base file to lose its header between deltify_init and deltify This simplifies pack file creation. A delta base could be read from a loose object, a packfile, or it might be available in a temporary file. All these cases can now be handled the same way. We may need to open, close, and re-open a given delta base multiple times while packing.
Stefan Sperling 7550e799 2021-06-18T13:59:46 check for errors from emitdelta() in got_deltify()
Stefan Sperling aa51f4a4 2021-06-18T13:57:59 handle fseek in got_deltify() instead of in stretchblk(); simplifies the code
Stefan Sperling a8591711 2021-06-18T13:52:26 raw object size should not include the length of the object's header This way, the size of a raw object is the same regardless of whether the object was found in a loose object file or in a pack file.
Stefan Sperling 9ca9aafb 2021-06-18T13:36:51 introduce got_object_id_queue_copy() This will be required by a future 'gotadmin pack' command.
Stefan Sperling 74a2356f 2021-06-18T13:34:45 add a user data pointer to struct got_object_qid This will be required by a future 'gotadmin pack' command.
Stefan Sperling f34b169e 2021-06-18T13:28:25 Allow for skipping the base object header in got_deltify().
Stefan Sperling 9ec58fff 2021-06-17T15:41:49 use socketpair(2) instead of pipe(2) for bi-directional communication On Linux, pipes returned from pipe(2) only work in one direction. This broke 'got clone' over ssh in the -portable version because got-fetch-pack assumes it can use its fetchfd for both reading and writing. I wrote a complicated diff to use two pipe(2) calls instead of one, but millert suggested a simpler solution: Use socketpair(2) instead of pipe(2). ok millert jrick tracey
Stefan Sperling fdf3c2d3 2021-06-17T09:01:05 use Patience diff for merging during cherrypick/backout/histedit/rebase This has been shown to prevent mis-merges in some cases. It's probably not a final solution. We should look at what Git's "recursive merge" is doing and implement something similar. Keep using Myers during update/unstage. The advantage of Myers is that it produces smaller conflict chunks, and there are no known cases of mis-merges which affect update/unstage.
Stefan Sperling 1d0f4054 2021-06-17T08:56:43 check for close(2) error in got_repo_close() and propagate errors up ok tracey
Tracey Emery 991ff1aa 2021-06-15T22:16:22 close all opened repo->gitdir_fd's and set open_repo static. ok naddy (with static change)
Stefan Sperling 0d15f6dc 2021-06-13T17:03:59 in addblk(), only read data into buffer1 if we will compare it to buffer2 suggested by and ok naddy@
Stefan Sperling 68bdcdc2 2021-06-11T17:10:50 addblk() may seek in its input file; reposition the file pointer afterwards
Stefan Sperling a893025f 2021-06-11T17:02:57 addblk: iterate over the correct number of entries after growing the array ok naddy
Stefan Sperling e89540a9 2021-06-11T17:02:13 addblk: be more careful about expanding the blocks array when we outgrow it fixes + ok naddy
Stefan Sperling 51a494da 2021-06-11T17:00:02 check a block's hash as well as its length before expensive comparisons suggested by + ok naddy, and Ori agrees
Stefan Sperling 0c9eeee2 2021-06-05T09:32:56 avoid uninitialized error being returned from got_repo_get_packfile_info()
Stefan Sperling 3b9e6fcf 2021-06-05T09:28:54 simplify deflate checksumming code; fixes errors with upcoming 'gotadmin pack' tweak + ok naddy
Stefan Sperling 54d5be07 2021-06-03T13:12:58 fix unrelated changes being merged by got cherrypick/backout/rebase/histedit This was a long-standing and very annoying bug. The two xfail tests in the cherrypick test suite are passing now.
Stefan Sperling 1af628f4 2021-06-03T12:38:42 switch merge_file_cb() to using merge_file() instead of merge_blob()
Stefan Sperling eec2f5a9 2021-06-03T12:14:35 decouple merge_file() parameters for 2nd derived version and merge target file
Stefan Sperling dc082d4a 2021-06-03T11:57:58 in merge_file(), remove allocation of a base_path which is unused
Stefan Sperling 07bb0f93 2021-06-02T09:26:42 move merge_file()'s f_deriv parameter next to the f_orig parameter
Stefan Sperling db590691 2021-06-02T09:24:51 make merge_file() accept FILEs instead of paths for orig and deriv inputs
Stefan Sperling 67a66647 2021-05-31T09:20:56 refactor merge_file() such that it no longer requires a blob object parameter
Christian Weisgerber f2705486 2021-05-30T15:37:51 dial_git(): fix memory leak and simplify Simplify dial_git() by formatting the initial Git protocol packet with dprintf, suggested by millert, and stop leaking an asprintf buffer. ok stsp
Stefan Sperling 57c18198 2021-05-24T18:25:19 validate reference names in open_ref() This catches invalid reference names passed to 'got ref -l' and will also be needed to validate reference names passed to a future 'gotadmin pack' command. ok naddy@
Stefan Sperling 91b40e30 2021-05-21T20:20:28 add checksum support to got_deflate_to_file() This will eventually be used by 'gotadmin pack'. Checksum init and finalization will need to be done by the caller since many objects will be written out in compressed form while we are computing checksums across the entire pack file. ok millert, naddy
Stefan Sperling af8a5c4a 2021-05-21T20:16:17 plug a memory leak in got_ref_list_free() Code which inserts a reference into a reflist passes ownership of this reference to the list. However, got_ref_list_free() never closed such references, which resulted in a memory leak. ok tracey
Stefan Sperling 9069347b 2021-05-20T09:58:35 improve error reporting when delta application fails
Stefan Sperling dbbf4a5f 2021-05-20T09:51:59 allow got_deltify_free(NULL); will be needed by 'gotadmin pack'
Stefan Sperling 932dbee7 2021-05-19T13:58:22 fix wrong function name in error message; pointed out by Mikolaj Kucharski
Stefan Sperling a486b62b 2021-05-18T13:17:12 ignore SIGWINCH while polling in the main process Avoids an error where tog(1) would exit with "poll: Interrupted system call" while the terminal window was being resized. ok millert
Stefan Sperling a3af57b8 2021-05-10T11:26:06 remove unused worktree-related includes from lib/repository.c
Stefan Sperling 1fee9f40 2021-04-13T08:28:24 fix 3-way merge of files which lack a final \n problem found by jrick ok millert
Stefan Sperling 20662ea0 2021-04-10T13:31:30 introduce 'gotadmin info'
Stefan Sperling 762d73f4 2021-04-10T13:13:56 introduce got_object_open_loose_fd() for library-internal use
Stefan Sperling 509c9973 2021-04-10T13:11:17 add got_packidx_get_packfile_path() for library-internal use
Stefan Sperling c6e8a826 2021-04-05T17:55:12 do not update symlinks which are already up-to-date This fixes spurious 'U' notifications for symlinks during 'got update' that occurred even when the work tree was fully up-to-date. Observed on a work tree of the FreeBSD src repo and reproduced in our test suite by adding a no-op update at the end of a test which deals with updating symlinks.
Stefan Sperling 0f58026f 2021-04-05T17:51:07 add a missing STATUS_EXISTS notification in update_blob()
Stefan Sperling 7495ec13 2021-04-04T14:24:39 fix open file descriptor leak in error path of read_object_header_privsep()
Stefan Sperling ac62b712 2021-03-30T14:50:44 when reading a pack index byte-swap fields at compile-time where possible suggested by mpi@ ages ago
Stefan Sperling 6c414261 2021-03-30T01:26:42 cap pack file cache size at 1/8 of the current open file desciptor limit
Stefan Sperling 61303e6e 2021-03-30T01:22:29 fix off-by-one in got_repo_cache_pack()
Stefan Sperling 159a21e5 2021-03-30T00:48:38 increase pack index cache size from 16 to 64 to improve performance This can make a huge difference on repositories which contain more than 16 pack files, at the expense of additional open file handles. My test case was a ports.git repository with > 60 pack files (these accumulate due to 'got fetch', and 'git repack -a' would condense them). With cache size 16 'got update' in /usr/ports took more than 60 seconds. With cache size 64 the same command took less than 5 seconds. The root cause is probably that mapping and unmapping large files over and over again is expensive on OpenBSD.
Stefan Sperling 4d9042b3 2021-03-24T14:17:56 fix error checking in dial_ssh()
Stefan Sperling 4cc1f028 2021-03-23T15:01:29 fix use of an uninitialized stat buffer during work tree status crawl found by naddy ok naddy jrick
Christian Weisgerber 22403ab7 2021-03-22T16:20:51 deltify.c: explicitly include <endian.h> for be64toh()
Stefan Sperling e600f124 2021-03-21T19:09:35 ensure that old commits remain referenced after rebase and histedit Create automatic "backup" references which ensure that objects from the pre-rebase or pre-histedit state remain in the repository. A new -l option for 'got rebase' and 'got histedit' lists old commits. This makes it easier to recover from botched rebase or histedit operations. Removal of such objects currently requires got ref -d and git-gc. This will be made more convenient in the future. testing and ok jrick
Stefan Sperling 59d1e4a0 2021-03-10T22:49:22 implement raw object data access; this will be required for packing
Stefan Sperling 69aa0e90 2021-03-10T22:49:21 substantial rewrite of deltify.c; operate on plain files only
Stefan Sperling 5788893e 2021-03-10T22:49:21 fix off-by-one error in delta length; from ori git9 commit fbb2fb7c87d8edf58e22c84f575853dc9de79ac4
Stefan Sperling f364801d 2021-03-10T22:49:21 first pass over deltify.c: adapt coding style and data types; make it compile
Stefan Sperling 2a0e67f7 2021-03-10T22:49:21 Ori has authorized a licence change to OpenBSD's license template
Stefan Sperling 56e7a15f 2021-03-10T22:49:21 add deltify.c, unmodified from git9, with license header added
Stefan Sperling bc62ede8 2021-02-26T17:31:35 use Myers diff instead of Patience diff when merging files with diff3 Myers diff tends to divide files into smaller diff chunks, while Patience diff attemps to maximize the size of diff chunks. Smaller diffs chunks generally result in a more managable presentation of merge conflicts.
Stefan Sperling 9dbd8627 2021-02-04T11:11:25 tolerate tag objects which lack tagger timestamp information Fixes interop with repos such as git://github.com/steveicarus/iverilog.git Found by + ok naddy
Stefan Sperling 6e210706 2021-01-22T23:49:46 implicitly mark all files in work tree as up-to-date after 'got integrate' Avoids having to run 'got update' for no good reason after 'got integrate'. The same change was made recently for both rebase and histedit in commit a615e0e7796ea1103a6e0d4b5dbb6134597886660 and we forgot about histedit.
Stefan Sperling 60e40e95 2021-01-22T21:53:05 close file handles before freeing other things in got_worktree_close() The work tree's path needs to be valid while constructing error messages.
Stefan Sperling e7abd6b6 2021-01-22T21:47:37 fix missing close(2) error check in got_worktree_close()
Stefan Sperling 08578a35 2021-01-22T11:05:05 make close(2) failure checks consistent; check 'close() == -1' everywhere ok millert, naddy
Stefan Sperling 56b63ca4 2021-01-22T11:04:47 make fclose(3) failure checks consistent; check 'fclose() == EOF' everywhere ok millert, naddy
Stefan Sperling a6b21eef 2021-01-21T19:10:08 add missing braces around multi-line if-statement in got_worktree_close()
Christian Weisgerber a06ff56f 2021-01-21T18:33:50 fix a use after free() ok jrick stsp
Stefan Sperling 194cb7cb 2021-01-19T07:38:37 fix bug where 'got up -c commit path' deleted unrelated files from work tree Problem reported by Timo Myyrä
Stefan Sperling 99495ddb 2021-01-10T23:48:51 add a 'reference' directive to remote repositories in got.conf(5) Make use of this in 'got clone' to persist -R option arguments given on the command line in the cloned repository's got.conf(5) file.
Stefan Sperling 0c8b29c5 2021-01-05T17:22:14 add a 'fetch-all-branches' configuration setting to got.conf(5) Set fetch-all-branches in the got.conf(5) file created by 'got clone -a' in order to make a future 'got fetch' act like 'got fetch -a' by default.
Stefan Sperling 300ea754 2021-01-05T15:28:52 silence a printf in our gitconfig parser; this code shouldn't print to stdout