🔴 Cloning the ngit-cli repo
Steps aren't obvious for where the code for ngit can be found. The push is primarily towards trusting prebuilt binaries. Eventually I found
https://codeberg.com/DanConwayDev/ngit-cli.git and https://github.com/DanConwayDev/ngit-cli.git
🔴 Building / Installing
Obviously depends on rust, so need to have that toolchain configured. For people new to rust, indicating how to setup that toolchain could be a useful addition to the repository in either the README.md or INSTALL.md
🔴 NGIT INIT
Running ngit init presents a qr code to use in a remote signer. I choose 'n' for no, and have a prompt for login with nsec, bunker url, or nostr address. I choose a nostr address which isn't configured for remote login. So then I try to just spin up a new nsec, and save the login details.
Then I'm prompted for name (mine? the repo?), identifier, and description. After analyzing nip-34, I beleive this correlates to the name of the repository, d-tag, and description. After that is successfully entered, I get prompted for clone url (for fetch), so I use a mirror
name Corny Chat
identifier corny-chat
description 🌽 Corny Chat is an open source audio space built on Jam that integrates Nostr and Lightning
clone url https://github.com/vicariousdrama/cornychat.git
web https://gitworkshop.dev/repo/corny-chat
maintainers @Vic
relays ?
earliest unique commit 98fbb6e3aea7cf16a56e15ca959c4a7de4ef69bc (Jan 3, 2024)
I didn't know what to put for relays and tried to enter a question mark thinking that would provide help on whether I need to specify a comma delimited list of values, include wss:// prefix etc. Nope, it took that question mark as the string to attempt and later indicated impossible to parse URL: relative URL without a base. For obvious reasions, the built in attempt to use nostr.mutinywallet.com also failed.
A maintainers.yaml file was created. I make changes to the file for the relays. Then commit and merge using normal git commands.
🔴 NGIT SEND
Next I attempt to ngit send and need to select commits for proposal. I'll just select the one I just sent. I get the warning about it already being in main, but I send anyway. I get an error that it cannot find profile.
Seeing as my generated nsec/npub has no profile yet, I guess this is a dependency. So I quickly make a kind 0 event and retry
Next it declares that it cannot find my relay ilst and I should consider using another nostr client to create one to enhance my nostr experience. At least it recognizes that I'm logged in as corny-chat-ngit-signer. I attempt to configure relays via nostrudel, but ngit never sees those updates. Weird that it can't just work with the relays specified in the maintainers.yaml file. So then I login to coracle and configure relays there with the hopes it'll publish the requisite events. It claim kind 10002 is being published
Now it seems to progress. I make a test branch, simple file change, local commit, then ngit send
repo-relay is still failing for impossible to parse URL : relative URL without a base
One of the relays I've configured requires auth, but it seems to have pushed it and provided this output
view in gitworkshop.dev: https://gitworkshop.dev/repo/naddr1qq9xxmmjdeuj6cmgv96qygqn7mkzvjfccq5uce5hfe7xajncf6z6mc2asalaqxsdyvnffqechcpsgqqqw7vszqfll2f979/proposal/nevent1qqsrzgr0g90t8fnlt8mevueysn6w7nn07a0ensl2jfg7t36p66tuqmqpqylszfr3yf
view in another client: https://njump.me/nevent1qqsrzgr0g90t8fnlt8mevueysn6w7nn07a0ensl2jfg7t36p66tuqmqpqylszfr3yf
Attempting to view that link in gitworkshop.dev failed Error! reference in URL is not a repository, proposal, issue or npub reference:
nevent1qqsrzgr0g90t8fnlt8mevueysn6w7nn07a0ensl2jfg7t36p66tuqmqpqylszfr3yf
The njump.me link works however so that's good
🔴 NGIT LIST
I see my ngit test proposal. This is as far as I've looked into this today.
TL;DR --- Skipping past the don't trust verify that should apply to all code and preference for hand holding to get to a built state, the actual application needs some care to make it more informative, and more forgiving. If something is configured wrong, prompt for new values. Provide some way to "go back" in the config steps. Be overly clear on what is expected of each field as the context could be the user or the repo. I still dont know what value I need for repo-relay or its relevance
https://i.nostr.build/8I6CNqN2C3DpLw8g.png
Thanks for your detailed outline of your experience. it is super helpful. The most recent changes to the master branch was actually related to some of providing a bit more guidance to the `ngit init` fields. We still have a way to go.
We'll get there. I want this for sure and its totally feasible. I know there are projects using it successfully today, I just want to make sure we get this as smooth as butter