EyePatch is a command-line tool designed to simplify the management of git patches derived from branches. It streamlines the process of creating, applying, and organizing patches, making it easier for teams and individuals to maintain clean and reproducible code changes across different environments or repositories.
Specifically, it is meant to supplement general git usage of branches to allow visualizing and managing commits over time for the branch and understanding the overall payload that a branch contains.
It is built specifically with Windows 10 and newer versions in mind.
- Generate patches from any branch, from its creation to tip
- Produces visual diffs (using windiff or similar tools) for patches
- Visualizes diffs for all changes in the branch, from its creation to tip
- Integrates with standard git workflows
- Simple CLI interface
git clone https://github.com/yourusername/EyePatch.git
cd EyePatchdotnet restore
dotnet publishPlace a .eyepatch.settings JSON file in the root of user directory (%USERPROFILE%). This file is optional.
- DiffApp
Type:
stringDefault:"windiff"Program to be invoked for diff-ing files. It is expected that windiff or whatever tool is called is installed and on the path. The tool will be called with a text file containing a pair of original and modified file paths, a pair per line, such as:
a b
c d- PatchDirectory
Type:
stringDefault: %ONEDRIVE%\patches Absolute path to where patches should be saved. If not set, the tool will create (if it does not exist) apatchesdirectory under %ONEDRIVE%.
{
"DiffApp": "joediff",
"PatchDirectory": "C:\\patches_go_here"
}Save the resultant committed changes in a branch since it forked, plus any current changes (staged or not), producing a single patch.
Optionally specify a name for the patch file. If not file name is specified, the branch name will be used, choosing the string after \. This is meant to simplify the common pattern of naming branches user\\alias\\name. A time stamp with year, month, day, hours, minutes, seconds and milliseconds, using the yyyyMMdd-HHmmss-fff format is appended to provide uniqueness. Example patch file: Feature1.20250409-194108-667.patch.
Should be executed in the context of a branch being checked out.
eyepatch save [optional-patch-name]Show the differences of the resultant committed changes in a branch since it forked, plus any current changes (staged or not).
Should be executed in the context of a branch being checked out.
eyepatch diffShow the differences of a given patch file against its base commit. Requires a patch-file argument.
Should be executed in the context of a branch being checked out.
eyepatch view <patch-file>Show the currently changes, added or removed files and identifies if they will conflicts with newer commits.
Should be executed in the context of a branch being checked out.
eyepatch statuseyepatchContributions are welcome! Please open issues or submit pull requests for bug fixes, features, or documentation improvements.
EyePatch is licensed under the MIT License. See LICENSE for details.