Commit Briefs

defb6deb66 Thomas Adam

handle missing parent commits while coloring commits in got-read-pack (portable)

When a parent is not present in the pack file, handle this situation gracefully rather than erroring out. Fixes a regression introduced with recent got-read-pack coloring changes where commands such as 'got send' could fail with 'got-read-pack: object not found'.



532c57c6a9 Thomas Adam

whitespace and unwrap a line; no functional changes


d22b3dbc4e Thomas Adam

rework got-read-pack's commit coloring loop

Port the parent commit coloring fix to got-read-pack, and ensure that it starts off with the same state as the main process. got-read-pack did not have access to the main process's ids array, and was thus working with a different initial state. With these changes the same commit traversal happens regardless of whether coloring is "offloaded" to got-read-pack or not (verified manually by placing debug printfs). ok jamsek


88b1641021 Thomas Adam

fix pack exclusion via an ancestor commit

When a commit is first discovered as a commit which should be included in the pack, but is later found to be a parent of a commit which should be excluded from the pack, gotadmin pack correctly excluded the commit itself but failed to exclude this commit's parents. This bug is the reason why our test suite did not notice that gotd was not protecting references when clients did not send a pack file. In our test case, these parents are in the 'keep' set already and were never added to the 'skip' set. A useless pack was built which included those parents and nothing else. Add a test which triggers the bug via gotadmin pack. ok jamsek


81a1b9add1 Thomas Adam

style(9) only; no functional changes

Reflow lines exceeding 80 columns; replace Allman with K&R braces; and line continuation whitespace. ok stsp@


0ef3ddaa20 Thomas Adam

fix gotd failing to protect references when the client sends an empty pack

Found by martijn@ ok jamsek



8603059233 Thomas Adam

portable: set next version


fad17fea5c Thomas Adam

portable: release 0.108 (tags/0.108)


27d18ca830 Thomas Adam

fix a typo in CHANGES


87175bacef Thomas Adam

bump version number


7256f9d302 Thomas Adam

CHANGES for 0.108


bd73cd25ae Thomas Adam

sync dist file list




472bdb824c Thomas Adam

tog: don't make users wait for the worktree diff to quit

Reported by naddy: if the user opens tog and quickly quits before the log thread has finished fetching work tree state for displaying dirty work tree entries, the main thread waits for the log thread to finish before acting on the user's quit input. This produces a noticeable lag between entering 'q' and tog actually terminating. Pass a pointer to the quit flag to the worktree diff cancel callback so we can act on it immediately without making the user wait. tested by naddy who confirmed it greatly reduces the lag


acca3e784b Thomas Adam

do not delete objects reached via nested tags during 'gotadmin cleanup'

Make gotadmin cleanup resolve multiple levels of nested tags, in order to ensure that objects referenced via nested tags will not get deleted. Add test coverage for this edge case.


8517c370c5 Thomas Adam

do not delete directly referenced trees and blobs during 'gotadmin cleanup'

We only considered referenced commit and tag objects during cleanup. Directly referenced trees or blobs were seen as unreferenced, and deleted during cleanup. Add test coverage for this problem and fix it.



5e8d594500 Thomas Adam

remove a todo item that's done (gotadmin cleanup)


223f4ba8a5 Thomas Adam

plug memleak and ensure fd is valid before passing to close(2)

While here, fix potential NULL deref in gotadmin cleanup and pack error paths. ok stsp@


44e1226a20 Thomas Adam

make gotadmin cleanup pack the repository before cleaning

Our cleanup implementation is only safe to use after everything referenced has been packed into a single pack file. Otherwise, the algorithm we use for checking pack redundancy might remove small packs which contain objects that other objects depend on. The easy fix for this issue is to have 'gotadmin cleanup' create the required pack file before cleaning up, making cleanup safe by default. This happens to be what 'git gc' does as well. ok jamsek


794a213ff7 Thomas Adam

switch to fseeko() and tweak error checking in file_is_binary()

provided by mark during review of previous change


6861dde046 Thomas Adam

remove full content comparison loop from got status

We are going to run modified files through the diff engine anyway. As a bonus speed-up tweak, skip conflict marker detection in binary files found on disk.