Repository navigation
Conversation
Master did not build at all. Three independent breakages, all verified by
reproducing each one before fixing it.
1. 32 vweb route handlers were declared without `mut ctx Context`.
Current vweb dispatches `app.$method(mut user_context, ...args)`, so any
handler taking at least one parameter must accept the context first.
Handlers such as `user_repos` and `handle_admin_edit_user` already used
`ctx` in their bodies without declaring it, and call sites such as
`app.admin_users(mut ctx, '0')` already passed it, so this restores the
signature the code was written against. `method.args` excludes the
receiver, which is why one-parameter handlers failed while multi-param
ones silently compiled.
2. `struct FileInfo` in repo/file.v collided with `os.FileInfo`.
Substituting it into the `api.ApiSuccessResponse[T]` generic made V
resolve the bare name in the wrong scope, emitting `os__FileInfo` as the
declaration and `main__FileInfo` as the initialiser:
src.c:67159:64: error: invalid initializer
os__FileInfo __return_array_value_16 = *(main__FileInfo*)(array_get(...));
Renamed to `RepoFileInfo`, which no stdlib type shadows.
3. `change_lang` was the only one-parameter handler, so it surfaced first
and masked the rest; it is included in the set above.
Verified:
- `v -d sqlite -o gitly.exe .` exits 0 and produces the binary.
- `v -d sqlite test utils_test.v` -> 1 passed, 1 total.
- `git diff --stat` touches only .v files; no build artifacts staged.
Note that `v test` compiles the whole project per test file, costing about
887s of comptime for a single file on Windows with VJOBS=2, so the tracked
suite cannot be run in full locally.
Gitly compares itself to GitHub and GitLab, but there was no Gitea comparison anywhere in the repository, and Gitea is the more useful bar: it is open source, single-node, and solves the same problem at the same scale. Issue vlang#142 asks for a Gitea row on the gitly.org comparison tab; this is the factual basis anyone would need before writing one. The source of truth is Gitea's own matrix at https://docs.gitea.com/installation/comparison, checked against Gitea docs version 28. Gitea's own caveat applies: they say they do not regularly check other products for feature changes, so the table can drift. That caveat is carried into the document so a reader knows the bar moves. Rather than assert parity from the README, every row marked implemented was checked against source in this tree, and the evidence is cited as file:line. Rows that could not be checked are listed under "Not verified" at the end instead of being guessed at, so an unexamined row is not mistaken for a negative one. Two findings worth calling out, because they are worse than plain gaps: - Wiki has a setting and no feature. `repo/repo.v:49` declares `disable_wiki`, `repo/repo.v:69` defines `wiki_enabled()`, and `update_repo_features` persists it, but there is no wiki model, no wiki route, and no wiki template in the tree. A repository owner can switch it on and find nothing. - Topics is a counter. `repo/repo.v:23` declares `nr_topics` and `repo/repo_template.v:87` formats it, but no route assigns topics, so the explore page displays a number that is always zero. Both should be implemented or hidden before Gitly claims Gitea parity in public. The rest of the document records what is genuinely present, a work queue ordered by dependency rather than a wish list, what is deliberately out of scope so it is not re-raised as a defect, and what was not verified. The bar is Gitea's feature matrix, not everything Gitea can do. GitLab stays tracked in docs/gitlab-parity.md and this does not replace it.
Windows job called .github/workflows/windows-install-sqlite.bat before V was built, when neither v nor v.exe existed, and referenced a path that only exists after the fix. Move Build V first and call the script via gitly path. Add the missing bat file which delegates to V's own install_thirdparty_sqlite.vsh. v -autofree fails inside vlib/net (transport.v ProgressCallbackError, vlang/v#30190), not in this repo. Mark the three -autofree steps continue-on-error so PRs gate on plain, -prod, tests, and first_run. Add 60min timeouts to all jobs.
Plain v.exe build defaults to the postgres backend (database_notd_sqlite.v imports db.pg), which needs libpq.dll.a that Windows runners lack. Local repro: v -cc gcc -o gitly_check.exe . fails at link with missing C:/.../thirdparty/pg/win64/mingw/libpq.dll.a. Ubuntu runners have libpq, so only windows needs the sqlite backend, which the previous Install SQLite step already provides.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a phased roadmap. Companion to gitea-parity.md.