Commits
- Commit:
564a8b0186283eb09c998068c2431c5428aca9f3
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
got_imsg_raw_delta: use struct instead of buffer for id
ok stsp@
- Commit:
d77295e3494661d565f3c3e60d10df899d4d681c
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
got_imsg_raw_delta_request: use struct instead of buffer for id
ok stsp@
- Commit:
dd57e4abbc5d876d106027d907d8a2045a83656a
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fmt
- Commit:
b6f6773045fc2a75fd5de6bf0d880c03c4f27aaa
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
got_imsg_packed_object: use struct instead of buffer for id
ok stsp@
- Commit:
fcbb06bf6925b542428b937afc9f37446058e748
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
replace malloc+memcpy with strndup. no functional change intended
ok stsp@
- Commit:
3fe5d0fee4a9e03753cf693bf839bf26cb872d54
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
got send: show server error
Print the error message reported by the remote server when failing to
update a branch (for e.g. because of a server-side check.) Reported by
gonzalo@, with help and ok stsp@.
- Commit:
3efd8e3122b7d03a046d23fd5eed22c1b78f8ceb
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
introduce gotd(8), a Git repository server reachable via ssh(1)
This is an initial barebones implementation which provides the absolute
minimum of functionality required to serve got(1) and git(1) clients.
Basic fetch/send functionality has been tested and seems to work here,
but this server is not yet expected to be stable.
More testing is welcome. See the man pages for setup instructions.
The current design uses one reader and one writer process per repository,
which will have to be extended to N readers and N writers in the future.
At startup, each process will chroot(2) into its assigned repository.
This works because gotd(8) can only be started as root, and will then
fork+exec, chroot, and privdrop.
At present the parent process runs with the following pledge(2) promises:
"stdio rpath wpath cpath proc getpw sendfd recvfd fattr flock unix unveil"
The parent is the only process able to modify the repository in a way
that becomes visible to Git clients. The parent uses unveil(2) to
restrict its view of the filesystem to /tmp and the repositories
listed in the configuration file gotd.conf(5).
Per-repository chroot(2) processes use "stdio rpath sendfd recvfd".
The writer defers to the parent for modifying references in the
repository to point at newly uploaded commits. The reader is fine
without such help, because Git repositories can be read without
having to create any lock-files.
gotd(8) requires a dedicated user ID, which should own repositories
on the filesystem, and a separate secondary group, which should not
have filesystem-level repository access, and must be allowed access
to the gotd(8) socket.
To obtain Git repository access, users must be members of this
secondary group, and must have their login shell set to gotsh(1).
gotsh(1) connects to the gotd(8) socket and speaks Git-protocol
towards the client on the other end of the SSH connection.
gotsh(1) is not an interactive command shell.
At present, authenticated clients are granted read/write access to
all repositories and all references (except for the "refs/got/" and
the "refs/remotes/" namespaces, which are already being protected
from modification).
While complicated access control mechanism are not a design goal,
making it possible to safely offer anonymous Git repository access
over ssh(1) is on the road map.
- Commit:
8b925c6ccd3968917253ea191906a1710c40ed2d
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: add back sys/queue.h
Now that the handling of including sys/queue.h is better, there's no
need to remove those lines from the source. Copy the location of those
original sys/queue.h lines from upstream at the same line number, so as
to avoid any conflicts in the future.
- Commit:
e215b807ba3c0b3e54a5ea161e750ac3466a1b0e
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
get rid of unneeded recv_imsg_error calls
got_privsep_recv_imsg users don't need to bother to look whether the
imsg type is GOT_IMSG_ERROR because got_privsep_recv_imsg already
takes care of that and turns GOT_IMSG_ERROR into `struct got_error's
automatically.
ok stsp@
- Commit:
9b5e2ebd207db582ccb731c9543408456af87000
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
rework got_privesp_recv_tree to use got_privsep_recv_imsg
ok stsp@
- Commit:
ff5e1f096349d36a0ba772c0d78a21b2ab54e060
- From:
- Josh Rickmar <jrick@zettaport.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
add signer_id option to got.conf(5)
Setting this option will cause 'got tag' to sign all created tags using
the SSH key, unless overridden by the -s flag.
ok stsp@
- Commit:
871bd038071fdaf6129995ef9f56226616b47d25
- From:
- Josh Rickmar <jrick@zettaport.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
create and verify tags signed by SSH keys
This adds a new -s flag to 'got tag' that specifies the signer
identity (for example, a key file) of the tagger. The tag object will
include a signature that validates each of the tag object headers and
the tag message.
Verifying these signed tags requires maintaining an allowed signers
file which maps signer identities (i.e. the email address of the
tagger) to SSH public keys. See ssh-keygen(1) for more details of the
allowed signers file. After creating this file and providing the path
to it in got.conf(5) using the allowed_signers option, tags may be
verified using with 'got tag -V tag_name'. The return code will be
non-zero if a signature fails to verify.
ok stsp@
- Commit:
39b829747f18e3f29fe9a14487752d62711b1c0e
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix imsg_add TREE_ENTRY: Result too large on i386
There's a math error when computing the size of one entries in the
batching code. Reported by semarie, ok semarie stsp
- Commit:
ec2b23c5d2570888a1d83ce2e8eee5a90eeff695
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
implement support for commit coloring in got-read-pack for speed
ok op, tracey
- Commit:
ef20f542049f5928fa256eb470801089d0b1048b
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
build with -Wmissing-prototypes
ok stsp@
- Commit:
f3002810d8c237e4b60bcf6e41864dbb757c5075
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix unexpected imsg error after incomplete enumeration in got-read-pack
reported by jrick and op@
ok op@
- Commit:
c26ee7add64b80ff74fa5d22df886393a52f9b41
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
memset all stack-allocated structs used to send messages; ok stsp@
- Commit:
1bb2bba217ad222aed1d79baf9d8025110130bd3
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
zero the whole struct got_imsg_object before sending it
otherwise some fields may be unitialized and fail the validation done on
the receiving side.
ok stsp@
- Commit:
8f3ec65d2190a456c91894e98d4d9bab1e33682f
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix a harmless off-by-one from previous commit
- Commit:
ef53e23c28efc2b91e6a2fbbb3a1e914a895745d
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix a bug in got_privsep_send_object_idlist() exposed by recent changes
The old code did not work correctly if only a single object Id was to
be sent to got-read-pack. Make got-read-pack error out if the list
of commits for object enumeration is empty to catch this problem if
it occurs again.
Found by the send_basic test, which was failing with GOT_TEST_PACK=1
ok tracey
- Commit:
e71f1e62ddab990a047fe827d13b25003a9b8014
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
let got-read-pack be explicit about whether it could enumerate all objects
This allows the main process to avoid looping over all object IDs again
in case the pack file used for enumeration is complete.
ok op@
- Commit:
774020352cebfc173153d3e48123e1ac922229a5
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
remove trailing whitespaces
- Commit:
623d55de6ed896de2a4767bd1866fa78326e08c4
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
compute object size, not pointer size
in this case they're luckily the same; got_imsg_object_idlist and
got_imsg_reused_delta only have one size_t long field.
ok stsp@
- Commit:
31d32634997bd59472b751d9fea87298edee75be
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
strictier validation for data received from libexec helpers
use correct error code and ok stsp@
- Commit:
12a8238ea919c7aa1d7dc6cf536d44025cf185d0
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
drop unused variable