|
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@
|
|
4cc6a5a5
|
2020-12-15T22:42:20
|
|
add got_error_from_errno_fmt() for more flexibility in error messages
suggested by and ok millert
|
|
437adc9d
|
2020-12-10T08:29:04
|
|
add fd field to got_worktree, modify got_fileindex_entry_update to use fds
These changes are intended to make got more compatible
with FreeBSD's Capsicum.
ok stsp
|
|
f3b2b552
|
2020-12-10T16:58:11
|
|
sync files from diff.git b3fd1fa284e6207b923bd3c887364d9eb93fb340
|
|
785d65a4
|
2020-12-05T22:11:32
|
|
make got_repo_object_match_tag() work with absolute reference names
Bug triggered by naddy while testing a patch for tog.
ok naddy
|
|
41ad2652
|
2020-12-04T20:27:43
|
|
remove unused function got_path_get_absolute(); realpath(3) is usually better
|
|
dbb02f4d
|
2020-12-04T20:23:06
|
|
in got_repo_open(), let realpath(3) take care of relative paths
|
|
5e9266f9
|
2020-11-28T18:35:49
|
|
fix a typo that triggered "munmap: Invalid argument" in got blame on FreeBSD
ok stsp
|
|
16aeacf7
|
2020-11-26T12:54:19
|
|
use size_t for loop indices to avoid signedness warnings; from emaste@freebsd
|
|
9c659ea0
|
2020-11-22T13:25:32
|
|
do not forget to add an offset for line zero in diff_blobs()
Fixes a problem in 'tog diff' where the first line of the output was cut off.
|
|
763f29f6
|
2020-11-22T01:51:29
|
|
remove redundant lines of code from close_file2_and_reuse_file1()
|
|
751e0afb
|
2020-11-22T01:34:05
|
|
sync files from diff.git 86b603da3068dce115470492279dc6f86f17f60b
|
|
c354056f
|
2020-11-21T15:34:19
|
|
prevent potential fclose(NULL) in error path of diff_blobs()
|
|
1cb46f00
|
2020-11-21T15:34:19
|
|
consistently label removed files as "/dev/null" in diff headers
|
|
c4cd9c5b
|
2020-11-21T15:34:19
|
|
sync files from diff.git e4c510c1d83fe01247b6f59d855dffad81e4f26a
|
|
b4737997
|
2020-11-21T14:53:47
|
|
handle binary files in blame's custom file diff atomizer
|
|
64453f7e
|
2020-11-21T13:35:00
|
|
handle binary files in got/tog diff commands; add -a options to force text
|
|
b67f3bcb
|
2020-11-21T10:49:25
|
|
sync files from diff.git e51ebd83fa731d197ee4074ee2e94dbc0581078c
|
|
8c35ff14
|
2020-11-19T15:37:46
|
|
implement custom atomizer for blame to reuse data and mappings across commits
|
|
89dc8b78
|
2020-11-19T15:37:20
|
|
remove stdbool.h where it's not needed
|
|
be659d10
|
2020-11-18T17:18:23
|
|
fix type of filesize output parameter of got_object_blob_dump_to_file()
|
|
c33ebc60
|
2020-11-18T17:05:28
|
|
reallocate line_offsets array less often in got_object_blob_dump_to_file()
|
|
cca5682e
|
2020-11-18T16:34:28
|
|
allow for configuring a custom file atomizer with got_diff_get_config()
|
|
24e87ea3
|
2020-11-18T16:15:41
|
|
remove unused function got_diffreg_prepared_files()
|
|
cb7c1b68
|
2020-11-18T16:14:30
|
|
remove unused function got_diff_blob_prepared_file()
|
|
72254787
|
2020-11-18T16:12:35
|
|
simply got_diff_prepare_file() by letting callers worry about file creation
|
|
dea26038
|
2020-11-18T14:24:16
|
|
sync files from diff.git 29916bb6c0c248ca6fa5486cb9e081d92112e86c
|
|
c27a5e66
|
2020-11-18T13:48:26
|
|
new blame algorithm which compares commit N-1 to N; with help from Neels
|
|
f1cbc3bc
|
2020-11-18T13:48:23
|
|
decouple line_offsets/nlines output params of got_object_blob_dump_to_file()
|
|
62ad13c5
|
2020-11-16T20:55:57
|
|
remove unused empty function got_diff_dump_change()
|
|
f3c44083
|
2020-11-14T16:39:35
|
|
sync files from diff.git fe6d58fb52ea8d1041a8eb65e28a04816df67c08
|
|
8fa913ec
|
2020-11-14T13:19:18
|
|
remove now pointless 'check_disk' parameter of got_repo_map_path()
suggested by naddy
|
|
fe621944
|
2020-11-10T22:54:37
|
|
merge new diff implementation from the git.gameoftrees.org diff.git repository
This new diff implementation was started by Neels Hofmeyr during the u2k20
hackathon and now replaces diffreg.c code lifted from the OpenBSD base system.
The integration of this code into Got was done by me.
Got now uses the patience diff algorithm by default.
The diff.git repository will remain the primary repository for the diff code,
which already compiles and runs on other operating systems such as Linux.
Any fixes and improvements for files inherited from the diff.git repository
should be written against that repository and synced to got.git afterwards.
|
|
f6d8c0ac
|
2020-11-09T16:04:18
|
|
fix replacing symlinks with files
And add a test case which verifies that the inverse also works,
i.e. a symlink being replaced with a regular file.
problem reported and fix tested by jrick
|
|
63df146d
|
2020-11-09T16:03:35
|
|
fix missing unlink(tmppath) in error cases of install_blob()
|
|
2ac8aa02
|
2020-11-09T16:02:12
|
|
clear staged file type in file index entries whenever staged status is cleared
|
|
727173c3
|
2020-11-06T00:20:05
|
|
initialize sb.st_mode after stat(2) failure in got_worktree_resolve_path()
|
|
01740607
|
2020-11-04T20:18:53
|
|
avoid got_repo_map_path() in 'got blame'
'got blame' does not need access to the work tree. So far the work tree
was completely hidden with unveil(). We must now expose the work tree
while resolving the path, so unveil() calls are shuffled around slightly.
Failing realpath() calls would mess with path resolution otherwise.
There's a bug in got_worktree_resolve_path() where it failed to canonicalize
a path constructed from a user-specified path that does not exist on disk.
Note that this path falls into strncmp() a few lines down. I am fixing this
by adding canonicalization. Generally, joining paths with asprintf() and
comparing paths with strncmp() is fragile. A more general solution might be
needed but I am leaving that for another day.
ok naddy
|
|
3818e3c4
|
2020-11-01T16:28:46
|
|
convert all remaining instances of chmod(2) to fchmod(2)
ok stsp
|
|
0843a4ce
|
2020-10-31T04:54:20
|
|
use fchmod(2) instead of chmod(2). it is less racy, and we just opened the descriptor.
ok naddy@ stsp@
|
|
f8c47409
|
2020-10-28T15:52:46
|
|
fix permissions mode bits for fetched pack files; patch by Alisdair MacLeod
|
|
eef9542c
|
2020-10-22T20:37:50
|
|
preserve what was passed in if got_repo_map_path() can't figure out a path
problem found by + ok naddy
|
|
20b7abb3
|
2020-10-22T20:36:23
|
|
detect unknown repository format extensions (such as sha256 format)
ok millert
|
|
62d463ca
|
2020-10-20T22:43:59
|
|
indentation fixes
|
|
2513f20a
|
2020-10-20T21:09:01
|
|
plug memory leaks in error paths; found by naddy
|
|
20a2ad1c
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in schedule_for_deletion(); avoids const dirname(3)
ok naddy
|
|
fddefe3b
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in remove_ondisk_file(); avoids const dirname(3)
ok naddy
|
|
f5375317
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in install_blob() to avoid const dirname(3)
ok naddy
|
|
f4994adc
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in install_symlink() to avoid const dirname(3)
ok naddy
|
|
ce031e9e
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in is_bad_symlink_target()
ok naddy
|
|
ed6b5030
|
2020-10-20T21:09:01
|
|
use got_path_dirname() in merge_blob() instead of assuming const dirname(3)
ok naddy
|
|
3524bbf9
|
2020-10-20T21:09:01
|
|
make merge_file() use got_path_dirname() instead of assuming const dirname(3)
ok naddy
|
|
aedea96d
|
2020-10-20T21:09:01
|
|
adapt got_open_worktree to non-const dirname(3)
ok naddy
|
|
0c93d204
|
2020-10-20T21:09:00
|
|
tried_root in got_open_repo is not needed
ok naddy
|
|
aff6eea4
|
2020-10-20T21:09:00
|
|
handle non-const dirname in got_repo_open() and plug a memory leak
ok naddy
|