This is now implemented in https://git.fiatjaf.com/song and its companion pre-push hook:
Hopefully it will work with ngit soon, but it works without ngit now using just the pre-push hook:
mkdir flower
cd flower
git init
git remote add origin http://yoursongrelayandserver.com/flower
ln -s (which song-pre-push) .git/hooks/pre-push
git config song.signer '
echo 'peony' > name
git add .
git commit -m 'add name'
git push origin master -u
And the pre-push hook will sign a kind:30618 and push it to the server. The server will check that it comes from you and store it if it does, and will create a repository on its side upon receiving the event (named "flower"). Then the git push will proceed and since the kind:30618 has the correct branch name and the commit id in it, it will be authorized.
The next time you have a commit you can just git push and it should work normally.
Later you can publish a kind:30617 with more metadata if you want, and if that includes a "maintainers" tag then those maintainers can also create branches and push to your 'flower' repo.
I guess I should write this in the song README file.
nostr:npub1mygerccwqpzyh9pvp6pv44rskv40zutkfs38t0hqhkvnwlhagp6s3psn5p nostr:npub1uplxcy63up7gx7cladkrvfqh834n7ylyp46l3e8t660l7peec8rsd2sfek nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s nostr:npub1useke4f9maul5nf67dj0m9sq6jcsmnjzzk4ycvldwl4qss35fvgqjdk5ks you might be interested or have criticisms.
nostr:npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr please let me know if I got this right.