Commit Graph

169 Commits

Author SHA1 Message Date
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
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
Andrew Ayer
1b3f13643c Use opendir/readdir instead of scandir
scandir is a relatively recent addition to POSIX and is not available on
older versions of Mac OS X.  opendir/readdir should be more portable.
2015-02-26 22:51:40 -08:00
Andrew Ayer
8c130d3a00 Fix syntax error in commands.cpp 2015-02-09 11:42:22 -08:00
Andrew Ayer
012d78e1fe Add "do not edit" comment to .git-crypt/.gitattributes file 2015-02-09 11:37:50 -08:00
Andrew Ayer
99d4408f9e README: Add note about GitHub for Mac breakage 2015-02-09 11:37:19 -08:00
Andrew Ayer
c2de1e2194 Add --force option to 'git-crypt lock'
It will force a lock even if working directory is unclean.  Useful
for deconfiguring git-crypt if you've accidentally unlocked with the
wrong key or gotten into a similarly sticky situation.
2015-02-07 13:27:58 -08:00
Andrew Ayer
85635ae0b1 touch_file, remove_file: ignore non-existent files 2015-02-07 13:22:30 -08:00
Andrew Ayer
18d3cfeca9 Remove some dead code 2015-02-07 12:57:52 -08:00
Andrew Ayer
0c8dae2375 Only run git_deconfig if Git configuration exists
This will let us run 'git lock' even if no filters are configured.

This logic is more complicated than I would like because running
'git config --remove-section' on a non-existent section results in
a noisy error (with text printed to stderr and an exit code of 128)
instead of a quiet error like the other 'git config' commands.
2015-02-07 12:54:07 -08:00
Andrew Ayer
fc583c7d4f Add helper to get exit status of command 2015-02-07 12:43:17 -08:00
Andrew Ayer
c850d65242 Change "unconfigure" to "deconfigure" 2015-02-07 12:15:53 -08:00
Andrew Ayer
f5d36f0008 Fix wording of 'git-crypt lock' error message.
Thanks to Elliot Saba.
2015-02-07 08:52:07 -08:00
Andrew Ayer
f3890bed32 Update debian/changelog for 0.4.2-1~agwa1 debian/0.4.2-1_agwa1 2015-01-31 19:44:08 -08:00
Andrew Ayer
78fb6ab052 debian packaging: install additional docs 2015-01-31 19:42:45 -08:00
Andrew Ayer
1fc9664036 Merge tag '0.4.2' into debian
git-crypt 0.4.2

git-crypt 0.4.2 is a bugfix-only release that fixes the unlock (and lock)
commands under Git 2.2.2 and newer.  Due to an optimization introduced in
Git 2.2.2, 'git-crypt unlock' would not decrypt files in the working tree.

In addition, this version of git-crypt officially drops support for
versions of Git older than 1.7.2.
2015-01-31 19:41:21 -08:00
Andrew Ayer
1ca8f89602 Prepare for 0.4.2 release 0.4.2 2015-01-31 19:20:05 -08:00
Andrew Ayer
2fa2cffba6 Freshen Debian packaging 2015-01-27 21:36:55 -08:00
Andrew Ayer
5fd36a7ac5 Increase minimum supported Git version to 1.7.2
Previously, git-crypt claimed to support Git as old as 1.6.0 (albeit
with degraded operation).  However, this has not been true for some time,
since Git 1.6.0 does not support the --porcelain option to `git status`.

Since Git 1.7.2 was the first version of Git to support filters with
`git blame`, was released almost five years ago (in July 2010), and is
even in Debian Squeeze, it seems like a good minimum version to require.
2015-01-27 21:26:51 -08:00
Andrew Ayer
d5670c9552 Force Git to check out files by touching their mtimes
Starting with Git 2.2.2, `git checkout -f HEAD` no longer checks out
files if their mtimes haven't changed.  This causes files to remain
encrypted in the work tree after running `git-crypt unlock`, and to
remain decrypted after running `git-crypt lock`'.

To fix this, git-crypt now figures out what files are encrypted (by
checking `git check-attr` on every file output by `git ls-files`),
touches those files, and then runs `git checkout` on them.
2015-01-27 21:15:07 -08:00
Andrew Ayer
2d2053296f Fix placement of quotes in an error message 2015-01-27 21:06:29 -08:00
Andrew Ayer
216aa27009 Add helper function to get attribute name for a given key 2015-01-27 21:04:58 -08:00
Andrew Ayer
02c52ab21a Disable message about unimplemented ls-gpg-users command 2015-01-27 21:04:22 -08:00
Andrew Ayer
849401d733 Update for git-crypt 0.4.1 0.4.1 2015-01-07 20:23:28 -08:00
Andrew Ayer
12881f65fd Add 'git-crypt version' command 2015-01-07 20:23:07 -08:00