Here's a quick script for generating git shortlog longform notes on git push. It currently powers the Damus Code nostr account:

Let's say you are hosting a bare git repository on a server at `git/project`. You can add a `post-receive` hook that generates a longform note when you push to the server:

In `server:git/project/hooks/post-receive`:

```bash

#!/usr/bin/env bash

commit_body=""

last=""

project="my-project" # update this with your project name

sec="abcdef..." # update this with your secret key

branch="master"

while read oldrev newrev refname; do

branch=$refname

last=$newrev

relays="wss://relay.damus.io wss://nos.lol"

commit_body=$(git shortlog $oldrev..$newrev | awk -f /home/user/markdown-shortlog.awk)

done

if [[ $branch == "refs/heads/master" ]]; then

nostril --content "# Changes

$commit_body" \

--envelope \

--kind 30023 \

--tag title "$project" \

--tag summary "Latest codebase changes to $project" \

--tag t gitlog \

--sec $sec \

| nostcat --connect-timeout 1000 $relays

fi

```

you'll need [nostril](https://github.com/jb55/nostril), [nostcat](https://github.com/blakejakopovic/nostcat), and `markdown-shortlog.awk`:

```awk

/^[^ ]/ {

if (author) {

print ""

}

author = $0

print "## " author

}

/^ / {

print "-" substr($0, 6)

}

```

Now when you push, it will generate a longform note that looks something like this:

# Example

## William Casarin (10):

- fix warnings

- readme: add usage

- textmode: fix coloring of abbreviated names

- profiling: update puffin version

- refactor: move note into its own widget

- refactor: rename widgets to ui

- ui: simplify note widget

- get all missing ids from all timelines

- initial inline note previews

- fix until filters

## kernelkind (6):

- Add custom visual themes

- Add modular custom text styles

- Apply app style to AccountLoginView

- Add MobileAccountLoginView

- Refactor 'ui tests' conception to previews

- Use custom style in app

Reply to this note

Please Login to reply.

Discussion

No replies yet.