2 changed files with 155 additions and 0 deletions
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
<script lang="ts"> |
||||
import AlertError from "$lib/components/AlertError.svelte" |
||||
import Container from "$lib/components/Container.svelte" |
||||
import SvelteMarkdown from 'svelte-markdown' |
||||
|
||||
async function get_md() { |
||||
const res = await fetch("/concept.md"); |
||||
return await res.text() |
||||
} |
||||
</script> |
||||
|
||||
<svelte:head> |
||||
<title>GitWorkshop: Concept</title> |
||||
</svelte:head> |
||||
|
||||
<Container> |
||||
{#await get_md()} |
||||
<p>loading...</p> |
||||
{:then md} |
||||
<article class="prose prose-sm mt-3"> |
||||
<SvelteMarkdown |
||||
options={{ gfm: true }} |
||||
source={md} |
||||
/> |
||||
</article> |
||||
{:catch error} |
||||
<AlertError> |
||||
{error.message} |
||||
</AlertError> |
||||
{/await} |
||||
</Container> |
||||
@ -0,0 +1,124 @@
@@ -0,0 +1,124 @@
|
||||
# Concept ngit quick start guide |
||||
|
||||
This is a concept which the developer would like to work towards. a lot of the features / commands are not available yet. |
||||
|
||||
## How it Works |
||||
|
||||
nostr is a decentralised communications protocol with: |
||||
- permissionless account creation - created via a public/private key pair |
||||
- verifiable signed messages |
||||
- messages transported via relays rather than P2P |
||||
|
||||
Code Collaboration via Nostr |
||||
|
||||
* proposals (PRs), issues and related discussion, status, etc. are sent / recieved via nostr. |
||||
* repository state stored in nostr. |
||||
* git server(s) still required for data storage and transport but they act as dumb relays (apart from use for CI/CD). |
||||
maintainers can change git servers via nostr and users will automatically start using the new git server. |
||||
|
||||
[insert diagram which makes git severs appear like just another nostr relay - potentially something like this:] |
||||
``` |
||||
┌──────────┐ |
||||
│ Author │ |
||||
└──/─┬─\───┘ |
||||
,------' │ '--------.-------. |
||||
┌──────▼─┐ ┌────▼───┐ ┌───▼───┐ ┌─▼─────┐ ┌───────┐ |
||||
│ Git │ │ Git │ │ Relay │ │ Relay │ │ Relay │ |
||||
│ Server │ │ Server │ │ │ │ │ │ │ |
||||
└────────┘ └────\───┘ └───┬───┘ └──/────┘ └─/─────┘ |
||||
\----*-. │ ,----/---------/ |
||||
┌─▼──▼──▼─┐ |
||||
│ User │ |
||||
└─────────┘ |
||||
``` |
||||
\* git servers are used as dumb relays with content verified via nostr events. |
||||
|
||||
## Contributor's Quick Start Guide |
||||
|
||||
1. install ngit |
||||
* download [linux windows mac] (vX.X) add binaries $PATH |
||||
* OR if you have cargo use `cargo install ngit` |
||||
2. find repository |
||||
* using `ngit search` eg `ngit search amethyst` |
||||
``` |
||||
name maintainer(s) starred by |
||||
> amethyst 👥Vitor Gigi, fiatjaf, franzap, +5 👥 |
||||
amethyst impersonator |
||||
``` |
||||
* OR using gitworkshop.dev |
||||
* browse https://gitworkshop.dev/repos for the repository |
||||
* explore proposals and issues |
||||
* copy the naddr (or press the green clone button to copy the clone command) |
||||
3. clone repository |
||||
`git clone nostr://naddr123...` |
||||
4. view open proposals |
||||
* `ngit list` - select proposal from titles to checkout branch or apply to current branch tip |
||||
* OR review branches starting with 'origin/prs/*' with your favourate git tool |
||||
* eg. for git cli use `git branch -r --list origin/prs/` to list and `git switch prs/add-offline-mode[e9ra8281]` to check out |
||||
* view and contribute to the proposal discussion on gitworkshop.dev |
||||
5. submit proposal |
||||
* `ngit send` to send with options |
||||
* OR `git push -u` on a branch without an exisitng upstream will submit it as a proposal without commentary if you are not a maintainer |
||||
6. update proposal |
||||
* `git push` from your proposal branch |
||||
7. download releases using `ngit releases amethyst` |
||||
``` |
||||
name maintainer(s) starred by |
||||
> amethyst 👥Vitor Gigi, fiatjaf, franzap, +5 👥 |
||||
amethyst impersonator |
||||
``` |
||||
|
||||
``` |
||||
amethyst by 👥Vitor |
||||
-------------------------------------- |
||||
release # files |
||||
> v0.87.7: Revert Save button 14 |
||||
v0.87.6 14 |
||||
v0.87.5 14 |
||||
... |
||||
``` |
||||
|
||||
``` |
||||
amethyst by Vitor |
||||
-------------------------------------- |
||||
download v0.87.7: Revert Save button (14 files) |
||||
all (14 files) |
||||
> amethyst-fdroid-arm64-v8a-v0.087.7.apk |
||||
amethyst-fdroid-armeabi-v8a-v0.087.7.apk |
||||
amethyst-fdroid-universal-v8a-v0.087.7.apk |
||||
... |
||||
``` |
||||
|
||||
``` |
||||
downloaded to ./amethyst-fdroid-arm64-v8a-v0.087.7.apk |
||||
checksum verified |
||||
``` |
||||
|
||||
## Maintainer's Quick Start Guide |
||||
0. for completely fresh git repositories |
||||
1. create a new local git repository |
||||
* `git init` |
||||
* add an initial commit with a `README.md` |
||||
2. setup a git server with PRs and Issues disabled |
||||
* github guide, codeberg guide, self host (gitea/forgejo guide) |
||||
|
||||
1. install ngit |
||||
* download [linux windows mac] (vX.X) add binaries $PATH |
||||
* OR if you have cargo use `cargo install ngit` |
||||
2. initalize on nostr |
||||
* run `ngit init` from git repository, which will: |
||||
1. announce with setting such as: |
||||
* inbox relays - where contributors should send proposals / issues |
||||
* clone - git server(s) to fetch data from |
||||
* settings can be updated by running `ngit init` again |
||||
2. publish state |
||||
* from branch / tag refs on first git server in announcement |
||||
3. add nostr as git remote |
||||
* `git push` will now update state on nostr and push data to all git servers listed in annonucment event |
||||
3. manage proposals |
||||
* view and apply open proposals (see contributor guide) |
||||
* use gitworkshop.dev to comment on or close it |
||||
* if you applied a proposal to master or used `git merge`, the proposal status will be updated when you push those commits |
||||
4. issue releases |
||||
[TODO] |
||||
5. update comms - direct contributors to use nostr. eg. on readme and website. |
||||
Loading…
Reference in new issue