|
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
|
|
c8d1f14f
|
2021-06-23T15:39:58
|
|
explicitly include <endian.h> for be32toh()
|
|
08736cf9
|
2021-06-23T10:16:23
|
|
fix imsg header includes in pack_create.c
|
|
f6343036
|
2021-06-22T20:00:44
|
|
new -I option for 'got status' to show files which match an ignore pattern
|
|
05118f5a
|
2021-06-22T19:37:20
|
|
implement gotadmin pack, indexpack, and listpack commands
|
|
e6bcace5
|
2021-06-22T19:34:53
|
|
initial port of git9's pack file creation code to gameoftrees; thank you, Ori!
|
|
136ec6c9
|
2021-06-22T19:18:55
|
|
forward-declare struct got_packidx to make got_lib_pack.h self-contained
|
|
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.
|
|
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.
|
|
1c4cdd89
|
2021-06-20T21:07:54
|
|
fix bogus 'permission denied' error when a file at work tree root is removed
ok naddy
|
|
b4f37570
|
2021-06-19T16:32:39
|
|
mark got_pack_stop_privsep_child() static; it is only used inside pack.c
|
|
cc2a8ef4
|
2021-06-19T16:12:52
|
|
fix a leaky ibuf. ok stsp
|
|
779e1159
|
2021-06-18T14:14:49
|
|
expose the reflist_insert() helper function as got_reflist_insert()
This will be needed by 'gotadmin pack'.
|
|
9a8dc2b3
|
2021-06-18T14:10:55
|
|
fix deltas with trailing data that is smaller than the minimum chunk size
|
|
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.
|
|
7550e799
|
2021-06-18T13:59:46
|
|
check for errors from emitdelta() in got_deltify()
|
|
aa51f4a4
|
2021-06-18T13:57:59
|
|
handle fseek in got_deltify() instead of in stretchblk(); simplifies the code
|
|
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.
|
|
9ca9aafb
|
2021-06-18T13:36:51
|
|
introduce got_object_id_queue_copy()
This will be required by a future 'gotadmin pack' command.
|
|
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.
|
|
f34b169e
|
2021-06-18T13:28:25
|
|
Allow for skipping the base object header in got_deltify().
|
|
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
|
|
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.
|
|
1d0f4054
|
2021-06-17T08:56:43
|
|
check for close(2) error in got_repo_close() and propagate errors up
ok tracey
|
|
991ff1aa
|
2021-06-15T22:16:22
|
|
close all opened repo->gitdir_fd's and set open_repo static. ok naddy (with static change)
|
|
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@
|
|
68bdcdc2
|
2021-06-11T17:10:50
|
|
addblk() may seek in its input file; reposition the file pointer afterwards
|
|
a893025f
|
2021-06-11T17:02:57
|
|
addblk: iterate over the correct number of entries after growing the array
ok naddy
|
|
e89540a9
|
2021-06-11T17:02:13
|
|
addblk: be more careful about expanding the blocks array when we outgrow it
fixes + ok naddy
|
|
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
|
|
0c9eeee2
|
2021-06-05T09:32:56
|
|
avoid uninitialized error being returned from got_repo_get_packfile_info()
|
|
3b9e6fcf
|
2021-06-05T09:28:54
|
|
simplify deflate checksumming code; fixes errors with upcoming 'gotadmin pack'
tweak + ok naddy
|
|
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.
|
|
1af628f4
|
2021-06-03T12:38:42
|
|
switch merge_file_cb() to using merge_file() instead of merge_blob()
|
|
eec2f5a9
|
2021-06-03T12:14:35
|
|
decouple merge_file() parameters for 2nd derived version and merge target file
|
|
dc082d4a
|
2021-06-03T11:57:58
|
|
in merge_file(), remove allocation of a base_path which is unused
|
|
07bb0f93
|
2021-06-02T09:26:42
|
|
move merge_file()'s f_deriv parameter next to the f_orig parameter
|
|
db590691
|
2021-06-02T09:24:51
|
|
make merge_file() accept FILEs instead of paths for orig and deriv inputs
|
|
67a66647
|
2021-05-31T09:20:56
|
|
refactor merge_file() such that it no longer requires a blob object parameter
|
|
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
|
|
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@
|
|
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
|
|
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
|
|
9069347b
|
2021-05-20T09:58:35
|
|
improve error reporting when delta application fails
|
|
dbbf4a5f
|
2021-05-20T09:51:59
|
|
allow got_deltify_free(NULL); will be needed by 'gotadmin pack'
|
|
932dbee7
|
2021-05-19T13:58:22
|
|
fix wrong function name in error message; pointed out by Mikolaj Kucharski
|
|
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
|
|
a3af57b8
|
2021-05-10T11:26:06
|
|
remove unused worktree-related includes from lib/repository.c
|
|
1fee9f40
|
2021-04-13T08:28:24
|
|
fix 3-way merge of files which lack a final \n
problem found by jrick
ok millert
|
|
20662ea0
|
2021-04-10T13:31:30
|
|
introduce 'gotadmin info'
|
|
762d73f4
|
2021-04-10T13:13:56
|
|
introduce got_object_open_loose_fd() for library-internal use
|
|
509c9973
|
2021-04-10T13:11:17
|
|
add got_packidx_get_packfile_path() for library-internal use
|
|
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.
|
|
0f58026f
|
2021-04-05T17:51:07
|
|
add a missing STATUS_EXISTS notification in update_blob()
|
|
7495ec13
|
2021-04-04T14:24:39
|
|
fix open file descriptor leak in error path of read_object_header_privsep()
|
|
ac62b712
|
2021-03-30T14:50:44
|
|
when reading a pack index byte-swap fields at compile-time where possible
suggested by mpi@ ages ago
|
|
6c414261
|
2021-03-30T01:26:42
|
|
cap pack file cache size at 1/8 of the current open file desciptor limit
|
|
61303e6e
|
2021-03-30T01:22:29
|
|
fix off-by-one in got_repo_cache_pack()
|
|
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.
|
|
4d9042b3
|
2021-03-24T14:17:56
|
|
fix error checking in dial_ssh()
|
|
4cc1f028
|
2021-03-23T15:01:29
|
|
fix use of an uninitialized stat buffer during work tree status crawl
found by naddy
ok naddy jrick
|
|
22403ab7
|
2021-03-22T16:20:51
|
|
deltify.c: explicitly include <endian.h> for be64toh()
|
|
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
|
|
59d1e4a0
|
2021-03-10T22:49:22
|
|
implement raw object data access; this will be required for packing
|
|
69aa0e90
|
2021-03-10T22:49:21
|
|
substantial rewrite of deltify.c; operate on plain files only
|
|
5788893e
|
2021-03-10T22:49:21
|
|
fix off-by-one error in delta length; from ori
git9 commit fbb2fb7c87d8edf58e22c84f575853dc9de79ac4
|
|
f364801d
|
2021-03-10T22:49:21
|
|
first pass over deltify.c: adapt coding style and data types; make it compile
|
|
2a0e67f7
|
2021-03-10T22:49:21
|
|
Ori has authorized a licence change to OpenBSD's license template
|
|
56e7a15f
|
2021-03-10T22:49:21
|
|
add deltify.c, unmodified from git9, with license header added
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
e7abd6b6
|
2021-01-22T21:47:37
|
|
fix missing close(2) error check in got_worktree_close()
|
|
08578a35
|
2021-01-22T11:05:05
|
|
make close(2) failure checks consistent; check 'close() == -1' everywhere
ok millert, naddy
|
|
56b63ca4
|
2021-01-22T11:04:47
|
|
make fclose(3) failure checks consistent; check 'fclose() == EOF' everywhere
ok millert, naddy
|
|
a6b21eef
|
2021-01-21T19:10:08
|
|
add missing braces around multi-line if-statement in got_worktree_close()
|
|
a06ff56f
|
2021-01-21T18:33:50
|
|
fix a use after free()
ok jrick stsp
|
|
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ä
|
|
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.
|
|
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.
|
|
300ea754
|
2021-01-05T15:28:52
|
|
silence a printf in our gitconfig parser; this code shouldn't print to stdout
|
|
7a90b680
|
2021-01-02T20:57:19
|
|
oops, initialize linesize before calling getline(3); from millert
|
|
9bdd68dd
|
2021-01-02T20:46:01
|
|
replace fparseln(3) with getline(3), for better portability
ok stsp
|
|
f0ff8d4c
|
2020-12-26T23:14:26
|
|
fix tag object leak introduced in previous commit
|
|
24202e46
|
2020-12-26T23:08:51
|
|
add tagged object IDs to reference list object ID map
Fixes display of "/tags/..." commit ID decorators in tog which was
broken in previous commits.
|
|
a53af95f
|
2020-12-26T23:04:46
|
|
fix error return from got_reflist_object_id_map_create()
|
|
f193b038
|
2020-12-26T22:39:55
|
|
rename got_reflist_object_map_free to got_reflist_object_id_map_free
|
|
d9dff0e5
|
2020-12-26T21:32:01
|
|
switch reflist to TAILQ; insert elements more efficiently for sorted input
ok naddy
|
|
84de9106
|
2020-12-26T20:48:43
|
|
Add a refs argument to got_repo_match_object_id(), replacing 'resolve_tags'
Make use of this where possible to avoid re-reading references from disk.
ok naddy
|
|
7b5b670e
|
2020-12-25T21:38:17
|
|
implement an object ID map for reference lists
ok naddy
|
|
4c4ce67b
|
2020-12-25T21:38:17
|
|
fix assignment to wrong pointer in got_ref_dup()
ok naddy
|
|
9a02f8b7
|
2020-12-21T12:59:27
|
|
switch to strerror_r(3) in error.c for thread-safety
|
|
c884fd0a
|
2020-12-21T12:59:27
|
|
introduce got_custom_error array to support multiple errors in flight
This is still not thread-safe but at least avoids errors overwriting each
other in single-threaded contexts.
|
|
ccf6dd5e
|
2020-12-19T14:09:38
|
|
avoid signed vs unsigned comparisons in fetch.c
ssizeof() macro idea courtesy of millert@
ok millert@
|
|
5a8b373c
|
2020-12-18T15:55:18
|
|
fix parsing of tag objects which lack a tag message
This problem could be triggered with the u-boot repository:
$ git clone --bare https://gitlab.denx.de/u-boot/u-boot.git
$ got log -r u-boot.git
got-read-pack: bad object data
got: bad object data
$
|
|
e8bfb8f3
|
2020-12-18T15:52:25
|
|
fix path existence check in got_object_tree_path_changed()
A symptom of this was a segfault in 'got blame distrib/miniroot/install.sub'
with the OpenBSD src.git from github, reported by jrick.
The problem was that the commit graph traversed one commit too far.
This could be more easily reproduced with 'got log':
got log -c 05f568 -P distrib/miniroot/install.sub
Which listed two commits instead of just the first one:
05f568ecc6aadefa1aff9064a29e798874a71409 <-- install.sub first created here
7c0d87f00e480cdf004324dad6f3e6f4418f8f42
"distrib/miniroot" exists in 7c0d87f00e480cdf004324... but not in the parent
of this commit. Ensure that we traverse the full path in tree1 even if an
intermediate tree2 cannot be opened. Instead of reporting success and a file
change if we can't traverse further through tree2, we now hit this failing
attempt to open the file 'install.sub' in tree object 180aa33df8d1 (tree1):
te1 = find_entry_by_name(tree1, seg, seglen);
if (te1 == NULL) {
err = got_error(GOT_ERR_NO_OBJ);
goto done;
}
fix tested and ok jrick
|
|
6d5a9006
|
2020-12-16T11:16:27
|
|
add fd field to got_repository, modify got_packidx_open to use fds
These changes are intended to make got more compatible with
FreeBSD's Capsicum.
ok stsp
|
|
a615e0e7
|
2020-12-16T00:08:58
|
|
implicitly mark all files in work tree as up-to-date after rebase/histedit
This should always be correct, since rebase and histedit start out with a
clean and single-base-commit worktree, and end up committing all changes
across the entire work tree when they are successful.
tested by jrick and myself
|
|
73e7eb7d
|
2020-12-15T23:45:34
|
|
add got_error_fmt()
got_error_fmt() could eventually replace got_error_path() which has already
been used to construct errors with strings that are not actually paths...
ok millert@
|