diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-03-03 13:08:56 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-03-04 12:48:37 +0000 |
| commit | a55d4150066456084fd18987acf014c18d0da976 (patch) | |
| tree | b6df894e60bb4fbc8854a76b8036b8a76922010b /src/bin/git_remote_nostr | |
| parent | f91a0d00bafe2af1f6b6828c3de3d3e5d65153c3 (diff) | |
add nostr.repo-relay-only config to limit publishing to repo relays
Adds a git config key nostr.repo-relay-only that, when set to true, causes
nostr events to be sent only to the repository's own relays, skipping the
user's personal write relays and default/blaster relays. Useful for
repositories that should not broadcast to the maintainer's personal relay set.
Set persistently via \`git config nostr.repo-relay-only true\` or in one step
with \`ngit init --repo-relay-only\`.
Diffstat (limited to 'src/bin/git_remote_nostr')
| -rw-r--r-- | src/bin/git_remote_nostr/push.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index ed0f7df..3b5e05d 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs | |||
| @@ -402,6 +402,13 @@ async fn create_and_publish_events_and_proposals( | |||
| 402 | 402 | ||
| 403 | // TODO check whether tip of each branch pushed is on at least one git server | 403 | // TODO check whether tip of each branch pushed is on at least one git server |
| 404 | // before broadcasting the nostr state | 404 | // before broadcasting the nostr state |
| 405 | let repo_relay_only = | ||
| 406 | if let Ok(Some(v)) = git_repo.get_git_config_item("nostr.repo-relay-only", None) { | ||
| 407 | v == "true" | ||
| 408 | } else { | ||
| 409 | false | ||
| 410 | }; | ||
| 411 | |||
| 405 | let relay_results = if events.is_empty() { | 412 | let relay_results = if events.is_empty() { |
| 406 | vec![] | 413 | vec![] |
| 407 | } else { | 414 | } else { |
| @@ -409,7 +416,11 @@ async fn create_and_publish_events_and_proposals( | |||
| 409 | client, | 416 | client, |
| 410 | Some(git_repo.get_path()?), | 417 | Some(git_repo.get_path()?), |
| 411 | events, | 418 | events, |
| 412 | user_ref.relays.write(), | 419 | if repo_relay_only { |
| 420 | vec![] | ||
| 421 | } else { | ||
| 422 | user_ref.relays.write() | ||
| 423 | }, | ||
| 413 | repo_ref.relays.clone(), | 424 | repo_ref.relays.clone(), |
| 414 | true, | 425 | true, |
| 415 | false, | 426 | false, |