Commit graph

252 commits

Author SHA1 Message Date
f44865fa92 docs: add UnRegisterWebhook from RepoActor 2024-07-15 07:53:14 +01:00
b715755b91 feat: unregister webhooks form forge during shutdown
Closes kemitix/git-next#46
2024-07-15 07:39:06 +01:00
6c92f64f8b docs: add readmes to each crate to direct users to main crate
Closes kemitix/git-next#106
2024-07-14 20:58:58 +01:00
6981a7b5e3 docs: move main README into cli crate 2024-07-14 20:54:17 +01:00
69211a87a3 build: add more metadata for crates.io 2024-07-14 20:47:19 +01:00
e2b545ae39 fix: move default.toml inside crate that uses it 2024-07-14 20:22:32 +01:00
639e561be6 fix: move server-default.toml inside crate that uses it 2024-07-14 20:22:32 +01:00
adf56c1b38 revert: fix: explicitly specify version in each crate
This reverts commit cd93d047cb.
2024-07-14 16:39:17 +01:00
cd93d047cb fix: explicitly specify version in each crate
crates.io doesn't appear to like taking the version from the workspace
crate
2024-07-14 14:24:41 +01:00
c289617ba9 fix: typo and missing repository entry in Cargo.toml files 2024-07-14 13:32:07 +01:00
e410cfc4f1 chore: add license and descriptions for each crate 2024-07-14 10:40:34 +01:00
10e63894c2 docs: server-actor: add readme showing message paths 2024-07-13 08:16:24 +01:00
57a614bad3 fix: don't modify config of external repos
The git config files of external repos are read-only.

This is the only place where we make reference to a remote named
'origin', so this also closes kemitix/git-next#85.

Closes kemitix/git-next#85
2024-07-12 18:52:57 +01:00
5f36282667 feat: recheck failed status
Should a status check for a transient reason and is re-run, this will
allow that to be detected without the need to restart the git-next
server or force a spurious rebase.

Closes kemitix/git-next#88
2024-07-12 08:05:41 +01:00
fd762e2bd2 feat: perform controlled shutdown on ctrl-c
Closes kemitix/git-next#94

Controlled shutdown includes attempting to unregister webhooks.
2024-07-11 19:19:04 +01:00
681b2c4c10 refactor: split messages and handlers for server-actor 2024-07-11 19:19:01 +01:00
7578ab3144 feat: log as an error when webhook url ends with a slash
Closes kemitix/git-next#87
2024-07-11 19:18:58 +01:00
7212154037 refactor: split ReceiveServerConfig handler
First handler, with original name, validates the server config.

The new second handler, ReceiveValidServerConfig, can then (re)start the
server without needing to validate the settings.
2024-07-11 19:18:55 +01:00
4276964f4d refactor: split server storage creation out from startup
Closes kemitix/git-next#75
2024-07-11 19:18:50 +01:00
9c20e780d0 feat: update auth of interal repos when changed in config
Closes kemitix/git-next#100
2024-07-10 09:05:36 +01:00
df352443b7 feat: GitDir tracks when repo is cloned by git-next 2024-07-06 15:08:13 +01:00
4e60be61f7 refactor: extract git::repository::factory module 2024-07-05 20:31:16 +01:00
5ab075c181 refactor: split git::repository::tests module 2024-07-05 20:12:17 +01:00
d9feaeaa7b chore: remove unused FakeOpenRepository 2024-07-05 20:12:17 +01:00
2e374d317a refactor: split git::repository::open::tests module 2024-07-05 20:12:17 +01:00
694135a10b fix: default log level is info
When RUST_LOG isn't set, the default log level is INFO rather than
ERROR.

Closes kemitix/git-next#104
2024-07-05 07:23:40 +01:00
c2953adba5 chore: remove unused token from github tests 2024-07-05 07:04:27 +01:00
7b19f3b66f chore: directly re-export function and type 2024-07-05 06:59:54 +01:00
12849d5a69 refactor: server no longer depends directly on git crate 2024-07-03 07:42:11 +01:00
3dec12de20 refactor: cli don't depend directly on git crate 2024-07-03 07:35:01 +01:00
83ce95776e fix: messages should always get delivered
Remove the async wrapper for sending messages as they were never being
delivered.
2024-07-02 18:51:40 +01:00
dfc0c1dc80 refactor: only start actor system when server starts 2024-07-01 06:54:07 +01:00
77d35e8a09 feat: load log levels from env RUST_LOG 2024-06-30 20:12:47 +01:00
c85eee85e9 refactor: file-watcher doesn't debug log on each loop 2024-06-30 20:12:35 +01:00
40c61fa9ff test: add more debug tracing 2024-06-30 19:42:09 +01:00
73ab149aba fix: github commit should use common headers 2024-06-30 19:30:22 +01:00
ae7933c79e fix: don't retry validation when non-retryable error
Closes kemitix/git-next#90
2024-06-30 18:48:49 +01:00
c9efbb9936 fix: ReceiveRepoConfig tries to send two messages
Similar to CloneRepo the handler tries to send two messages one after
the other. Leave it to WebhookRegistered handler to kick off the
ValidateRepo. Also update the README with the correct message sequence.
2024-06-30 16:59:24 +01:00
68005d757d fix: start validating repo after registering webhook
Clone Repo wasn't sending the second message, so workaround: have it be
sent after registering the webhook.
2024-06-30 16:54:26 +01:00
55d8ccb0bd feat: ignore github ping webhook messages
Closes kemitix/git-next#101
2024-06-30 15:20:00 +01:00
8fceafc3e1 refactor: repo-actor: replace Mutex with RwLock 2024-06-30 13:17:33 +01:00
73b416e3a0 refactor: git: replace Mutex with RwLock in Repository 2024-06-30 13:14:50 +01:00
52df2114e5 refactor: tests: repo-actor: use methods on RepoActorLog 2024-06-30 13:12:12 +01:00
3e137c6480 refactor: repo-actor: RepoActorLog: replace Mutex with RwLock 2024-06-30 12:40:17 +01:00
db90280641 fix: github: restarting server creates duplicate webhook for repo
The Github routine for registering a new webhook, wasn't removing any
existing matching webhooks. There is a test for this, but it doesn't
assert that the delete requests are made. (This is a limitation of
kxio).

Closes kemitix/git-next#102
2024-06-30 12:23:42 +01:00
975c9e315c fix: where repo config is in server should register webhook 2024-06-30 08:09:10 +01:00
0796df00d4 docs: fix typo 2024-06-30 08:00:51 +01:00
c571e9ee8d refactor: CloneRepo use actor::do_send to send LoadConfigFromRepo 2024-06-30 07:55:55 +01:00
32fb92fb8d refactor: remove dead code 2024-06-29 19:24:18 +01:00
717cc8b0bc refactor: update macro signatures and add documentation support 2024-06-29 18:26:19 +01:00
0fd33739c1 refactor: server: collapse tests to base of crate 2024-06-29 11:16:46 +01:00
113192042b refactos: extract server-actor crate 2024-06-29 11:14:09 +01:00
52d442f2b0 refactor: extract file-watcher-actor crate 2024-06-29 10:57:18 +01:00
2008afa4dd refactor: extract actor-macros crate 2024-06-29 10:49:12 +01:00
eba00a112f refactor: extract webhook actor 2024-06-29 08:25:16 +01:00
6d9eb0ab86 refactor: remove dead code 2024-06-29 07:01:31 +01:00
f460cd4b49 refactor: remove unused Forge Deref implementation 2024-06-29 07:01:31 +01:00
e585b07f6b tests: repo-actor: add more tests 2024-06-29 07:01:26 +01:00
ffab1986a7 refactor: repo-actor: rewrite tests using mockall 2024-06-27 18:58:47 +01:00
601e400300 refactor: forgejo: explain todo warnings 2024-06-20 19:09:50 +01:00
2cdaf39c0f refactor: git: use newtype 2024-06-20 19:06:24 +01:00
b9940cd205 tests: use println rather then eprintln in tests
This should reduce the noise in output when a test is running and passing.
2024-06-20 18:54:01 +01:00
8ce4528c88 chore: remove unused Fake repo facade 2024-06-20 18:28:05 +01:00
94ad2c441c refactor: create a RepositoryFactory trait 2024-06-20 18:28:01 +01:00
ea20afee12 refactor: config: use newtype 2024-06-19 08:16:54 +01:00
5e9f9eb80f refactor: start to use newtype macro 2024-06-19 06:45:45 +01:00
2e71e40378 refactor: add newtype macro 2024-06-16 08:00:00 +01:00
be78597331 tests: make TestRepository from git crate available to other crates 2024-06-14 09:05:11 +01:00
2acc43d3d6 chore: remove dead code 2024-06-14 08:19:55 +01:00
9b970835c8 refactor: clean up eprintln use 2024-06-13 20:00:04 +01:00
588666ffe1 tests: add more tests to git crate 2024-06-13 19:50:19 +01:00
926851db19 refactor: rewrite git crate's mock repository 2024-06-09 10:02:57 +01:00
dcd94736a9 refactor: git::push::reset takes all params as refs 2024-06-09 09:49:54 +01:00
c6a1d2c21b refactor: merge git::branch module into git::push 2024-06-09 09:49:54 +01:00
65e9ddf5db fix: remove unused GitDir::into_string() function 2024-06-09 09:49:54 +01:00
b5c0f5bd36 refactor: use given::a_name in config tests 2024-06-08 20:16:15 +01:00
aa817a8e95 refactor: tests: expand test given modules 2024-06-07 20:03:14 +01:00
271f4ec1dc tests: tidy up config, forgejo and git tests
Coverage for config, forge, forgejo and github is now 100%.
2024-06-06 17:45:33 +01:00
309e523cfe test: add more tests to forge-github crate 2024-06-06 07:57:44 +01:00
7b280a2a0a fix: github: as soon as any check fails, ignore any pending 2024-06-04 08:25:22 +01:00
46e2871e17 fix: github: use correct url to check CI status
There was a stray $ in the string interpolation (blame working on
Typescript for other projects) and the wrong query path.
2024-06-04 08:23:06 +01:00
e29c274aaf refactor: server: use thiserror 2024-06-03 20:34:01 +01:00
621e599b31 refactor: git: use thiserror and cleanup errors 2024-06-03 20:31:39 +01:00
0b8e41a8ec refactor: config: use thiserror and move tests about 2024-06-03 07:38:59 +01:00
235aee8b11 chore: remove unused dependencies
Identified using: cargo +nightly udeps --all-targets
2024-06-02 20:30:35 +01:00
c189aa3ad3 test: add more tests to forge-forgejo crate 2024-06-02 18:55:02 +01:00
98839c8a00 test: add more tests to forge crate 2024-06-01 12:03:30 +01:00
1010eaec64 tests: add more tests to config crate 2024-06-01 11:44:36 +01:00
1eb4ed6d23 fix: add missing list webhooks implementation 2024-05-31 08:09:00 +01:00
46b6d8680c feat: Add support for GitHub
This doesn't include GitHub Enterprise

Closes kemitix/git-next#86
2024-05-31 07:23:48 +01:00
206e64cd5b feat: Webhook query paths include forge alias
This allows for more than one forge to be configured and for the webhook
to correctly route incoming messages.
2024-05-29 19:35:50 +01:00
9f04b1ae6c fix: remove old implementation of forgejo get all branches 2024-05-28 06:45:49 +01:00
012668dd0a refactor: move git::remote_branches to git crate 2024-05-28 06:37:08 +01:00
f259179274 refactor: move git::read_file implementation to git crate 2024-05-26 18:22:15 +01:00
d0638fdbc4 refactor: move repo_clone implementation to git crate 2024-05-26 13:30:46 +01:00
f10dc25aeb refactor: merge git::validate module into git::validation 2024-05-26 09:20:08 +01:00
dd5532d3a3 refactor: move validate_positions into git crate 2024-05-26 09:20:05 +01:00
8a35911d00 refactor: get commit from from local repo (part 2/3)
Remove the legacy implementation
2024-05-26 08:07:12 +01:00
3642b2cdd1 fix: new commit_log matches original from API request
The original was including a lot of extra commits, those are now trimmed
to match the expected.
2024-05-25 20:36:24 +01:00
7a0247ea03 refactor: get commit log from local repo (step 1)
Avoid using a forge-specific API to get a commit log when the
information is already available locally in the cloned repo through a
generic git command.

The commit adds the new method of getting the commit log and compares it
with the original methods, logging if they match or not.

The updated results are returned only if they match.
2024-05-25 08:10:02 +01:00
7818b25a5c refactor: move forgejo branch test to forgejo crate 2024-05-24 07:07:01 +01:00
0202be19fe refactor: remove unused git branch error 2024-05-23 20:52:16 +01:00
4cd797ac0a build: forge only include forgejo crate when feature enabled 2024-05-23 19:41:50 +01:00
5253e136cc refactor: extract forge-forgejo crate 2024-05-23 19:36:05 +01:00
9e37c073c2 refactor(repo_actor): consitent use of config crate 2024-05-23 17:56:47 +01:00
17b1629cdf refactor(repo_actor): merge config and load modules 2024-05-23 17:53:36 +01:00
64cbe36dac refactor: move ForgeLike to git 2024-05-23 16:50:36 +01:00
639223fcaa refactor: improve consistency of use of git types 2024-05-23 16:19:28 +01:00
f2af849d0b refactor(forge): rename gitforge crate as forge 2024-05-23 16:04:38 +01:00
ebbb655bfc feat(server): config file watcher will respond to touch
You can now trigger a server reload by `touch`ing the
`git-next-server.toml` file.
2024-05-23 09:01:57 +01:00
d76be1197a test: don't record coverage for mock forge 2024-05-23 08:53:16 +01:00
4053563b30 refactor: move MessageToken to repo-actor crate 2024-05-23 08:52:42 +01:00
564e14a370 refactor(gitforge): disolve gitforge:errors module 2024-05-23 08:01:16 +01:00
db9b4220ee refactor: extract repo-actor and gitforge crates 2024-05-22 19:57:48 +01:00
ac25c9985e chore: remove feature declarations
git crate doesn't have and feature dependent code
2024-05-21 19:58:18 +01:00
df8ebc6af7 refactor(server): collapse type module into gitforge module 2024-05-21 19:47:01 +01:00
341dc97a51 refactor(git): add mock repository and tests
Repository is now behind an enum to allow selection of a mock Repsitory
for use in tests.
2024-05-21 19:47:01 +01:00
e5744e85ad fix(server): invalid webhook authorisations
Parameters had been passed in wrong order. Added strong types to prevent
a repeat.
2024-05-21 09:01:44 +01:00
c6c8dcedc5 feat(server): display expected auth in logs in invalid request 2024-05-20 07:46:23 +01:00
4977619c70 fix(server): don't use gix in server 2024-05-20 07:46:23 +01:00
c3c4c41c73 refactor(git): only expose OpenRepository from repository::open 2024-05-20 07:46:21 +01:00
70100f6dc5 refactor(git): reporitory errors don't leak implementation 2024-05-20 07:43:03 +01:00
155497c97f refactor(git): split mock, real and open into their files 2024-05-20 07:42:52 +01:00
f4b8401bb1 test(git): add more tests 2024-05-19 14:54:17 +01:00
f398fb3b6a feat(server/webhook): warn when message is dropped 2024-05-18 22:36:54 +01:00
9d0f2d1ba1 feat(server): don't log validation ok 2024-05-18 22:29:57 +01:00
ee83def127 feat(server): don't log individual internal messages 2024-05-18 22:26:44 +01:00
76472fa74a chore: remove unused dependency tempfile 2024-05-18 22:23:18 +01:00
6c06d63c57 chore: remove dependency pretty_assertions 2024-05-18 22:21:10 +01:00
d6ca6ea3b2 chore: remove dependency test-log 2024-05-18 22:20:07 +01:00
f1a6d5089b chore: remove unused dependency anyhow 2024-05-18 22:18:36 +01:00
f56ac321f4 chore: remove dependency on terrors 2024-05-18 22:16:17 +01:00
58e991b2b7 test(git): make repository more testable
Adds a layer around Repository to allow the use of a mock.

Mock has still to be implemented.
2024-05-18 20:37:03 +01:00
6757723b77 feat(server/webhook): log errors in webhook requests 2024-05-18 20:26:44 +01:00
c3a5e50ad5 test(git): add more tests 2024-05-18 07:37:04 +01:00
896e1cba42 test(config): add more tests 2024-05-17 20:26:33 +01:00
446300e786 refactor(git): rename reset as push 2024-05-16 14:45:25 +01:00
d87af324d6 refactor(server): more derive_more replacing boilerplate 2024-05-16 06:46:03 +01:00
f8375ed1fc refactor(server/config): rename RepoConfigValidationError as Error
It is never referenced directly outside of this module.
2024-05-15 20:46:29 +01:00
eb7d14bc33 refactor(git): more derive_more replacing boilerplate 2024-05-15 20:40:25 +01:00
d70baa4350 refactor(config): more derive_more replacing boilerplate 2024-05-15 07:55:05 +01:00
c374076323 refactor(git): more use of derive_more 2024-05-14 16:28:21 +01:00
ac3e1be261 test: add some tests 2024-05-14 07:59:31 +01:00
a7e7d12928 test(cli): add tests 2024-05-14 07:58:28 +01:00
a4694d48f6 refactor(config): replace boilerplate with derive_more 2024-05-13 21:03:33 +01:00
1e38330914 feat(git): add git_dir value to error when reset fails 2024-05-13 19:09:11 +01:00
4d352f005d refactor(server,config,git): extract modules config and git from server 2024-05-12 10:49:33 +01:00
740419ffb8 refactor: specify server dependency in workspace 2024-05-11 19:29:38 +01:00
87c762c59a chore: clean up dependencies for split crates 2024-05-11 19:14:06 +01:00
a8eedfcac5 fix: clippy fixes for tests 2024-05-11 18:58:47 +01:00