https://github.com/realazthat/changeguard
CLI to check if your repository/directory files have changed over the span of a script.
https://github.com/realazthat/changeguard
Last synced: about 2 months ago
JSON representation
CLI to check if your repository/directory files have changed over the span of a script.
- Host: GitHub
- URL: https://github.com/realazthat/changeguard
- Owner: realazthat
- License: mit
- Created: 2024-03-25T10:28:15.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-06-09T02:25:11.000Z (12 months ago)
- Last Synced: 2025-03-09T08:02:52.753Z (3 months ago)
- Language: Shell
- Homepage:
- Size: 165 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changeguard/__init__.py
- License: LICENSE.md
Awesome Lists containing this project
README
# ChangeGuard
![Top language][9] ![GitHub License][3] [![PyPI - Version][4]][5]
[![Python Version][8]][5]| | Status | Stable | Unstable | |
| ------- | -------------------------- | ------------------------- | ------------------------- | ------------------ |
| Master | [![Build and Test][1]][2] | [![since tagged][6]][10] | | ![last commit][7] |
| Develop | [![Build and Test][11]][2] | [![since tagged][12]][13] | [![since tagged][15]][16] | ![last commit][14] |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](./.github/workflows/build-and-test.yml)).**Requirements:**
- Linux-like environment
- Why: Uses pexpect.spawn().
- Python 3.8+
- Why: Some dev dependencies require Python 3.8+.```bash
# 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/[email protected]
```### 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`](./.python-version).
- `nvm` for prettier (markdown formatting).
- `bash`, `grep`, `xxd`, `git`, `xxhash` (for scripts/workflows/tests).
- `jq`, ([installation](https://jqlang.github.io/jq/)) required for
[yq](https://github.com/kislyuk/yq), which is itself required for our
`README.md` generation, which uses `tomlq` (from the
[yq](https://github.com/kislyuk/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](#commit-process)).
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.[1]:
https://github.com/realazthat/changeguard/actions/workflows/build-and-test.yml/badge.svg?branch=master
[2]:
https://github.com/realazthat/changeguard/actions/workflows/build-and-test.yml
[3]: https://img.shields.io/github/license/realazthat/changeguard
[4]: https://img.shields.io/pypi/v/changeguard
[5]: https://pypi.org/project/changeguard/
[6]:
https://img.shields.io/github/commits-since/realazthat/changeguard/v0.3.1/master
[7]: https://img.shields.io/github/last-commit/realazthat/changeguard/master
[8]: https://img.shields.io/pypi/pyversions/changeguard
[9]:
https://img.shields.io/github/languages/top/realazthat/changeguard.svg?&cacheSeconds=28800
[10]:
https://github.com/realazthat/changeguard/compare/v0.3.1...master
[11]:
https://github.com/realazthat/changeguard/actions/workflows/build-and-test.yml/badge.svg?branch=develop
[12]:
https://img.shields.io/github/commits-since/realazthat/changeguard/v0.3.1/develop
[13]:
https://github.com/realazthat/changeguard/compare/v0.3.1...develop
[14]: https://img.shields.io/github/last-commit/realazthat/changeguard/develop
[15]:
https://img.shields.io/github/commits-since/realazthat/changeguard/v0.3.1/develop
[16]:
https://github.com/realazthat/changeguard/compare/v0.3.1...develop