aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* ssh/recv, schema: Add repos.contrib_requirementsRunxi Yu2025-02-195-11/+38
|
* css: .commit-id { work-break: break-word; }Runxi Yu2025-02-191-0/+1
|
* all: Remove error wrappingRunxi Yu2025-02-195-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 Yu2025-02-191-1/+1
|
* ssh/recv: Remove unused err_unauthorized_pushRunxi Yu2025-02-191-3/+0
|
* hooks: Use ssh stderr directly instead of going through hookRunxi Yu2025-02-192-134/+101
|
* *.go: ReformatRunxi Yu2025-02-192-3/+2
|
* hooks: Reject non-FF contrib pushes for nowRunxi Yu2025-02-191-36/+68
| | | | We actually intend to create special refs for this in the future.
* repo/contrib/one: Add missing error checkRunxi Yu2025-02-191-0/+4
|
* hooks: Add TODOs on where to create MRs and MR history pointsRunxi Yu2025-02-191-0/+8
|
* repo/index: Don't show HTTP clone URL as it's the same as the Web URLRunxi Yu2025-02-191-5/+2
|
* *.go: Use lowercase error valuesRunxi Yu2025-02-198-15/+15
|
* repo/contrib: Fix destination_commit paramRunxi Yu2025-02-191-1/+1
|
* repo/contrib: Display merge request diffsRunxi Yu2025-02-196-55/+175
|
* http: Add blank contrib/%d templateRunxi Yu2025-02-193-1/+36
|
* contrib/index: Remove erroneous go-git/v5Runxi Yu2025-02-191-2/+0
|
* repo/contrib: Remove unnecessary blank assignRunxi Yu2025-02-191-2/+0
|
* http: Fix detecting subgroups with separator_indexRunxi Yu2025-02-191-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: ReformatRunxi Yu2025-02-191-1/+1
|
* contrib: Add contrib/MR index pageRunxi Yu2025-02-195-7/+89
|
* http: Consistently use redirect_with{out,}_slash, never r.URL.PathRunxi Yu2025-02-192-5/+20
|
* hooks: Check error on conn.WriteRunxi Yu2025-02-181-12/+36
|
* http: Refactor more handler code duplication into the routerRunxi Yu2025-02-186-47/+42
|
* TODO: Update (e.g. potentially using fasthttp in the future)Runxi Yu2025-02-181-6/+7
|
* git_hooks_client.c: Don't print wrongly-lengthed cookiesRunxi Yu2025-02-181-2/+1
|
* *.go: ReformatRunxi Yu2025-02-182-1/+4
|
* http_server.go: Error out on subgroupsRunxi Yu2025-02-181-0/+6
|
* *.tmpl: Update <title>'sRunxi Yu2025-02-187-7/+7
|
* README.md: Add more mirrorsRunxi Yu2025-02-181-0/+2
|
* ssh_server.go: Don't use path.Join for config.HTTP.RootRunxi Yu2025-02-181-2/+1
|
* *.go: Add some comments for docsRunxi Yu2025-02-1817-20/+52
|
* README.md: Mention that anonymous pushes to contrib/ are possible nowRunxi Yu2025-02-181-1/+2
|
* git_hooks_handle: Allow anonymous pushes to contrib/Runxi Yu2025-02-181-2/+74
|
* main.go: Remove stale UNIX domain socketsRunxi Yu2025-02-181-4/+35
|
* hooks: Fix the race condition that causes EPIPERunxi Yu2025-02-182-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 URLsRunxi Yu2025-02-181-6/+6
|
* repo_commit.html: Move the commit message out of the tableRunxi Yu2025-02-181-4/+3
|
* git_hooks_client.c: Ignore SIGPIPERunxi Yu2025-02-181-0/+6
|
* git_hooks_client.c: Allow ECONNRESET when splicing sock -> stderrRunxi Yu2025-02-181-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 Yu2025-02-181-35/+69
| | | | | | This reverts commit ff7e33a9c443fd49a67664d01e50655cc1dc58d3. Broke too much stuff.
* Revert "style.css: Fix .chunk-addition"Runxi Yu2025-02-181-5/+3
| | | | This reverts commit 9f19bcb50de2ced13a22bbe44078d8a47bf9ce41.
* style.css: Fix .chunk-additionRunxi Yu2025-02-181-3/+5
|
* hooks, etc.: Restructure concurrency and data flowRunxi Yu2025-02-172-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 Yu2025-02-171-3/+3
|
* style.css: Make it more conciseRunxi Yu2025-02-171-69/+35
|
* ssh_handle_receive_pack.go: Move unauthorized rejectionRunxi Yu2025-02-171-4/+6
|
* git_hooks_handle.go: Remove err_not_unixconnRunxi Yu2025-02-171-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 nowRunxi Yu2025-02-171-1/+1
|
* ssh_handle_receive_pack.go: Rename c -> deployer_channelRunxi Yu2025-02-171-3/+3
|
* hooks, etc.: Authenticate hooks, and handle them in the spawning threadRunxi Yu2025-02-173-3/+87
|