DEV Community

zhonghua
zhonghua

Posted on

Perforce's locks. Git's branches. One repository. — open-source pilot for game teams

I've spent too long watching teams pick between two bad options: Perforce (locks, but a central server that reconciles over the whole depot and a per-seat bill) or Git (free branches, but no way to stop two people editing the same .umap).

So I built a small open-source thing called BlackGit to take both. It's MIT, on GitHub: https://github.com/zhuzhonghua/blackgit

What it does, in plain terms

  • git black lock <file> takes a binary file exclusively, exactly like p4 edit. The lock lives on the server. It refuses other people's pushes touching that file and names the holder. Your local branches and commits are never blocked — you can still branch off and throw work away.
  • git black clone is a partial clone (blob:none + empty sparse-checkout). A 1.4 GB server repo lands at 168 KB on disk. Then git black follow assets/levels/city.umap materializes just the file you open (60 MB in the demo). No LFS, no full history.
  • The server is one Docker container sitting in front of your existing GitHub/GitLab. It can also enforce path-level blob permissions (SVN authz format).

60 seconds to try it

pip install blackgit
docker run -d -p 8081:8081 -v /data/blackgit:/data \
  -e BLACKGIT_UPSTREAM=https://github.com/you/game.git \
  ghcr.io/zhuzhonghua/blackgit:latest
git black clone http://localhost:8081/game.git
Enter fullscreen mode Exit fullscreen mode

Honest disclaimers

It's v0.0.2 / beta. There's no artist GUI (commands only), no chunking/dedup of large binaries, and it requires Git 2.54+. It's not a Perforce replacement tomorrow. I'm looking for game teams willing to kick the tires on a real repo and tell me where it breaks.

What would you want to see first? Happy to answer in the comments.

Top comments (0)