git-age is a smudge/clean filter to encrypt/decrypt files in a git repository transparently
git-age is a Git smudge/clean filter designed to transparently encrypt and decrypt files within a Git repository, ensuring sensitive data remains secure while maintaining seamless workflow integration. It leverages age encryption for modern and efficient file protection.
Key Features:
Transparent Encryption/Decryption: Files are automatically encrypted upon commit and decrypted during checkout, with no disruption to the user experience.
Multi-User Support: Manages recipients' public keys, allowing secure collaboration among multiple users by re-encrypting files for new contributors.
Seamless Git Integration: Works as a smudge/clean filter, integrating effortlessly into existing Git workflows without requiring major changes.
Audience & Benefit:
Ideal for developers and teams managing sensitive data in Git repositories. It provides robust encryption to protect intellectual property or personal information while keeping operations straightforward. This tool is particularly beneficial for those seeking integrated encryption within their version control system rather than external solutions.
README
git-age
Disclaimer
This project is based on age.
I'm in no way affiliated with the original project.
A big shoutout to Filippo Valsorda for creating age and making it available to the public.
Set the diff.age.textconv git config to cat to see plain text diffs of encrypted files.
git config --global diff.age.textconv cat
Configuration
For now git-age is configured either via environment variables or CLI flags.
The most interesting part is where it reads and writes the private keys from.
This can be configured via the GIT_AGE_KEYS environment variable or the --keys flag.
By default git-age will store the private keys in $XDG_CONFIG_HOME/git-age/keys.txt.
Platform
Config path
Linux
$XDG_CONFIG_HOME/git-age/keys.txt i.e. $HOME/.config/git-age.keys.txt