Transform GitHub commits into a format that highlights the actual code changes, allowing users to easily monitor updates in a traditional RSS reader like Feedly or Miniflux.
- Grabs an Atom feed from GitHub (https://github.com/:owner/:repo/commits.atom)
- Parses all commits to obtain the diff
- Generates an RSS feed for each commit, displaying the corresponding diff
Note
A Github PAT is required to avoid rate limiting. Please set the GITHUB_TOKEN variable.
You can easily get started by pulling the latest image from GitHub Container Registry (GHCR):
docker pull chkpwd/diff2rss:latest &&
docker run -d \
--name diff2rss \
-p 8000:8000 \
chkpwd/diff2rss:latest
Once you have the container installed, you're ready to go!
apiVersion: apps/v1 kind: Deployment metadata: name: diff2rss spec: replicas: 1 selector: matchLabels: app: diff2rss template: metadata: labels: app: diff2rss spec: containers: - name: diff2rss image: ghcr.io/chkpwd/diff2rss:latest ports: - containerPort: 8000 --- apiVersion: v1 kind: Service metadata: name: diff2rss-service spec: selector: app: diff2rss ports: - protocol: TCP port: 8000 targetPort: 8000 type: ClusterIP # This keeps the service internal, the Ingress will expose it externally --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: diff2rss-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: diff2rss.yourdomain.com # Replace with your desired domain name http: paths: - path: / pathType: Prefix backend: service: name: diff2rss-service port: number: 8000
Open your preferred RSS reader and create a new subscription. The URL should be
in the following format:
https://diff2rss.domain.tld/generate_rss?source=owner/repo
Specifying the branch:
https://diff2rss.domain.tld/generate_rss?source=owner/repo&branch=dev
Specifying an author:
https://diff2rss.domain.tld/generate_rss?source=owner/repo&author=owner
curl -s -X GET https://diff2rss.domain.tld/generate_rss?source=owner/repo&branch=dev&author=renovate
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>GitHub Feed for Recent Commits to iac:main</title> <link>https://github.com/chkpwd/iac/commits/main</link> <description>Latest entries from GitHub repository</description> </channel> </rss> ... # Removed for brevity