Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Revert "style.css: Make it more concise" | Runxi Yu | 2025-02-18 | 1 | -35/+69 |
| | | | | | | This reverts commit ff7e33a9c443fd49a67664d01e50655cc1dc58d3. Broke too much stuff. | ||||
* | Revert "style.css: Fix .chunk-addition" | Runxi Yu | 2025-02-18 | 1 | -5/+3 |
| | | | | This reverts commit 9f19bcb50de2ced13a22bbe44078d8a47bf9ce41. | ||||
* | style.css: Fix .chunk-addition | Runxi Yu | 2025-02-18 | 1 | -3/+5 |
| | |||||
* | hooks, etc.: Restructure concurrency and data flow | Runxi Yu | 2025-02-17 | 2 | -31/+29 |
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously we accepted handler connections at hooks_handle and used a mess of channels and concurrent maps to let receive_pack handle the session. This doesn't work well because there are conditions where a push occurs but the hook is not called, e.g. when the destination branch is up to date. There is no reliable way of checking whether the subprocess is going to call the hook or not; it's technically possible to parse stderr but that interface is not guaranteed to be stable and IIRC has changed in the past). So receive_pack would be waiting on the channel to receive a hooks connection to handle but it'll never receive one, causing a deadlock. This entire thing was overengineered and was very prone to error. Here we let receive_pack put the cookie into the map, then start and wait for the subprocess to finish. When the hook actually runs and connects to its UNIX domain socket, the handler would check its cookie within the map. If the hook doesn't run, then nothing happens. The git-receive-pack subprocess blocks the execution of the SSH handler, and when git-receive-pack exists, the SSH handler (using a defer) deletes the cookie from the map. There may be caveats in signal handling or other cases that cause the cookie to be deleted from the map prematurely. | ||||
* | remote_url.go: Don't use path.Join (it strips :// into :/) | Runxi Yu | 2025-02-17 | 1 | -3/+3 |
| | |||||
* | style.css: Make it more concise | Runxi Yu | 2025-02-17 | 1 | -69/+35 |
| | |||||
* | ssh_handle_receive_pack.go: Move unauthorized rejection | Runxi Yu | 2025-02-17 | 1 | -4/+6 |
| | |||||
* | git_hooks_handle.go: Remove err_not_unixconn | Runxi Yu | 2025-02-17 | 1 | -1/+0 |
| | | | | | As this always suggests a programming mistake, we do not check the type assertion, causing it to panic if the types don't match. | ||||
* | ssh_handle_receive_pack.go: Allow pushes for now | Runxi Yu | 2025-02-17 | 1 | -1/+1 |
| | |||||
* | ssh_handle_receive_pack.go: Rename c -> deployer_channel | Runxi Yu | 2025-02-17 | 1 | -3/+3 |
| | |||||
* | hooks, etc.: Authenticate hooks, and handle them in the spawning thread | Runxi Yu | 2025-02-17 | 3 | -3/+87 |
| | |||||
* | go.mod: Bump lindenii-common (cmap split into ComparableMap and Map) | Runxi Yu | 2025-02-17 | 2 | -3/+3 |
| | |||||
* | git_hooks_handle.go: Read argv from hook | Runxi Yu | 2025-02-17 | 1 | -7/+33 |
| | |||||
* | git_hooks_client: Send argc/argv over the UNIX domain socket | Runxi Yu | 2025-02-17 | 1 | -5/+34 |
| | |||||
* | git_hooks_handle.go: Refactor for clarity | Runxi Yu | 2025-02-17 | 1 | -14/+13 |
| | |||||
* | README.md: Prominently note Lindenii's own instance | Runxi Yu | 2025-02-17 | 1 | -0/+6 |
| | |||||
* | style.css: :focus -> :focus-visible | Runxi Yu | 2025-02-17 | 1 | -3/+3 |
| | | | | | | | | Users who actually click on the header label won't get that focus outline any more. It's still provided for keyboard users, for whom the outline may be necessary for accessibility. References: https://stackoverflow.com/questions/31402576 | ||||
* | go.mod: go-billy is now indirect | Runxi Yu | 2025-02-17 | 1 | -1/+1 |
| | |||||
* | Makefile: Compile static Go binary | Runxi Yu | 2025-02-17 | 1 | -1/+1 |
| | |||||
* | style.css: Reformat and improve checkbox accessibility | Runxi Yu | 2025-02-17 | 2 | -13/+19 |
| | | | | | | | | Previously the expandable checkboxes were { display: none; } which made them impossible to focus via the keyboard. Here we change it to { opacity: 0; position: absolute; }, so it becomes keyboard-focusable. Then we add an outline to the <label> when the checkbox is focused so users could visually identify that the checkbox has been focused. | ||||
* | git_hooks_client.c: Explain the code in more detail | Runxi Yu | 2025-02-17 | 1 | -7/+28 |
| | |||||
* | main.go: Restructure for uniformity | Runxi Yu | 2025-02-17 | 1 | -25/+19 |
| | |||||
* | git_hooks_handle.go: Exit on UID mismatch, handle >1 connections | Runxi Yu | 2025-02-17 | 1 | -15/+21 |
| | |||||
* | git_hooks_handle.go, etc.: Listen for connections from hooks | Runxi Yu | 2025-02-17 | 3 | -14/+39 |
| | |||||
* | git_hooks_client.c: Splice socket to stderr | Runxi Yu | 2025-02-17 | 1 | -15/+42 |
| | | | | This allows the daemon to send status messages to the hook handler. | ||||
* | Makefile: Don't use --long in git-describe | Runxi Yu | 2025-02-17 | 1 | -1/+1 |
| | | | | We don't need the commit ID if it is known to match a tag. | ||||
* | README.md: Clarify build dependencies | Runxi Yu | 2025-02-17 | 1 | -1/+2 |
| | |||||
* | git_hooks_client.c: Clarify error messages | Runxi Yu | 2025-02-17 | 1 | -10/+10 |
| | |||||
* | git_hooks_client.c: Get return value from unix socket | Runxi Yu | 2025-02-17 | 1 | -1/+20 |
| | |||||
* | database.go: Merge name_desc_t; remove misc.go | Runxi Yu | 2025-02-17 | 2 | -11/+5 |
| | |||||
* | {remote_url,ssh_server}.go: Use path.Join instead of trimming and adding | Runxi Yu | 2025-02-17 | 2 | -4/+5 |
| | |||||
* | misc.go: Remove environ_to_map as unused | Runxi Yu | 2025-02-17 | 1 | -14/+0 |
| | |||||
* | *_handle_*_pack.go: Pass env LINDENII_FORGE_HOOKS_SOCKET_PATH | Runxi Yu | 2025-02-17 | 3 | -0/+6 |
| | |||||
* | *.go: Reformat | Runxi Yu | 2025-02-17 | 2 | -2/+1 |
| | |||||
* | git_hooks_deploy.go: Deploy hooks to filesystem | Runxi Yu | 2025-02-17 | 2 | -0/+55 |
| | |||||
* | git_hooks_handle.go: Move from git_hooks.go | Runxi Yu | 2025-02-17 | 1 | -0/+0 |
| | |||||
* | git_init.go: git_bare_init_with_default_hooks | Runxi Yu | 2025-02-17 | 3 | -5/+35 |
| | |||||
* | README.md: s/PGP/SSH/ for commit signature verification | Runxi Yu | 2025-02-17 | 1 | -2/+2 |
| | | | | Git supports SSH signatures now, and IMO they're far superior to GPG. | ||||
* | README: Fix typo (sr.ht's CI is builds.sr.ht, not git.sr.ht) | Runxi Yu | 2025-02-17 | 1 | -1/+1 |
| | |||||
* | repo_{info,upload_pack}.go: Use system git-upload-pack for HTTP too | Runxi Yu | 2025-02-17 | 2 | -29/+79 |
| | |||||
* | ssh_handle_receive_pack: Use system git-receive-pack | Runxi Yu | 2025-02-17 | 1 | -33/+18 |
| | |||||
* | ssh_handle_upload_pack: Use system git-upload-pack | Runxi Yu | 2025-02-17 | 1 | -33/+19 |
| | |||||
* | git_hooks_client: Restructure for clarity | Runxi Yu | 2025-02-17 | 1 | -23/+28 |
| | |||||
* | git_hooks_client: Produce useful error message on missing env var | Runxi Yu | 2025-02-17 | 1 | -0/+1 |
| | |||||
* | git_hooks_client: Ensure stdin is a pipe | Runxi Yu | 2025-02-17 | 1 | -1/+22 |
| | |||||
* | *: Restructure build system | Runxi Yu | 2025-02-17 | 3 | -6/+7 |
| | |||||
* | config.go: git.hooks_socket | Runxi Yu | 2025-02-17 | 2 | -1/+4 |
| | |||||
* | git_hooks_client: Splice stdin | Runxi Yu | 2025-02-17 | 2 | -10/+15 |
| | | | | | | Requires stdin to be a pipe. So `cat | ./git_hooks_client` works while `./git_hooks_client` in a terminal directly does not (character devices are not pipes). | ||||
* | resources.go: Embed git_hooks_client/* | Runxi Yu | 2025-02-17 | 1 | -0/+1 |
| | |||||
* | git_hooks{.go,_client}: Add stub for git hook clients | Runxi Yu | 2025-02-17 | 4 | -0/+90 |
| |