Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | ssh/recv, schema: Add repos.contrib_requirements | Runxi Yu | 2025-02-19 | 5 | -11/+38 |
| | |||||
* | css: .commit-id { work-break: break-word; } | Runxi Yu | 2025-02-19 | 1 | -0/+1 |
| | |||||
* | all: Remove error wrapping | Runxi Yu | 2025-02-19 | 5 | -39/+9 |
| | | | | | I'm undecided on how I wrap errors in this project. I'll just return errors directly for now. This will probably be adjusted later. | ||||
* | hooks: Ignore error value of the last conn.Write() | Runxi Yu | 2025-02-19 | 1 | -1/+1 |
| | |||||
* | ssh/recv: Remove unused err_unauthorized_push | Runxi Yu | 2025-02-19 | 1 | -3/+0 |
| | |||||
* | hooks: Use ssh stderr directly instead of going through hook | Runxi Yu | 2025-02-19 | 2 | -134/+101 |
| | |||||
* | *.go: Reformat | Runxi Yu | 2025-02-19 | 2 | -3/+2 |
| | |||||
* | hooks: Reject non-FF contrib pushes for now | Runxi Yu | 2025-02-19 | 1 | -36/+68 |
| | | | | We actually intend to create special refs for this in the future. | ||||
* | repo/contrib/one: Add missing error check | Runxi Yu | 2025-02-19 | 1 | -0/+4 |
| | |||||
* | hooks: Add TODOs on where to create MRs and MR history points | Runxi Yu | 2025-02-19 | 1 | -0/+8 |
| | |||||
* | repo/index: Don't show HTTP clone URL as it's the same as the Web URL | Runxi Yu | 2025-02-19 | 1 | -5/+2 |
| | |||||
* | *.go: Use lowercase error values | Runxi Yu | 2025-02-19 | 8 | -15/+15 |
| | |||||
* | repo/contrib: Fix destination_commit param | Runxi Yu | 2025-02-19 | 1 | -1/+1 |
| | |||||
* | repo/contrib: Display merge request diffs | Runxi Yu | 2025-02-19 | 6 | -55/+175 |
| | |||||
* | http: Add blank contrib/%d template | Runxi Yu | 2025-02-19 | 3 | -1/+36 |
| | |||||
* | contrib/index: Remove erroneous go-git/v5 | Runxi Yu | 2025-02-19 | 1 | -2/+0 |
| | |||||
* | repo/contrib: Remove unnecessary blank assign | Runxi Yu | 2025-02-19 | 1 | -2/+0 |
| | |||||
* | http: Fix detecting subgroups with separator_index | Runxi Yu | 2025-02-19 | 1 | -1/+1 |
| | | | | | | In eabdb3c93cd7118deb5745cca7be9f11a196a9b8 we caused an error message whenver subgroups are used which was written erroneously, causing e.g. the forge front page to be handled here. | ||||
* | url.go: Reformat | Runxi Yu | 2025-02-19 | 1 | -1/+1 |
| | |||||
* | contrib: Add contrib/MR index page | Runxi Yu | 2025-02-19 | 5 | -7/+89 |
| | |||||
* | http: Consistently use redirect_with{out,}_slash, never r.URL.Path | Runxi Yu | 2025-02-19 | 2 | -5/+20 |
| | |||||
* | hooks: Check error on conn.Write | Runxi Yu | 2025-02-18 | 1 | -12/+36 |
| | |||||
* | http: Refactor more handler code duplication into the router | Runxi Yu | 2025-02-18 | 6 | -47/+42 |
| | |||||
* | TODO: Update (e.g. potentially using fasthttp in the future) | Runxi Yu | 2025-02-18 | 1 | -6/+7 |
| | |||||
* | git_hooks_client.c: Don't print wrongly-lengthed cookies | Runxi Yu | 2025-02-18 | 1 | -2/+1 |
| | |||||
* | *.go: Reformat | Runxi Yu | 2025-02-18 | 2 | -1/+4 |
| | |||||
* | http_server.go: Error out on subgroups | Runxi Yu | 2025-02-18 | 1 | -0/+6 |
| | |||||
* | *.tmpl: Update <title>'s | Runxi Yu | 2025-02-18 | 7 | -7/+7 |
| | |||||
* | README.md: Add more mirrors | Runxi Yu | 2025-02-18 | 1 | -0/+2 |
| | |||||
* | ssh_server.go: Don't use path.Join for config.HTTP.Root | Runxi Yu | 2025-02-18 | 1 | -2/+1 |
| | |||||
* | *.go: Add some comments for docs | Runxi Yu | 2025-02-18 | 17 | -20/+52 |
| | |||||
* | README.md: Mention that anonymous pushes to contrib/ are possible now | Runxi Yu | 2025-02-18 | 1 | -1/+2 |
| | |||||
* | git_hooks_handle: Allow anonymous pushes to contrib/ | Runxi Yu | 2025-02-18 | 1 | -2/+74 |
| | |||||
* | main.go: Remove stale UNIX domain sockets | Runxi Yu | 2025-02-18 | 1 | -4/+35 |
| | |||||
* | hooks: Fix the race condition that causes EPIPE | Runxi Yu | 2025-02-18 | 2 | -0/+17 |
| | | | | | | | | | | | | The hooks handler in the main daemon didn't wait for the hook client to write fully, and sometimes prematurely closes the connection, causing the hook client's splice to return EPIPE (or SIGPIPE if the signal handler wasn't installed). To remedy this, we call shutdown(sock, SHUT_WR) in the client, so that attempts to read on the server side return EOF. Then we can simply use io.Copy(&buf, conn) on the server side to fetch all of the data into a buffer. | ||||
* | repo_index.html: Move the repo description before the clone URLs | Runxi Yu | 2025-02-18 | 1 | -6/+6 |
| | |||||
* | repo_commit.html: Move the commit message out of the table | Runxi Yu | 2025-02-18 | 1 | -4/+3 |
| | |||||
* | git_hooks_client.c: Ignore SIGPIPE | Runxi Yu | 2025-02-18 | 1 | -0/+6 |
| | |||||
* | git_hooks_client.c: Allow ECONNRESET when splicing sock -> stderr | Runxi Yu | 2025-02-18 | 1 | -1/+2 |
| | | | | | Not exactly sure what's happening, but it looks like conn.Close() in Go sometimes produces an ECONNRESET in here. | ||||
* | 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 |
| |