Today, I’m thrilled to introduce n34 (https://n34.dev), a command-line interface (CLI) for sending and receiving Git issues, patches, and comments via the Nostr protocol.

I hope you all like it, and I’m eager to hear your feedback!

A special thank you to:

- nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9thwden5te0dehhxarj9ehhsarj9ejx2a30qqsx3kq3vkgczq9hmfplc28h687py42yvms3zkyxh8nmkvn0vhkyyusu07hes for his awesome https://rust-nostr.org

- nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq3wamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmny9uq36amnwvaz7tmgv9mx2m3wv3skucm0demkz7tyv4mzucm0d5hsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qqs2qzx779ted7af5rt04vzw3l2hpzfgtk0a2pw6t2plaz4d2734vngn9kt4z for his invaluable feedback, answers to my questions, and insightful conversations.

- nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uq3wamnwvaz7tmzd96xxmmfdejhytnnda3kjctv9uqzp5zweue6xqa9npf0md5pak95zgsph2za35sentk88jmzdqwk925sd33mtj for his constructive feedback.

- nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq3uamnwvaz7tmjv4kxz7fwdehhxarj9emkjun9v3hx2apwdfcz7qfqwaehxw309ahx7um5wghx26tww4hxg7nhv9h856t89eehqctrv5hsz8thwden5te0dehhxarj9e3xjarrda5kuetj9eek7cmfv9kz7qpquseke4f9maul5nf67dj0m9sq6jcsmnjzzk4ycvldwl4qss35fvgqcs77zh for suggest the keyring

- nostr:nprofile1qydhwumn8ghj7un9d3shjtnhv4ehgetjde38gcewvdhk6tcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsqgpm7rrrljungc6q0tuh5hj7ue863q73qlheu4vywtzwhx42a7j9n5qnvvze for encouraging me to bring this to life after I had initially shelved the idea. <3

Examples:

- For sending a patch: `n34 patch send ./patches/*.patch`

- Receiving one: `n34 patch fetch `

- List them: `n34 patch list`

Almost the same with issues. Check out the documentation

Reply to this note

Please Login to reply.

Discussion

Let a thousand nostr git projects blossom!

no zaps?

No zaps, give it a try and tell me what you think. If you want me to try it with you, let me know.

Added to my "play with" list. Without trying to pitch x vs y (the more Git over Nostr options we have, the better), but how would you compare n34 to, say, ngit CLI? Any differences in approach, are both tools compatible? (I.e., can I init a repo with ngit-cli, push it somewhere and then use n34 to submit a patch?)

tl;dr:

They are compatible, n34 follow the email workflow while ngit follow the branch-PR-merge workflow.

Yes, they are both compatible, we both follow NIP-34. Using both you can send and fetch patch from relays, the only difference is how the patches being sent and fetched.

Ngit will handle the git things for you, like you only have to make your changes in pr/* branch, then push it, its remote will make the patch events for you and broadcast it to the relays.

n34 not, it just handle the nostr part, you have to make the patch my yourself using git-format-patch, then provide the patches to n34 to make the events and broadcast it.

Same with fetching, ngit will fetch the patches and apply them to branches, but n34 will give you the patches file and you can do whatever you want with them, like applying them using git-am.

Got it. Sounds awesome! I sorta miss the days of mailing lists and patches. I’ll definitely play around with it. Since you won’t take zaps, here’s my kudos and appreciation from one “Indie Nostr dev” to another.

Thank you, looking back for your feedback

n34 is a cool UX. You create the patch yourself and supply it as a .patch file to n34. This means you really fine tune the patch config options.

With ngit, you dont have to use the branch-merge-model. Its built to be an accessable tool which can fit into a range of workflows. For example with `ngit send` you can create patches from selected commits. `ngit list` can apply them.

I love that we open protocols like git and nostr, there can be tools like n34 which hone in on a specific workflow and do a great job at making it smooth.

n34 also works good in conjunction with ngit. Clone a repository using a nostr:// and you'll get the repository state through nostr and the git data from the git servers the maintainers list vianostrl, but you can use n34 for browsing, applying and sending patches for the repo.

That's not even mentioning the totally cool n34 feature of being able to fire off issues from the command line.

Exactly, you can mix them and make something you comfortable with, like using ngit for sending and fetching but n34 for issues and reviewing patches.

I love to see different ways of interacting with #GitViaNostr good work nostr:nprofile1qqsqqqqqq9g9uljgjfcyd6dm4fegk8em2yfz0c3qp3tc6mntkrrhawgppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7hsrsym

nostr:nevent1qqsx8we8mmd956ydm0htnusn52edet3wfhzv0kpwlxuc82h8xzzy04spz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygqqqqqqz5z70eyfyuzxaxa65u5trua4zy38ugsqc4udde4mp3m7hypsgqqqqqqsenl2vn

Will check it out when Im back in business after holidays!

đź‘€