Commits
- Commit:
2a83473170f99c9eb12c94532d036d8e02fbfd9e
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
for now, remove a workaround for http fetch that was added for unknown reasons
ok op@
- Commit:
ced242c2ebcf8284b1cb695dc144461cace5313c
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Tobias Heider <me@tobhe.de>
- Date:
Add initial read-only http fetch support using a got-http helper.
Currently we only support the smart protocol with a limited feature set.
ok stsp@ tobhe@
- Commit:
bbca1adf04e40d91b98c326953a147a37b94c817
- From:
- Omar Polo <op@omarpolo.com>
- Date:
remove unneded wbuf->fd = -1
There's no need to set the fd to -1 on ibufs created with imsg_create(3),
and it was probably never needed.
- Commit:
2c52c623be04b56400a5c94cc8d86b6fda214d16
- From:
- Omar Polo <op@omarpolo.com>
- Date:
convert to use imsg_get_fd()
While here also fix a fd leak in got-read-pack. We were dup'ing
imsg.fd without closing imsg.fd later; instead just use imsg_get_fd()
to extract the file descriptor.
Tested by falsifian and Kyle Ackerman, thanks!
'go ahead' stsp@
- Commit:
ae25a666dd4099105786ef32f1e6ebaf92abe64d
- From:
- Omar Polo <op@omarpolo.com>
- Date:
add some helper functions to compute hashes
This adds a set of functions to abstract over SHA1Init, SHA1Update,
SHA1Final, their respective SHA256 variants and how to compare digests.
Replace all the SHA1*() usage with the new APIs. It's a preparatory
step for sha256 handling.
ok stsp@
- Commit:
87a3ab84d3eb87b790e3d34aeec2c344a8d7375b
- From:
- Omar Polo <op@omarpolo.com>
- Date:
provide functions to parse/serialize different hashes
it abstracts over the hash type and ensures that object ids are zero'ed
before their sha1 digest is written. Needed by the incoming sha256
support.
ok stsp@
- Commit:
53bf0b541977b66862040d4b633fb6b5d3a3c6c8
- From:
- Omar Polo <op@omarpolo.com>
- Date:
rename lib/sha1.c to lib/hash.c
It will soon grow functions to deal with sha256 too. stsp@ agrees.
- Commit:
5822e79e39a8777984e08b5d89a8c55d6aa0356d
- From:
- Omar Polo <op@omarpolo.com>
- Date:
include sha2.h too where sha1.h is included
In preparation for wide sha256 support; stsp@ agrees. Change done
mechanically with
find . -iname \*.[cy] -exec sam {} +
X ,x/<sha1\.h>/i/\n#include <sha2.h>
- Commit:
1a0d06a3c2608bd281c3c156a9b008508983decf
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
fix "got fetch" hang against out-of-date remote repositories
Do not assume that remote repositories will always have our objects.
In Git protocol terms: Do not wait for an ACK from the server before
sending the final "done" message. Otherwise servers might be waiting
for more have-lines from us in order to find a common ancestor, which
will never be sent by us.
Problem reported by James Cook who also provided an initial test case
ok op@
- Commit:
118a625d39930284f891ea1285efc17fb3848cae
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
got: further fetch tweaks to prevent unintended fetches
Implement stsp's suggestion to only fetch remote's HEAD if the symref
refs/remote/*/HEAD exists, and its target no longer matches the remote
HEAD. This ensures users tracking a project won't miss a change in HEAD,
while also fixing the issue reported by naddy where HEAD was fetched by
default even though a specific, potentially less active, branch is cloned,
resulting in a repository with more commits than necessary.
In addition, unless 'got fetch -b <branch>' is used, the remote HEAD branch
will be fetched if branches are not set in got.conf and there is no work
tree to ascertain a branch, or said branches are not found on the server.
ok stsp@
- Commit:
4bff57b4b66990d6829cb83645d1f1d478ae0cea
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
backout got: always fetch remote HEAD except when -b is used
As pointed out by naddy, this behaviour is not ideal when users
want to limit their repository to a particular branch which will
diverge from HEAD over time, such as -stable branches.
See https://marc.gameoftrees.org/mail/1676388048.8632_0.html
- Commit:
2a19e2e21a876bbc4ae1999ca08ce4c8f2002158
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
got: always fetch remote HEAD except when -b is used
Rather than only fetch HEAD when there are no branches set in got.conf and
there is no branch to be inferred from a work tree, or said branches don't
exist on the server, always fetch HEAD unless 'got fetch -b branch' is used.
ok stsp@
- Commit:
f72ce919dd6d6c15679c5174c47912ac55be1e18
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Mark Jamsek <mark@jamsek.dev>
- Date:
make 'got fetch -b branch' error reporting more helpful
The patch to got-fetch-pack.c was written by stsp with only minor tweaks
by me. Regress updated to account for the change in reporting.
stsp's original got-fetch-pack.c diff ok op jamsek
ok stsp@
- Commit:
0dd7613ce65424868ec86f0623e38eb70d9a9321
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
special case 'got fetch -b <branch>' to only fetch <branch>
As discussed on irc, this drops the implicit remote HEAD fetch when -b is used.
got.1 has been updated to make the new fetch behaviour clear.
ok stsp@
- Commit:
ec218e165dfd906f44ad491671127ca4b6979ed0
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
got: use intermediate pointers to plug leak on realloc
And save worktree_branch_len for reuse.
ok stsp@ and op@
- Commit:
188f8dcf2c1c15bf37859e3b587bc6331fd5a097
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
fix interaction of 'got fetch -b', got.conf, and work tree
Without branches in got.conf for a remote, and without -b/-R options,
the fallback to HEAD would only work when not invoked in a work tree.
With this fix 'got fetch' should behave as described in the man page.
The -b option now overrides both got.conf and the fallback to the work
tree's branch.
And fallback to HEAD works as expected when invoked in a repository.
Also, do not strictly require remote repositories to provide a branch
from the refs/heads/ namespace. In such cases users should be able to
use -R to select something to fetch.
ok jamsek
- Commit:
0701e66c20d0558f1f7c72d7fb700be6fe376d3f
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got_imsg_fetch_ref: use struct instead of buffer for id
ok stsp@
- Commit:
4b4da3bbc7a791ba0d7d9d369dfe1e7b65f7eed4
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got_imsg_fetch_have_ref: use struct instead of buffer for id
ok stsp@
- Commit:
00b3e9ae14f04a45f1ca7445bade6b41a6e8a1c5
- From:
- Omar Polo <op@omarpolo.com>
- Date:
replace malloc+memcpy with strndup. no functional change intended
ok stsp@
- Commit:
d8bacb933720b8819f0c4e76b004775aa1885b9b
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
got: minor refactor of got_pathlist_free() API
Accept flag parameter to optionally specify which pointers to free. This saves
callers looping through the list to free pointers.
ok + fix stsp@
- Commit:
9114dd430297e408815019c3bc1df29ba10a9fb8
- From:
- Mark Jamsek <mark@jamsek.dev>
- Date:
fix uninitialised fildes variables in libexec helpers
Reviewed and uncovered as part of the diff in the forthcoming commit
(pathlist API refactor).
ok stsp@
- Commit:
99fd9ff4bf6d3bee4a29f13ef4ae81aa36fdd4d5
- From:
- Omar Polo <op@omarpolo.com>
- Date:
always cast ctype' is*() arguments to unsigned char
ok stsp@
- Commit:
c9f1ac46710e3ac672c769862ae51b838c3c8e46
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
make 'got clone -b' work for repositories which lack a HEAD reference
ok op@
- Commit:
74737945d01fa40a64535be8018c8dc44859b524
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
avoid looping over SHA1Update() in got-fetch-pack; suggested by millert@
- Commit:
dd4ea8bd9bd04c88bb85c1b7f67a7f7b3e43b94e
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
got-fetch-pack: fix wrong memmove length leading to dubious checksum failures
ok millert tracey