Skip to main content

An advanced modern version control system

Project description

Gitstack

Version everything.

Git has been the gold standard for version control in software for decades. But Git is built almost entirely around source code: lines of text, commits, branches. What about everything else? What about the evolving mess of dependencies, environment variables, datasets, models, project states, configs, and the “invisible glue” that makes your project work today but breaks tomorrow?

That’s where Gitstack comes in.

Gitstack is an open-source versioning tool for your entire project environment. It lets you snapshot, restore, and eventually deploy entire working states, not just code, but the invisible layers that make code runnable. Think of it as git for time, dependencies, and states.


What It Does

Gitstack introduces a set of simple, powerful commands:

  • gitstack snap → Takes a snapshot of your project. At its simplest, this means recording the file structure, timestamps, and metadata into a .gitstack/ folder. As it matures, snapshots will also capture Python dependencies, environment variables, and container states.

  • gitstack restore → Restores your project to the last snapshot. If you broke something, nuked a dependency, or misconfigured your environment, you can roll back instantly.

  • gitstack time → Prints the current time. A small command, but the beginning of Gitstack’s philosophy: projects are not just files, they’re states in time.

  • gitstack date → Prints the current date. Together with time, this sets up Gitstack’s baseline — every snapshot is anchored to a real moment.

  • gitstack deploy → A placeholder for the future: containerized deployment of your current snapshot. Eventually, Gitstack will help you push your entire environment to the cloud with a single command.

The core idea is simple: your project is more than code. Gitstack makes it reproducible, restorable, and sharable.


How It Works (Under the Hood)

At this stage, Gitstack is lightweight. When you run gitstack snap, it creates a hidden .gitstack/ directory in your project root. Inside it, Gitstack writes a JSON file containing:

  • A list of files and directories
  • Their timestamps and metadata
  • A unique snapshot ID linked to the current time/date

When you run gitstack restore, Gitstack reads that JSON file and reconstructs the file list for you. As the tool evolves, restore will expand to:

  • Rebuilding Python environments (pip freeze)
  • Restoring .env configs
  • Saving and reloading datasets and AI checkpoints
  • Eventually, rebuilding Docker containers or even remote cloud states

So while today’s Gitstack is an early foundation, the roadmap points toward full project state management — a new layer of version control.


Why Gitstack?

Software engineers, data scientists, AI researchers, and indie hackers all face the same nightmare: “It worked on my machine yesterday. Now it doesn’t.”

Traditional Git doesn’t solve this. It saves code, not states. Gitstack exists to bridge that gap. It’s for:

  • Developers tired of broken builds when switching branches.
  • Researchers who need to reproduce AI experiments exactly.
  • Teams who want to share environments, not just code.
  • Indie hackers who want to roll back bad decisions without nuking their progress.

Version control should not stop at lines of code. Gitstack pushes the idea forward: version everything.


Installation

Gitstack is available on PyPI. Install it globally with pip:

pip install gitstack
Verify it’s working:
gitstack time
# Ex output: 08:48:15.743508
gitstack date
# Ex output: 2025-09-10

Now you’re ready to snapshot your first project:

cd my_project
gitstack snap

Usage

Example workflow:

# Take a snapshot
gitstack snap

# Break something (oops!)

# Restore to your last snapshot
gitstack restore

Coming soon:

gitstack deploy
Deploy your entire snapshot to a containerized environment

The Web App (Coming Soon)

The Gitstack CLI is the foundation. But Gitstack will also include a visual dashboard, accessible at gitstack.com.

The dashboard will let you:

  • View and manage snapshots visually
  • Compare different states of your project
  • Share environments with collaborators
  • Push to the cloud for team access

CLI power, paired with a clean visual layer.


Author

Gitstack was created by Bola Banjo.

  • X (Twitter): @bolaabanjo
  • Open to contributions, collaborations, and feedback.

Contributing

Gitstack is open-source. Anyone can fork, extend, and contribute. To contribute:

  1. Fork the repository
  2. Create a feature branch
  3. Write tests for your feature
  4. Open a pull request

NB. These will be updated periodically, do ensure to check back.


License & Future Direction

Gitstack is currently licensed under the MIT License, meaning you are free to use, modify, and distribute it with proper attribution.

However, this license applies only to the open-source CLI tool. Future commercial offerings, advanced features, or hosted services may be released under different licensing terms via gitstack.com.

This dual approach ensures that Gitstack remains accessible for developers while leaving room for sustainable growth and enterprise-level innovation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitstack-0.2.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitstack-0.2.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file gitstack-0.2.0.tar.gz.

File metadata

  • Download URL: gitstack-0.2.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for gitstack-0.2.0.tar.gz
Algorithm Hash digest
SHA256 26703d6e7c070df02ca27163927fcff9188b3b26da4612499e409d7f4dd69892
MD5 3c96ae431fccad6879c87c6da9e6f5d4
BLAKE2b-256 9ec662cd4113b23950de03fd670a579652d8fcc2c80412165126f2e3b3e9a75d

See more details on using hashes here.

File details

Details for the file gitstack-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: gitstack-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for gitstack-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55dee6186df19ddfd4bf5e4fc816adfdd17a753763adf1fa61584322d6e4c3a5
MD5 c3cab72232875b526b2247fc122343e6
BLAKE2b-256 1f8081bcdd7b950126ef5b8f29a7f70dece47c9f1510c0572c6ad62b442b1614

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page