Compare commits

...

7 Commits

Author SHA1 Message Date
Biz 981f9f6eec
Merge 396beff41b into b516adbf42 2025-10-06 11:58:39 -07:00
Biz 396beff41b minor edits 2025-04-11 17:05:32 +10:00
Biz 44bda346e7 added initial diff kind 2025-04-10 20:42:21 +10:00
Biz 095fe84cc1
Merge branch 'nostr-protocol:master' into permalink 2025-04-10 18:24:03 +10:00
Biz bd699c6349 added more detail on permalink kind 2025-04-04 18:12:26 +10:00
Biz 96c43d1168 more refining of permalink kind 2025-03-31 20:58:58 +10:00
Biz bf611d0ee2 First naive implementation of permalinks 2025-03-31 15:13:34 +10:00
1 changed files with 75 additions and 0 deletions

75
34.md
View File

@ -165,6 +165,81 @@ The most recent Status event (by `created_at` date) from either the issue/patch
The Status of a patch-revision is to either that of the root-patch, or `1632` (_Closed_) if the root-patch's Status is `1631` (_Applied/Merged_) and the patch-revision isn't tagged in the `1631` (_Applied/Merged_) event.
## Git Diffs
Git Diff events (`kind: 1622`) represent changes between two commits within a Git repository, encapsulated as a unified diff. This event type is distinct from Git patches as it explicitly represents the state difference between two specific commits rather than modifications intended for direct application.
Clients should render the event's `content` field as preformatted unified diff text (commonly displayed with diff highlighting).
```jsonc
{
"kind": 1622,
"content": "<git unified-diff content>",
"tags": [
// Reference to the repo's 30617 event if one exists
["a", "30617:<base-repo-owner-pubkey>:<base-repo-id>"],
// Explicit commit ID this diff represents (mandatory)
["commit", "<current-commit-id>"],
// Parent commit ID from which the diff is generated (mandatory)
["parent-commit", "<parent-commit-id>"],
// Explicit repository URL (optional if resolvable via 'a' tag, recommended for interoperability)
["repo", "https://github.com/user/repo.git"],
// refs associated with the repository
["refs/<heads|tags>/<branch-or-tag-name>","<commit-id>"]
// File path within the repository affected by this diff (optional but recommended if diff is single-file)
["file", "<fully-qualified-filepath>"],
// Optional start and end lines in the diff context (recommended for precise referencing)
["lines", "172", "196"],
// Optional description for context or explanation of changes
["description", "Implements new diff handling in NIP-34"]
]
}
```
Clients rendering Git Diff events SHOULD:
- Display the unified diff content with syntax highlighting for added/removed lines.
- Provide options to view or open the diff context within external repository browsers or local Git clients.
- Use commit and parent-commit identifiers for querying or fetching the exact commit state.
- Clearly indicate repository, branch, and file context if provided.
This detailed structure improves clarity, usability, and interoperability, providing clients with comprehensive context and ensuring precise referencing and rendering.
## Permalinks
Permalink events (`kind: 1623`) represent a permanent reference to specific lines within a file from a Git repository. They are intended to directly reference code or documentation precisely and immutably. Clients should render the event's `content` field as preformatted text (code blocks).
```jsonc
{
"kind": 1623,
"content": "<referenced code or text excerpt>",
"tags": [
// Reference to the repo's 30617 event if one exists
["a", "30617:<repo-owner-pubkey>:<repo-id>"],
// Explicit repository URL (optional if resolvable via 'a' tag, recommended for interoperability)
["repo", "<repo.url>"],
// refs associated with the repository (mandatory)
["refs/<heads|tags>/<branch-or-tag-name>","<commit-id>"]
// Specific commit identifier referencing the repository state (mandatory)
["commit", "<commit-id>"],
// Path to the specific file in the repository (mandatory)
["file", "<fully-qualified-filepath>"],
// Start and end lines referenced within the file (optional, otherwise the event refers to the complete file)
["lines", "<start-line>", "<optional-end-line>"],
// Language identifier for syntax highlighting (optional but recommended)
["l", "<language>"],
["description", "<short-text-description>"]
]
}
```
Clients rendering permalink events SHOULD:
- Fetch and display the exact lines from the referenced commit and file if the content is not explicitly included or for verification.
- Display provided code/text using syntax highlighting according to the specified language tag (`l`).
- Offer navigation or direct links to view the file within external repository browsers or clients.
## Possible things to be added later