Commit Graph

192 Commits

Author SHA1 Message Date
Andrew Ayer
7d4e6ad123 Update debian/changelog for 0.6.0-1 debian/0.6.0-1 2017-11-26 10:35:32 -08:00
Andrew Ayer
ae0cd65e93 debian packaging: support building against OpenSSL 1.1 2017-11-26 10:33:18 -08:00
Andrew Ayer
7f318eeef7 Merge tag '0.6.0' into debian 2017-11-26 10:27:44 -08: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
Andrew Ayer
0377659d18 debian packaging: bump standards version (no changes needed) debian/0.5.0-2 2016-11-23 12:52:01 -08:00
Andrew Ayer
381b3ca406 debian packaging: build against OpenSSL 1.0.x
Longer term, I will port git-crypt to OpenSSL 1.1.x.  This suffices for
now - git-crypt wouldn't have benefited from any of the 1.1 features
anyways.
2016-11-23 12:51:23 -08: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
f741d1aded Update Debian packaging for 0.5.0-1 debian/0.5.0-1 2015-05-30 20:22:29 -07:00
Andrew Ayer
6bf8cb262c Add debian/watch file 2015-05-30 20:22:19 -07:00
Andrew Ayer
3513c22082 Merge tag '0.5.0' into debian
git-crypt 0.5.0

git-crypt 0.5.0 brings a substantial performance boost to 'git-crypt
unlock' and 'git-crypt lock' under Git 1.8.5 and higher.  The improvement
should be particularly noticeable in repositories with lots of files.

In addition, there are some minor bug fixes and usability improvements.
'git-crypt gpg-add-user' now has a --trusted option which you can use
to force the addition of a user even if GPG doesn't trust the key.

Finally, git-crypt now has a man page!  To install it, pass ENABLE_MAN=yes
to 'make' and 'make install' (this will be the default once I iron out
the build system).

See the NEWS file, or the Git commit history, for a more detailed list
of changes.
2015-05-30 20:01:44 -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
Andrew Ayer
3104508adf Add --trusted option to gpg-add-user
If this option is specified, then the GPG users are added even
if their keys are not trusted by GPG.

In addition, if a full fingerprint, prefixed by 0x, is specified,
it is assumed to be trusted, regardless of its trust level in the
GPG trustdb.
2015-03-31 20:24:13 -07:00
Andrew Ayer
ad71c7ffae FIx GPG key lookup with with-fingerprint enabled in gpg.conf
When the with-fingerprint option is enabled, the gpg command invoked by
git-crypt to look up a GPG user ID returns a fingerprint for both primary
keys and sub-keys.  Previously, this misled git-crypt into thinking that
the user ID matched more than one public key.  Now, git-crypt ignores
fingerprints for sub-keys.
2015-03-31 19:41:19 -07:00
Andrew Ayer
3ce5c83b2d Wrap long lines in README 2015-03-17 15:08:58 -07:00
Andrew Ayer
6d6e96f82b Clarify security section in README 2015-03-17 15:08:35 -07:00
Andrew Ayer
c3ab393f17 Add notes to the README about symlinks, sub-modules 2015-03-15 13:55:18 -07:00
Andrew Ayer
6abf9c6956 Ignore non-files when running git ls-files
Non-files (symlinks and gitlinks (used by sub-modules)) cannot be
encrypted, so we shouldn't try messing with them.  This fixes `git-crypt
status` when used on a repository with sub-modules or symlinks when the
path to the sub-module or symlink has the git-crypt attribute (which
can happen inadvertently when using wildcards in .gitattributes).
2015-03-15 13:34:31 -07:00
Andrew Ayer
ede1461563 Makefile: create destination directories in make install 2015-03-10 08:29:31 -07:00