diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-08-04 08:20:30 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-08-04 08:20:30 +0100 |
| commit | 6ae42e67d9da36f6c2e1356acba30a3a62112bc7 (patch) | |
| tree | 33c1ba06fc1bf79311a36693754b120ec8c67a33 | |
| parent | a7cabb96df30cd5d26f63affdb023b0706a387d1 (diff) | |
fix: `t` tag `revision-root` ~> `root-revision`
NIP-34 specifies patch revisions should have a `t` tag of
`root-revision` whereas we have been using `revision-root`.
this fixes it and and handles events created with the incorrect tag.
| -rw-r--r-- | src/bin/git_remote_nostr/push.rs | 9 | ||||
| -rw-r--r-- | src/lib/git_events.rs | 12 | ||||
| -rw-r--r-- | test_utils/src/lib.rs | 2 | ||||
| -rw-r--r-- | tests/git_remote_nostr/push.rs | 6 | ||||
| -rw-r--r-- | tests/ngit_send.rs | 19 |
5 files changed, 24 insertions, 24 deletions
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index 9ba7c30..d0cf923 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs | |||
| @@ -1365,11 +1365,10 @@ async fn get_proposal_and_revision_root_from_patch( | |||
| 1365 | bail!("thread root is not a git patch"); | 1365 | bail!("thread root is not a git patch"); |
| 1366 | } | 1366 | } |
| 1367 | 1367 | ||
| 1368 | if proposal_or_revision | 1368 | if proposal_or_revision.tags.iter().any(|t| { |
| 1369 | .tags | 1369 | t.as_slice().len() > 1 |
| 1370 | .iter() | 1370 | && ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str()) |
| 1371 | .any(|t| t.as_slice().len() > 1 && t.as_slice()[1].eq("revision-root")) | 1371 | }) { |
| 1372 | { | ||
| 1373 | Ok(( | 1372 | Ok(( |
| 1374 | EventId::parse( | 1373 | EventId::parse( |
| 1375 | &proposal_or_revision | 1374 | &proposal_or_revision |
diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs index 79f5772..8ba5419 100644 --- a/src/lib/git_events.rs +++ b/src/lib/git_events.rs | |||
| @@ -74,10 +74,10 @@ pub fn event_is_patch_set_root(event: &Event) -> bool { | |||
| 74 | 74 | ||
| 75 | pub fn event_is_revision_root(event: &Event) -> bool { | 75 | pub fn event_is_revision_root(event: &Event) -> bool { |
| 76 | (event.kind.eq(&Kind::GitPatch) | 76 | (event.kind.eq(&Kind::GitPatch) |
| 77 | && event | 77 | && event.tags.iter().any(|t| { |
| 78 | .tags | 78 | t.as_slice().len() > 1 |
| 79 | .iter() | 79 | && ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str()) |
| 80 | .any(|t| t.as_slice().len() > 1 && t.as_slice()[1].eq("revision-root"))) | 80 | })) |
| 81 | || (event.kind.eq(&KIND_PULL_REQUEST) | 81 | || (event.kind.eq(&KIND_PULL_REQUEST) |
| 82 | && event | 82 | && event |
| 83 | .tags | 83 | .tags |
| @@ -179,7 +179,7 @@ pub async fn generate_patch_event( | |||
| 179 | } else if let Some(event_ref) = root_proposal_id.clone() { | 179 | } else if let Some(event_ref) = root_proposal_id.clone() { |
| 180 | vec![ | 180 | vec![ |
| 181 | Tag::hashtag("root"), | 181 | Tag::hashtag("root"), |
| 182 | Tag::hashtag("revision-root"), | 182 | Tag::hashtag("root-revision"), |
| 183 | // TODO check if id is for a root proposal (perhaps its for an issue?) | 183 | // TODO check if id is for a root proposal (perhaps its for an issue?) |
| 184 | event_tag_from_nip19_or_hex( | 184 | event_tag_from_nip19_or_hex( |
| 185 | &event_ref, | 185 | &event_ref, |
| @@ -598,7 +598,7 @@ pub async fn generate_cover_letter_and_patch_events( | |||
| 598 | if let Some(event_ref) = root_proposal_id.clone() { | 598 | if let Some(event_ref) = root_proposal_id.clone() { |
| 599 | vec![ | 599 | vec![ |
| 600 | Tag::hashtag("root"), | 600 | Tag::hashtag("root"), |
| 601 | Tag::hashtag("revision-root"), | 601 | Tag::hashtag("root-revision"), |
| 602 | // TODO check if id is for a root proposal (perhaps its for an issue?) | 602 | // TODO check if id is for a root proposal (perhaps its for an issue?) |
| 603 | event_tag_from_nip19_or_hex(&event_ref,"proposal",EventRefType::Reply, false, false)?, | 603 | event_tag_from_nip19_or_hex(&event_ref,"proposal",EventRefType::Reply, false, false)?, |
| 604 | ] | 604 | ] |
diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs index 3ae004f..6d0dd45 100644 --- a/test_utils/src/lib.rs +++ b/test_utils/src/lib.rs | |||
| @@ -1182,7 +1182,7 @@ pub fn get_proposal_branch_name_from_events( | |||
| 1182 | if !event | 1182 | if !event |
| 1183 | .tags | 1183 | .tags |
| 1184 | .iter() | 1184 | .iter() |
| 1185 | .any(|t| t.as_slice()[1].eq("revision-root")) | 1185 | .any(|t| ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str())) |
| 1186 | && event.tags.iter().any(|t| { | 1186 | && event.tags.iter().any(|t| { |
| 1187 | t.as_slice()[0].eq("branch-name") && t.as_slice()[1].eq(branch_name_in_event) | 1187 | t.as_slice()[0].eq("branch-name") && t.as_slice()[1].eq(branch_name_in_event) |
| 1188 | }) | 1188 | }) |
diff --git a/tests/git_remote_nostr/push.rs b/tests/git_remote_nostr/push.rs index a137da5..2afadf9 100644 --- a/tests/git_remote_nostr/push.rs +++ b/tests/git_remote_nostr/push.rs | |||
| @@ -1688,7 +1688,11 @@ async fn force_push_creates_proposal_revision() -> Result<()> { | |||
| 1688 | 1688 | ||
| 1689 | let revision_root_patch = new_events | 1689 | let revision_root_patch = new_events |
| 1690 | .iter() | 1690 | .iter() |
| 1691 | .find(|e| e.tags.iter().any(|t| t.as_slice()[1].eq("revision-root"))) | 1691 | .find(|e| { |
| 1692 | e.tags | ||
| 1693 | .iter() | ||
| 1694 | .any(|t| ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str())) | ||
| 1695 | }) | ||
| 1692 | .unwrap(); | 1696 | .unwrap(); |
| 1693 | 1697 | ||
| 1694 | assert_eq!( | 1698 | assert_eq!( |
diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs index 9a46469..b0c1768 100644 --- a/tests/ngit_send.rs +++ b/tests/ngit_send.rs | |||
| @@ -1592,11 +1592,10 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1592 | for relay in [&r53, &r55, &r56] { | 1592 | for relay in [&r53, &r55, &r56] { |
| 1593 | let cover_letter_event: &nostr::Event = | 1593 | let cover_letter_event: &nostr::Event = |
| 1594 | relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); | 1594 | relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); |
| 1595 | assert!( | 1595 | assert!(cover_letter_event.tags.iter().any(|t| { |
| 1596 | cover_letter_event.tags.iter().any(|t| { | 1596 | t.as_slice()[0].eq("t") |
| 1597 | t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"revision-root") | 1597 | && ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str()) |
| 1598 | }) | 1598 | })); |
| 1599 | ); | ||
| 1600 | } | 1599 | } |
| 1601 | Ok(()) | 1600 | Ok(()) |
| 1602 | } | 1601 | } |
| @@ -1773,12 +1772,10 @@ mod in_reply_to_mentions_issue { | |||
| 1773 | for relay in [&r53, &r55, &r56] { | 1772 | for relay in [&r53, &r55, &r56] { |
| 1774 | let cover_letter_event: &nostr::Event = | 1773 | let cover_letter_event: &nostr::Event = |
| 1775 | relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); | 1774 | relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); |
| 1776 | assert!( | 1775 | assert!(!cover_letter_event.tags.iter().any(|t| { |
| 1777 | !cover_letter_event | 1776 | t.as_slice()[0].eq("t") |
| 1778 | .tags | 1777 | && ["revision-root", "root-revision"].contains(&t.as_slice()[1].as_str()) |
| 1779 | .iter() | 1778 | })); |
| 1780 | .any(|t| { t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"revision-root") }) | ||
| 1781 | ); | ||
| 1782 | } | 1779 | } |
| 1783 | Ok(()) | 1780 | Ok(()) |
| 1784 | } | 1781 | } |