Commit Briefs

Thomas Adam

fix 'got fetch' downloading too many objects in some cases

Always announce all local references to the server when fetching changes. We used to do this only in mirror mode. In regular mode only refs/tags and refs/remotes/origin were announced, which could result in unnecessary downloads if relevant objects exist in refs/heads or elsewhere.


Thomas Adam

portable: add FreeBSD support

This adds the capability to compile got-portable on FreeBSD.


Thomas Adam

portable: initial Linux compilation

This commit modifies the GoT main branch to be able to compile it under linux.


Stefan Sperling

rename got_fetch_parse_uri() to got_dial_parse_uri()

This function is now being used by both 'got fetch' and 'got send' so its former name was misleading.


Stefan Sperling

de-duplicate a constant used by both 'got fetch' and 'got send'

Both GOT_FETCH_PKTMAX and GOT_SEND_PKTMAX had the same value. Declare this value as GOT_PKT_MAX in got_lib_pkt.h instead.


Stefan Sperling

move duplicated dial_ssh() and dial_git() functions into a common file

These functions are used by 'got send' and 'got fetch' in order to open network connections to a server. Move them into new file lib/dial.c and declare relevant functions in got_dial.h and lib/got_lib_dial.h. No functional change.


Stefan Sperling

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


Christian Weisgerber

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

fix error checking in dial_ssh()


Stefan Sperling

make close(2) failure checks consistent; check 'close() == -1' everywhere

ok millert, naddy



Stefan Sperling

avoid signed vs unsigned comparisons in fetch.c

ssizeof() macro idea courtesy of millert@ ok millert@








Christian Weisgerber

Stop including <sys/syslimits.h> directly.

POSIX says the limits defined there are available from <limits.h>, which almost all affected source files already included anyway. ok millert stsp


Christian Weisgerber

use the POSIX standard endian functions and explicitly include <endian.h>

ok stsp


Christian Weisgerber

do not rely on <zlib.h> to pull in <unistd.h>

ok stsp


Sebastien marie

don't override port configuration with explicit argument if the url doesn't contains it

it permits to .ssh/config to be honored same diff from stsp@


Stefan Sperling

stop verifying pack file checksum in the main process during clone/fetch

Both got-fetch-pack and got-index-pack now verify the pack file checksum. This means we can avoid reading the entire pack file in the main process just to verify its checksum and avoid a noticable stall between fetching and indexing on slow machines.