Commit Graph

194 Commits

Author SHA1 Message Date
Andrew Ayer
968c924798 GitHub actions: upgrade download/upload artifacts
Closes: #313
2024-09-03 19:30:58 -04:00
Andrew Ayer
08dbdcfed4 When adding GPG collaborator, include full fingerprint in commit message
Short key IDs are bad (https://evil32.com/)

Closes: #253
2022-06-07 12:34:52 -04:00
Andrew Ayer
a1e6311f56 Prepare 0.7.0 release 0.7.0 2022-04-21 13:08:16 -04:00
Andrew Ayer
12c422228a Add GitHub Actions to build & upload release binaries
Closes: #227
2022-04-21 13:02:07 -04:00
Andrew Ayer
1c905faeb5 Remove references to the mailing lists
Since the git-crypt mailing lists have barely been used, and mailing
lists seem to be falling out of fashion for open source projects, I've
decided to shut down the git-crypt mailing lists in favor of functionality
provided by GitHub.

For announcements of new releases, you can watch the git-crypt
repository (https://github.com/AGWA/git-crypt) for new releases.

For bug reports, you can file an issue:
https://github.com/AGWA/git-crypt/issues

For discussions, you can use GitHub's new discussions feature:
https://github.com/AGWA/git-crypt/discussions
2021-02-28 10:15:20 -05:00
Andrew Ayer
7c129cdd38 Don't interpret a literal "-" as an option argument on command line
This allows the following command to work properly:

git-crypt export-key -

Previously, you had to run this command, because - was being interpreted
as an option argument:

git-crypt export-key -- -
2020-04-28 09:14:29 -04:00
Andrew Ayer
89bcafa1a6 Use an enum for git checkout batch size instead of hard-coding constant 2020-01-25 10:21:23 -05:00
Andrew Ayer
88705f996c Improve clarity in README 2020-01-25 10:18:10 -05:00
Andrew Ayer
d1fd1353f8 Execute git checkout in batches to avoid overlong argument lists
Closes: #195
Closes: #194
Closes: #150
2020-01-25 10:16:20 -05:00
Andrew Ayer
ce716b130f Document how to exclude .gitattributes from encryption 2019-05-02 12:52:54 -07:00
Andrew Ayer
8618098bcc Update gitattributes docs 2019-05-02 12:51:02 -07:00
Yuvi Panda
29974b4fba Recommend using '**' to encrypt entire directories
gitattributes now supports '**' to mean 'entire subtree'.
Using '*' instead of '**' is an easy mistake to make with pretty
bad consequences. Hopefully this added emphasis will make
it less likely users make the mistake.
2019-05-02 12:49:15 -07:00
Andrew Ayer
af846389e5 Document lack of key rotation in README
Based on text provided by Paul Sokolovsky <pfalcon@users.sourceforge.net>.

Closes: #72
2019-05-02 12:36:27 -07:00
Andrew Ayer
699d7eb246 Fix typo in README
Closes: #172
2019-05-02 12:31:48 -07:00
Krish
549ce4a490 Fix typo in log message
Fix grammar.
2019-05-02 12:29:51 -07:00
Andrew Ayer
546664f152 Prepare 0.6.0 release 0.6.0 2017-11-26 10:24:03 -08:00
Andrew Ayer
37df6fb5ad Update INSTALL file to reflect C++11 requirement 2017-11-26 10:21:23 -08:00
Andrew Ayer
f3dd69e4c7 Update THANKS file 2017-11-26 10:05:42 -08:00
Andrew Ayer
ccdcc76f8e Switch from NULL to nullptr 2017-09-10 12:36:21 -07:00
Andrew Ayer
f03fdc6ad0 Clean up readdir code, add a comment about why we're using readdir 2017-09-10 12:34:36 -07:00
Andrew Ayer
0e4ad51a13 Update a comment regarding unique_ptr 2017-09-10 12:34:36 -07:00
Adrian Cohea
d3bb5aba46 Addresses -Wdeprecated-declarations warnings
changing all references of std::auto_ptr to std::unique_ptr and changing the implementation of get_directory_contents() to use readdir, which is now reentrant, instead of readdir_r.

Signed-off-by: Andrew Ayer <agwa@andrewayer.name>

  Note: old implementations or readdir might not be re-entrant, but that's OK
  because git-crypt is not multi-threaded.
2017-09-10 12:34:05 -07:00
Kevin Borgolte
edfa3dcb5f Allow GPG to fail on some keys
If multiple GPG keys exist that could be used to decrypt the repository
key, but GPG fails on one of them (e.g., the first one because it is
stored on a SmartCard that is not plugged in), then no other keys are
used to try to decrypt it, failing entirely instead of trying the
additional GPG keys.

Modified-by: Andrew Ayer <agwa@andrewayer.name>

  * Make exception variable const
  * Make whitespace conform to project conventions

Signed-off-by: Andrew Ayer <agwa@andrewayer.name>

Closes: #88
2017-09-10 12:25:50 -07:00
Andrew Ayer
2b1076108e Enable C++11 in Makefile 2017-09-10 12:24:52 -07:00
ticktockhouse
00a7887486 Fix tables in install.md
Closes: #119
2017-09-10 12:20:35 -07:00
Andrew Ayer
101b738a8d Read gpg program from git config gpg.program ; ported from fork by alanrossmachinery
Modified-By: Andrew Ayer <agwa@andrewayer.name>

  * Make whitespace conform to project conventions

Closes #89
Closes #65
2017-09-10 12:14:55 -07:00
Andrew Ayer
934914c2c4 Fix typo in README
Closes #83
2017-09-10 12:09:31 -07:00
Andrew Ayer
a6170413eb Sync README changes to README.md 2017-09-10 12:05:13 -07:00
Caleb Maclennan
03ef81e541 Update link to git-remote-gcrypt project
Fixes #96

Signed-off-by: Andrew Ayer <agwa@andrewayer.name>
2017-09-10 12:04:58 -07:00
Wael M. Nasreddine
553c1b0387 crypto: fix for compatibility with openssl 1.1
Closes: #128
2017-09-10 11:33:23 -07:00
Kevin Menard
788a6a99f4 Make the repo state directory location configurable.
Modified-by: Andrew Ayer <agwa@andrewayer.name>

  * Rename a local variable to be more accurate.

Signed-off-by: Andrew Ayer <agwa@andrewayer.name>
2016-06-27 12:08:00 -07:00
Andrew Ayer
b47176e6a8 Don't hard code path to git-crypt in .git/config on Linux
There's a tradeoff.  When the path is hardcoded, it's guaranteed that
git-crypt will be found no matter where you run git or what your $PATH is.
On the other hand, hardcoding means that things break if git-crypt changes
location, which could easily happen if you copy a repository to a different system
(see https://github.com/AGWA/git-crypt/issues/71 for example).

In hindsight, I think this was a bad tradeoff.  Now, if git-crypt is
invoked as a bare filename (no slashes), the bare filename is placed
in .git/config under the assumption that it can be found via $PATH
(this assumption will be true as long as git-crypt wasn't resolved via
a relative path in $PATH).  This logic was already being used on
non-Linux OSes and it seemed to work fine.
2015-12-26 14:30:42 -08:00
Andrew Ayer
c63a727177 Mark .gpg files in .git-crypt as binary
To remove any possibility of Git treating them as text by accident.

Closes #55.
2015-07-29 21:51:11 -07:00
Andrew Ayer
e0b3bd754f Remove gnuism from Makefile
According to POSIX, $< is only valid with inference rules, not normal
target rules.
2015-06-13 10:54:50 -07:00
Andrew Ayer
bc7e55b68f Prepare 0.5.0 release 0.5.0 2015-05-30 19:53:04 -07:00
Andrew Ayer
f56911726a Makefile: refine man page rules
Rename HAS_DOCBOOK option to ENABLE_MAN.

Allow xsltproc to fetch the Docbook stylesheet from the Internet if it's
not installed locally.  This will hopefully make it easier for folks
to build the man page.
2015-05-30 19:52:29 -07:00
Andrew Ayer
9bbd39c491 Add instructions for building man page to INSTALL 2015-05-30 19:09:17 -07:00
Andrew Ayer
5dc55c3b2a Makefile: refine man page rules 2015-05-30 19:09:01 -07:00
Andrew Ayer
ba250b87ad Add copyright notice to Makefile 2015-05-30 19:09:01 -07:00
Andrew Ayer
83b58eafa7 Overhaul Makefile
Support building the man page, but only if HAS_DOCBOOK variable set to "yes"
2015-05-30 19:09:01 -07:00
Andrew Ayer
b4569ae6c1 Add man page 2015-05-28 21:24:16 -07:00
Andrew Ayer
0a2e633d7f Recommend Git 1.8.5 or newer for best performance
Since older versions of Git have to spawn a separate
check-attr process for every file in the repository,
which is slow.
2015-05-25 15:26:32 -07:00
Andrew Ayer
ca98d1aed1 Minor README tweaks 2015-05-25 15:25:44 -07:00
Andrew Ayer
4acb4205eb git_version: cache the Git version
(to avoid repeated invocations of `git version`)
2015-05-24 18:58:13 -07:00
Andrew Ayer
1988ee3819 Speed up lock/unlock by using single git check-attr process
Previously, lock/unlock needed to spawn a separate `git check-attr`
process for every single file in the repository (whether encrypted
or not).  This was extremely inefficient, especially on Windows.

Now, git-crypt spawns a single `git check-attr` process and communicates
with it over stdin.  In a repository with thousands of files, this
results in a speedup of nearly 100x.

This relies on the --stdin and -z options to `git check-attr`, which
were only added in Git 1.8.5 (released 27 Nov 2013).  With older versions
of Git, git-crypt falls back to the old and slower code.
2015-05-24 18:55:58 -07:00
Andrew Ayer
44f70e6b48 Add Coprocess class
It provides a convenient way to spawn a process and read from/write to
its stdin/stdout.
2015-05-24 18:54:11 -07:00
Andrew Ayer
3db6271492 Re-license parse_options under X11 license 2015-05-17 14:38:12 -07:00
Andrew Ayer
c279a6a20a Add helpers to faciliate Git version comparison
This will be useful as we start to gate code on the version of Git that's installed.
2015-05-16 21:10:44 -07:00
Andrew Ayer
439bcd852d Write a helper function to get the version of Git
This will be useful as we start to gate code on the version of Git that's installed.

A lot of code out in the wild seems to assume that the output of `git version`
is "git version $VERSION", so I'm assuming it's safe for git-crypt to rely
on that too.
2015-05-14 22:23:21 -07:00
Andrew Ayer
7880b30e8c Update INSTALL file
Streamline the instructions a bit.  Mention the Debian/Ubuntu and
RHEL/CentOS packages for each dependency.
2015-04-24 20:53:19 -07:00