upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/bin/git_remote_nostr/push.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-03-03 13:08:56 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-03-04 12:48:37 +0000
commita55d4150066456084fd18987acf014c18d0da976 (patch)
treeb6df894e60bb4fbc8854a76b8036b8a76922010b /src/bin/git_remote_nostr/push.rs
parentf91a0d00bafe2af1f6b6828c3de3d3e5d65153c3 (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/push.rs')
-rw-r--r--src/bin/git_remote_nostr/push.rs13
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,