{"id":13832768,"url":"https://github.com/colealbon/git-nostr","last_synced_at":"2025-07-09T19:31:16.248Z","repository":{"id":87774193,"uuid":"596126599","full_name":"colealbon/git-nostr","owner":"colealbon","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-10T18:10:45.000Z","size":42,"stargazers_count":26,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"trunk","last_synced_at":"2024-02-17T05:34:17.019Z","etag":null,"topics":["nostr"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colealbon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"authors.sh"},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://getalby.com/p/gitnostr"]}},"created_at":"2023-02-01T14:21:40.000Z","updated_at":"2024-02-09T00:05:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d0d1869-3e2a-4b8a-bbbc-db619ddf31fc","html_url":"https://github.com/colealbon/git-nostr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colealbon%2Fgit-nostr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colealbon%2Fgit-nostr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colealbon%2Fgit-nostr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colealbon%2Fgit-nostr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colealbon","download_url":"https://codeload.github.com/colealbon/git-nostr/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225581833,"owners_count":17491794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nostr"],"created_at":"2024-08-04T11:00:30.255Z","updated_at":"2024-11-20T15:31:04.599Z","avatar_url":"https://github.com/colealbon.png","language":"Shell","funding_links":["https://getalby.com/p/gitnostr"],"categories":["Install from Source","Tools","Shell"],"sub_categories":["Nostr","Client reviews and/or comparisons"],"readme":"# git-nostr (pre-prototype stage)\n- A command line tool `git-nostr` for managing nostr git\n- Activity on [nostrin.gs][nostrin.gs]\n- Git repo on [git.nostrin.gs][git-nostr]\n- 9 minute git-nostr intro video: https://youtu.be/j0llGQfNWtQ\n- why git-nostr? git nostr clone: https://www.youtube.com/watch?v=TdwCAZMehjU\u0026t=341s\n- pull request via nostr: https://www.youtube.com/watch?v=curCfIzQdXY\u0026t=183s\n# team\n- Cole Albon: npub1c0le4pgu49j76fnt54xfyclkszlfrcjx2c5vvjatdfvey5sat3ws76lcvg\n- zaps: [gitnostr@getalby.com][gitnostr@getalby.com]\n\n# install (manual)\n- add git-nostr directory to path\n- create a keypair for each repo with [noscl]\n- run git nostr (without arguments) for help\n```\nnoscl keygen\n```\n\n# todo\n* [x] help          Get help about a command\n* [x] publish       publish commit to nostr as base64 encoded patch\n* [x] deleteall     send delete request for every message for a given publickey\n* [x] list          list manifest ids for git-nostr repos\n* [x] clone         clone a git repo from \"git nostr publish manifestid\n* [x] clones        list clones of a repo\n* [x] create        set git nostr.publickey to public key and upload all commits to nostr\n* [x] pull          pull and apply patch for given commitid\n* [x] push          publish all unpublished commits\n* [x] fork          Fork a git repo on nostr\n* [x] forks         List forks of a repo\n* [x] issues        List issues for a repo\n* [x] pull-request  Create a pull-request\n* [x] prs           List pull requests for a repo\n* [x] authors       List contributors to a repo\n* [x] log           List history of updates to a repo\n* [x] name          Name a repo\n* [x] named         Search for repos by name\n* [x] web           Serve a web server for repos\n* [ ] find-object   Find a git object in a repo\n* [ ] remote-add    A git remote helper git-remote-nostr for using `nostr://` URLs with git\n* [ ] create bounty   create a request for task and escrow payment\n* [ ] claim bounty    link bounty to a git patch (aka invoice)\n* [ ] approve claim   release paymeht for bounty\n\n# kind=7777 tags (eventual NIPS)\n- --tag purpose \"git-nostr-fork\"\n- --tag purpose \"git-nostr-publish\"\n- --tag purpose \"git-nostr-issue\"\n- --tag purpose \"git-nostr-pr\"\n- --tag purpose \"git-nostr-clone\"\n- --tag purpose \"git-nostr-name\"\n\ntools required:\n- [git]\n- [nostril]\n- [noscl]\n- [websocat]\n- [jq]\n\nresearch:\n- [nostr-rs-relay][nostr-rs-relay]\n- [nip17][nip17]\n- [git-nostr-tools][git-nostr-tools]\n- [git-ssb][git-ssb]\n- [radicle][radicle]\n- [export-git-patches.sh][export-git-patches.sh]\n- [Formatting git patches for partially transplanting a repository][Formatting git patches for partially transplanting a repository]\n- [extend-git-with-custom-commands][extend-git-with-custom-commands]\n- [ssb-git-repo][ssb-git-repo]\n- [git-remote-ssb][git-remote-ssb]\n\n[gitnostr@getalby.com]: https://getalby.com/p/gitnostr\n[nostr-rs-relay]: https://sr.ht/~gheartsfield/nostr-rs-relay\n[nostrin.gs]: https://nostrin.gs\n[git-nostr]: https://git.nostrin.gs/?p=git-nostr.git\n[jq]: https://stedolan.github.io/jq/\n[websocat]: https://docs.rs/crate/websocat\n[nostril]: https://github.com/jb55/nostril\n[nostr-tools]: https://www.npmjs.com/package/nostr-tools\n[git-nostr]: https://github.com/colealbon/git-nostr\n[nostr]: https://github.com/nostr-protocol\n[git]: https://git-scm.com/\n[git-ssb]:\nhttps://git.scuttlebot.io/%25n92DiQh7ietE%2BR%2BX%2FI403LQoyf2DtR3WQfCkDKlheQU%3D.sha256\n[radicle]: https://radicle.xyz/\n[git-remote-ssb]: https://git.scuttlebot.io/%25ZVTOK3GA2aewEDI2rPxJqKXEIv4OIUN2swMPE2FeJm8%3D.sha256\n[ssb-git-repo]: https://git.scuttlebot.io/%25xChSOex77EjNh%2BoS8LPLdq%2B4nK1gylButbAgjS1IINs%3D.sha256\n[export-git-patches.sh]: https://gist.github.com/michitux/f7fdb2c36e728887b411e9aecb8e52ff\n[Formatting git patches for partially transplanting a repository]: https://spoiledcat.com/blog/formatting-git-patches-for-partially-transplanting-a-repository/\n[extend-git-with-custom-commands]: https://coderwall.com/p/bt93ia/extend-git-with-custom-commands\n[noscl]: https://github.com/fiatjaf/noscl\n[nip17]: https://github.com/nip17/nips/blob/master/17.md\n[git-nostr-tools]: http://git.jb55.com/git-nostr-tools/file/README.txt.html","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolealbon%2Fgit-nostr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolealbon%2Fgit-nostr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolealbon%2Fgit-nostr/lists"}