lib/fetch.c


Log

Author Commit Date CI Message
Omar Polo 8934ea8b 2022-02-14T13:14:36 factorize imsg_clear calls after imsg_flush failures imsg_clear frees and closes resources allocated as part of enqueueing imsgs so it's a no-op after reads. discussed with and ok stsp@
Omar Polo 688fe08b 2022-02-14T13:14:36 fix fd leak in got_fetch_pack, ok stsp@
Stefan Sperling 197088a4 2021-12-27T05:20:04 whitespace
Stefan Sperling f8b19efd 2021-10-13T11:09:15 use RB_TREE instead of STAILQ to manage packindex bloom filters; much faster
Stefan Sperling dd088d95 2021-10-06T19:49:06 let 'got fetch' send all references to the server to avoid redundant downloads Problem reported by naddy. ok naddy
Stefan Sperling 965803d3 2021-09-28T20:55:16 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.
Stefan Sperling 5e5da8c4 2021-09-05T20:51:29 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 77d7d3bb 2021-09-05T20:39:50 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 d65a88a2 2021-09-05T20:19:14 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 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
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 4d9042b3 2021-03-24T14:17:56 fix error checking in dial_ssh()
Stefan Sperling 08578a35 2021-01-22T11:05:05 make close(2) failure checks consistent; check 'close() == -1' everywhere ok millert, naddy
Stefan Sperling d9dff0e5 2020-12-26T21:32:01 switch reflist to TAILQ; insert elements more efficiently for sorted input ok naddy
Stefan Sperling ccf6dd5e 2020-12-19T14:09:38 avoid signed vs unsigned comparisons in fetch.c ssizeof() macro idea courtesy of millert@ ok millert@
Stefan Sperling 16aeacf7 2020-11-26T12:54:19 use size_t for loop indices to avoid signedness warnings; from emaste@freebsd
Sebastien marie 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@
Stefan Sperling f8c47409 2020-10-28T15:52:46 fix permissions mode bits for fetched pack files; patch by Alisdair MacLeod
Stefan Sperling e03cc834 2020-09-24T16:47:06 handle failed connection attempts to git:// servers; patch by jrick
Stefan Sperling 66cb1a7f 2020-09-24T13:45:36 strip trailing slashes from repository path in got_fetch_parse_uri()
Stefan Sperling 0921e08f 2020-09-24T10:49:36 remove redundant leading slashes from repository path when parsing URIs
Christian Weisgerber 23c57b28 2020-09-11T19:44:18 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 78fb0967 2020-09-09T21:41:22 use the POSIX standard endian functions and explicitly include <endian.h> ok stsp
Christian Weisgerber 81a12da5 2020-09-09T19:35:32 do not rely on <zlib.h> to pull in <unistd.h> ok stsp
Sebastien marie 59d5e252 2020-04-21T17:51:05 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 465971ee 2020-03-24T15:32:54 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.
Stefan Sperling 1d72a2a0 2020-03-24T14:08:03 represent packfile hash as byte array in the privsep layer, not as object ID
Stefan Sperling 92dc95a8 2020-03-24T14:07:59 always initialize pack hash output parameter of got_fetch_pack()
Stefan Sperling 0e4002ca 2020-03-21T21:49:13 add support for fetching arbitrary references to 'got clone' and 'got fetch'
Stefan Sperling 2690194b 2020-03-21T18:17:12 remove GOT_FETCH_DEBUG and toggle fetch debug output with -v option instead
Stefan Sperling 393fb88d 2020-03-21T17:28:29 handle reference-only updates in 'got fetch' where server sends an empty pack
Stefan Sperling 9c52365f 2020-03-21T10:37:19 properly terminate the ssh process after fetching via SSH
Stefan Sperling 41b0de12 2020-03-21T10:18:15 add support for listing remote branches and tags to 'got clone' and 'got fetch'
Stefan Sperling 4ba14133 2020-03-20T20:23:18 add support for fetching specific branches to 'got clone' and 'got fetch'
Stefan Sperling 659e7fbd 2020-03-20T15:55:08 fetch only HEAD branch and tags by default; add -a option to fetch everything
Stefan Sperling 62a4c94c 2020-03-20T15:01:15 support non-default port numbers with SSH and tweak URI parser port handling
Stefan Sperling 469dd726 2020-03-20T11:44:14 add support for repository mirrors to 'got clone' and 'got fetch'
Stefan Sperling 76911fd2 2020-03-19T23:02:36 allow 'got fetch' to operate on a non-bare git repository
Stefan Sperling f1c6967f 2020-03-19T22:43:44 fix chopped display of git-server's progress output
Stefan Sperling 7848a0e1 2020-03-19T16:57:27 implement 'got fetch'
Stefan Sperling 9a682fbe 2020-03-19T14:43:38 add support for Git's SCP style URLs to got_fetch_parse_uri()
Stefan Sperling 68999b92 2020-03-18T16:13:48 allow controlling verbosity of 'got clone' with -q and -v options
Stefan Sperling 3af5bc7c 2020-03-18T16:13:48 do not allow passing arbitrary options to SSH
Stefan Sperling 967f7d1f 2020-03-18T16:13:48 remove unused constants
Stefan Sperling d582f26c 2020-03-18T16:13:48 write large objects to disk when resolving deltas; raise in-mem delta threshold
Stefan Sperling ee448f5f 2020-03-18T16:13:47 apply unveil(2) to 'got clone'
Stefan Sperling a117fd10 2020-03-18T16:13:46 make addrinfo error messages more obvious
Stefan Sperling 4788f1ce 2020-03-18T16:13:46 extract large objects to a temporary file in got-index-pack
Stefan Sperling f826addf 2020-03-18T16:13:45 use a dedicated imsg for sending the pack fetch output file descriptor
Stefan Sperling 73ab1060 2020-03-18T16:13:45 use a dedicated imsg for sending the pack index output file descriptor
Stefan Sperling 12491971 2020-03-18T16:13:45 show path to temporary pack file in argv of got-fetch-pack and got-index-pack
Stefan Sperling 668a20f6 2020-03-18T16:13:41 rewritten got-index-pack; sorry about the monster commit
Stefan Sperling baa9fea0 2020-03-18T16:11:33 send indexing progress via an imsg
Stefan Sperling 85e8591f 2020-03-18T16:11:32 in got_fetch_pack, use a separate set of variables for fetching and indexing
Stefan Sperling 849f7557 2020-03-18T16:11:32 check pack file hash in the main process
Stefan Sperling d2cdc636 2020-03-18T16:11:32 send pack file download progress information over imsg
Stefan Sperling 531c3985 2020-03-18T16:11:32 add support for git protocol sidebands and display server progress
Stefan Sperling 33501562 2020-03-18T16:11:30 prepare for providing refs we already have in fetch request imsg currently we always send and expect an empty list
Stefan Sperling ceee4c0f 2020-03-18T16:11:28 remove unused arguments from got_fetch_pack()
Stefan Sperling 07e52fce 2020-03-18T16:11:27 rename got_fetch() to got_fetch_pack()
Stefan Sperling 20eb36d0 2020-03-18T16:11:27 attempt to connect to a server before creating a local repo
Stefan Sperling 66cba96f 2020-03-18T16:11:27 use GOT_OBJECTS_PACK_DIR instead of variants of the same which contain typos
Stefan Sperling d9b4d0c0 2020-03-18T16:11:27 make got_fetch() provide reference info to callers and set refs in cmd_clone()
Stefan Sperling bb64b798 2020-03-18T16:11:26 have got_fetch() require an open got_repository to be passed in
Stefan Sperling 09838ffc 2020-03-18T16:11:26 make got_fetch() expect URI information in parsed form
Stefan Sperling 82ebf666 2020-03-18T16:10:34 tweak parse_uri() function, declare it as public API, and add a test for it
Stefan Sperling ee61b6d3 2020-03-18T16:10:33 make 'got clone' create references; cloned repositories are now usable
Stefan Sperling 8e278d17 2020-03-18T16:10:33 plug leaks in error paths of got_fetch()
Stefan Sperling abe0f35f 2020-03-18T16:10:33 parse symrefs from server capabilities and transmit them over imsg
Stefan Sperling 4312a498 2020-03-18T16:10:32 send the 'host' parameter to support git-daemon's virtual hosting
Stefan Sperling 75fd4eb2 2020-03-18T16:10:32 actually catch connection errors in got_fetch()
Stefan Sperling 5cc27ede 2020-03-18T16:10:32 make protocol dial helpers return struct got_error style errors
Stefan Sperling 8f2d01a6 2020-03-18T16:10:32 send fetch progress over imsg
Stefan Sperling 84f2fa52 2020-03-18T16:10:32 rename got_clone() to got_fetch()
Stefan Sperling afa77e03 2020-03-18T16:10:31 actually create a pack and an index in the right place
Stefan Sperling 279090e1 2020-03-18T16:10:31 pass an object_id * to got_privsep_send_index_pack_req()
Stefan Sperling 22b6b490 2020-03-18T16:10:31 add a .git suffix to cloned repositories by default
Stefan Sperling a251e40e 2020-03-18T16:10:31 GOT_IMSG_ACK isn't needed; just fill the pipe, reading responses will block
Stefan Sperling fe4e1501 2020-03-18T16:10:30 use got_opentemp_named_fd() instead of open() for tempfiles in got_clone()
Stefan Sperling 93658fb9 2020-03-18T16:10:30 Add initial support for network protocol. Ported from git9 by Ori Bernstein.