A Git HTTP server that generates a new commit every time someone pulls from the repository.
Clone the repo
git clone https://infinite-git-nd2dq3gc7a-uk.a.run.app/ /tmp/infinite-git && cd /tmp/infinite-gitPull, 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.
- 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
I think it's neat!