Skip to main content

ChangeGuard

Top language GitHub License PyPI - Version Python Version

Status Stable Unstable
Master Build and Test since tagged last commit
Develop Build and Test since tagged since tagged last commit

CLI to check if your repository/directory files have changed over the span of a script.

What

Like hashdeep, but customized to check if any of the original files in a repository/directory change over the course of a precommit script.

Features

  • Can use any sha256sum-like command (uses xxhash by default).
  • Use .changeguard-ignore to ignore files that should not be checked for changes.

Getting Started

Install

Tested on

  • WSL2 Ubuntu 20.04, Python 3.8.0
  • Ubuntu 20.04, Python 3.8.0, 3.9.0, 3.10.0, 3.11.0, 3.12.0, tested in GitHub Actions workflow (build-and-test.yml).

Requirements:

  • Linux-like environment
    • Why: Uses pexpect.spawn().
  • Python 3.8+
    • Why: Some dev dependencies require Python 3.8+.
# Install from pypi (https://pypi.org/project/changeguard/)
pip install changeguard

# Install from git (https://github.com/realazthat/changeguard)
pip install git+https://github.com/realazthat/changeguard.git@v0.3.1

Use

Contributions

Development environment: Linux-like

  • For running pre.sh (Linux-like environment).
    • Requires pyenv, or an exact matching version of python as in .python-version.
    • nvm for prettier (markdown formatting).
    • bash, grep, xxd, git, xxhash (for scripts/workflows/tests).
    • jq, (installation) required for yq, which is itself required for our README.md generation, which uses tomlq (from the yq package) to include version strings from pyproject.toml.
    • Requires nodejs (for act).
    • Requires go (to run act).
    • docker (for act).

Commit Process

  1. (Optionally) Fork the develop branch.
  2. Stage your files: git add path/to/file.py.
  3. bash scripts/pre.sh, this will format, lint, and test the code.
  4. git status check if anything changed (generated README.md for example), if so, git add the changes, and go back to the previous step.
  5. git commit -m "...".
  6. Make a PR to develop (or push to develop if you have the rights).

Release Process

These instructions are for maintainers of the project.

  1. develop branch: Run bash scripts/pre.sh to ensure everything is in order.
  2. develop branch: Bump the version in pyproject.toml, following semantic versioning principles. Also modify the last_unstable_release and last_stable_release in the [tool.changeguard-project-metadata] table as appropriate.
  3. develop branch: Commit these changes with a message like "Prepare release X.Y.Z". (See the contributions section above).
  4. master branch: Merge the develop branch into the master branch: git checkout master && git merge develop --no-ff.
  5. master branch: Tag the release: Create a git tag for the release with git tag -a vX.Y.Z -m "Version X.Y.Z".
  6. Publish to PyPI: Publish the release to PyPI with bash scripts/deploy-to-pypi.sh.
  7. Push to GitHub: Push the commit and tags to GitHub with git push and git push --tags.
  8. git checkout develop && git merge master The --no-ff option adds a commit to the master branch for the merge, so refork the develop branch from the master branch.
  9. git push origin develop Push the develop branch to GitHub.

Release files for changeguard 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for changeguard 0.3.1
File Size Uploaded
changeguard-0.3.1.tar.gz 15.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for changeguard 0.3.1
File Interpreter ABI Platform
changeguard-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 28.2 kB

Release files / changeguard-0.3.1.tar.gz

Download URL changeguard-0.3.1.tar.gz
Size 15.4 kB
Tags Source
SHA-256 checksum
How to use checksums
fa380adfe51ecd052f82603b3193e6319a2911d87a37aded93e8108d7e3920a4
BLAKE2b-256 checksum
How to use checksums
59c2fa772bf416615260b85ce5d870c8eae5b7d90c5c015346167a19bd98b0eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.0

Release files / changeguard-0.3.1-py3-none-any.whl

Download URL changeguard-0.3.1-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e8fb3f4d9fe89fa81017cdbe18f9f83479cb50dccd2b899db43d6a0a500fdec
BLAKE2b-256 checksum
How to use checksums
47f32fa8facf0ff7c68da2f4d08f3f348f8d5797941602cb8eae68c6a2d14d56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.0

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page