Skip to main content

Git sans le bloat — snapshots ZIP et diff intelligent.

Project description

NoGit

Git without the bloat — ZIP snapshots + smart diff.

NoGit watches your working directory and creates ZIP snapshots automatically or manually. No commits, no branches, no rebases. Just timestamped ZIPs and a readable diff.


Installation

pip install nogit

Or with pipx:

pipx install nogit

Commands

nogit or nogit backups

Lists snapshots for the current directory. Offers to launch a diff or restore.

nogit snapshot

Creates a full ZIP snapshot of the current directory (manual mode only).

Before creating the ZIP, nogit scans the directory and displays a summary. If the directory is detected as dangerous (system root, too many files, too high in the tree), a confirmation is required.

In non-interactive mode (pipe, AI agent), dangerous snapshots are automatically blocked. To confirm explicitly:

nogit snapshot --yes

Some directories are unconditionally forbidden (/tmp, /home, %USERPROFILE%, C:\Windows, etc.) — --yes does not bypass them.

nogit automatic

Enables the watcher — monitors the directory and creates an incremental snapshot on every detected change. Launches a dedicated terminal with live logs. A full snapshot is created on startup.

The watcher uses st_mtime + SHA-256 to detect real changes and avoid false positives (auto-save, restore, etc.).

nogit manual

Disables the watcher and switches back to manual snapshot mode.

nogit backups --global

Lists all NoGit projects registered on the machine. Automatically cleans up projects whose directory has been deleted.

nogit backups --external

Configures an external backup folder (second drive, NAS...). Snapshots are automatically copied there after each creation.

nogit diff <snap1> <snap2>

Compares two ZIP snapshots. If either snapshot is incremental, automatically reconstructs the full state from the chain before comparing.

The oldest snapshot is always used as the reference (A), the most recent as the target (B). So added means "appeared over time", deleted means "disappeared over time".

Generates a folder in .nogit/diff/:

.nogit/diff/
  2026-05-23T01_vs_2026-05-23T02/
    diff.txt              — human-readable global report
    summary.json          — index of changed files (for AI)
    my_file.diff.json     — detailed hunks per modified file

nogit restore <number>

Restores the project from a snapshot (the number matches the order shown in nogit backups). If the snapshot is incremental, automatically walks the chain back to the last full snapshot. Verifies MD5 hashes of binary files and reports divergences.

Restore can also be launched directly from nogit backups by choosing r.


Directory Structure

project/
  .nogit/
    snapshots/                          — timestamped ZIPs (full or incremental)
    diff/
      snap_a_vs_snap_b/                 — one folder per diff run
        diff.txt                        — human-readable report
        summary.json                    — index of changed files
        my_file.py.diff.json            — hunks per modified file
  .nogitignore                          — files/folders excluded from snapshots

The .nogit folder follows the project — it can be shared or copied as-is.


Snapshots

Full — contains all project files (created by nogit snapshot or at nogit automatic startup).

Incremental — contains only files modified since the last snapshot (created by the watcher in automatic mode).

Each ZIP contains a nogit.meta.json indicating its type (full or incremental).

Binary files and files > 10 MB are not included in the ZIP — a .meta.json with their size and MD5 is stored instead.


Global Registry

NoGit maintains a global registry of projects at %USERPROFILE%\.nogit\registry.json (or ~/.nogit/registry.json on Linux/macOS). This file is automatically synced to the external backup if configured.


External Backup

When an external folder is configured via nogit backups --external, the following structure is created:

external_folder/
  .nogitbackups/
    configs/
      registry.json       — copy of the global registry
    ProjectName_abc123/
      snapshots/          — copies of the ZIPs

License

This project is distributed under the GNU AGPL v3 license. See the LICENSE file for details.


Credits

MIME types dataset based on micnic/mime.json by Nicu Micleușanu, modified to include missing programming language extensions.

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

nogit-0.2.1.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

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

nogit-0.2.1-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file nogit-0.2.1.tar.gz.

File metadata

  • Download URL: nogit-0.2.1.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for nogit-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a303cb6a24dfa1aabe1624034e8480e9f2565415321f0196ffc5b9780dcb8301
MD5 b88cc5eb62d5308bb350084e20b62a37
BLAKE2b-256 4dfc7ac31961ebe02ed9518a698206b036dea4cef05df1d7c81a15bbaa668155

See more details on using hashes here.

File details

Details for the file nogit-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: nogit-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 45.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for nogit-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 97c51b9d04272d57aeee466a94bf626c7fb8b7c99942b22d162433f02a562971
MD5 c4873bfa6e77101c8f32256876ffed23
BLAKE2b-256 61032f30835008332eaee5c46d474250be1356a04a1ee3922731cc3a137101d3

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