mirror of
https://github.com/imjasonh/infinite-git
synced 2026-07-08 17:15:37 +00:00
1.4 KiB
1.4 KiB
Infinite Git
A Git HTTP server that generates a new commit every time someone pulls from the repository.
Try it out
Clone the repo
git clone https://infinite-git-nd2dq3gc7a-uk.a.run.app/ /tmp/infinite-git && cd /tmp/infinite-git
Pull, and just keep pulling:
$ git pull
warning: no common commits
Unpacking objects: 100% (40/40), 4.14 KiB | 847.00 KiB/s, done.
From https://infinite-git-nd2dq3gc7a-uk.a.run.app
df979d4..d483466 main -> origin/main
Updating df979d4..d483466
Fast-forward
hello.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
$ git pull
warning: no common commits
Unpacking objects: 100% (43/43), 4.45 KiB | 912.00 KiB/s, done.
From https://infinite-git-nd2dq3gc7a-uk.a.run.app
d483466..47f0fcb main -> origin/main
Updating d483466..47f0fcb
Fast-forward
hello.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
.....and so on.
How It Works
- When a client initiates a pull/clone, the server intercepts the reference discovery request
- Before advertising refs, it generates a new commit with:
- A unique file containing the pull counter and timestamp
- A commit message indicating when the pull occurred
- The new commit is added to the main branch
- The updated refs are sent to the client
- The client receives the new commit as part of the normal Git protocol flow
Why?
I think it's neat!