Shane Jaroch [Wed, 7 Jan 2026 22:49:27 +0000 (17:49 -0500)]
more experimental stuff
Shane Jaroch [Wed, 7 Jan 2026 21:22:10 +0000 (16:22 -0500)]
make format
Shane Jaroch [Wed, 7 Jan 2026 21:03:11 +0000 (16:03 -0500)]
fixups/tweaks
Shane Jaroch [Sat, 3 Jan 2026 05:00:31 +0000 (00:00 -0500)]
linting, testing; coverage reported 28.1%
monkeypatch to fix kcov invocation on posix shell
(add dedicated target for pure /bin/sh testing)
remove old redundant exit 0 in test
add force push/SIGINT tests
fix silently passing (actually failing!) test
force push reword [TODO: restore require-explicit-force-push]
manifest versioning to help verify compatible & authenticity
show signer version; inject version to test
require --force to init or overwrite manifest
split up large repacking test
add separate test for repack with large objects
add method to clean unencrypted files off remote
prevent privacy leaks of previously unencrypted blob
privacy test
more safety/privacy checks and clean command/check early in execution
don't publish participants in new test
remove useless debug log statement
tidy default fetch; small fix to init
Shane Jaroch [Thu, 1 Jan 2026 04:35:53 +0000 (23:35 -0500)]
feat: Add shell completions, uninstall script, and CLI flags
Adds bash/zsh/fish completions, an uninstall script, and improves CLI with getopts (supporting -v/--version, -h/--help, and subcommands).
Signed-off-by: Shane Jaroch <chown_tee@proton.me>
Shane Jaroch [Thu, 1 Jan 2026 04:35:42 +0000 (23:35 -0500)]
feat: Add Makefile, CI, and improved testing infrastructure
Adds a Makefile for standardizing test/lint/install workflows, a GitHub Actions CI workflow, and coverage reporting tools. Also updates install.sh to support version detection.
Signed-off-by: Shane Jaroch <chown_tee@proton.me>
Shane Jaroch [Thu, 1 Jan 2026 04:35:15 +0000 (23:35 -0500)]
fix(gpg): Handle ECDH checksum error with many keys
Allow PRIVDECRYPT to iterate all secret keys instead of failing on the
first checksum error.
Anonymous recipients caused a bug in prior versions (with
ed25519 keys)
where if GPG couldn't decrypt using the first key in a user's keybox,
all push and pull operations would fail with a checksum error and exit
code 2 (EVEN IF the user had the correct key in their 2nd or 3rd slot).
The fix traps the 'error' and logs it, but lets PRIVDECRYPT continue.
The manifest's integrity is still verified by the subsequent grep.
If decryption truly fails, the script will exit safely.
Tested with GPG 2.4.8 /
ed25519 keys.
Signed-off-by: Shane Jaroch <chown_tee@proton.me>
Sean Whitton [Sun, 29 Dec 2024 09:41:44 +0000 (09:41 +0000)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sun, 29 Dec 2024 09:36:52 +0000 (09:36 +0000)]
d/copyright: Update main stanza
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Cathy J. Fitzpatrick [Sat, 16 Dec 2023 12:20:53 +0000 (04:20 -0800)]
README: Clarify description of GCRYPT_FULL_REPACK
Signed-off-by: Cathy J. Fitzpatrick <cathy@cathyjf.com>
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Cathy J. Fitzpatrick [Sat, 16 Dec 2023 12:20:53 +0000 (04:20 -0800)]
New integration test for gitception
Signed-off-by: Cathy J. Fitzpatrick <cathy@cathyjf.com>
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sat, 27 Apr 2024 09:11:18 +0000 (10:11 +0100)]
add link to joeyh's proposed fix for the force push issue
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sun, 21 Aug 2022 21:39:13 +0000 (14:39 -0700)]
release 1.5 (Debian revision -1)
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sun, 21 Aug 2022 16:16:46 +0000 (09:16 -0700)]
use stronger language regarding gitception/sftp vs. local/rsync
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Tue, 15 Jun 2021 20:49:08 +0000 (13:49 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Nathan Todd-Stone [Wed, 9 Jun 2021 23:33:15 +0000 (13:33 -1000)]
pass --error-on-no-transfer to 'rclone copyto'
GET and PUT are meant to exit nonzero on failure, and without this flag, they
always exit zero when rclone is used, even when a file is not found. That
confuses other parts of the code.
Signed-off-by: Nathan Todd-Stone <me@nathants.com>
Sean Whitton [Fri, 22 Jan 2021 01:46:47 +0000 (18:46 -0700)]
release 1.4 (Debian revision -1)
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Wed, 20 Jan 2021 20:30:12 +0000 (13:30 -0700)]
close bug
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Wed, 20 Jan 2021 20:29:39 +0000 (13:29 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Joey Hess [Wed, 20 Jan 2021 15:23:01 +0000 (11:23 -0400)]
support more standard rsync URIs
This adds support for "rsync://user@host/path", which is a valid URI,
and will be parseable by URI parsers, unlike the old "rsync://user@host:path",
which at least some URI parsers will reject due to the ":path" looking
like an unparseable port number. The old nonstandard URI form is also
still accepted.
Note that, the path in the new URI form is not relative to the home
directory, but absolute. This is necessary because "/path" looks like an
absolute directory, and there needs to be a way to specify an absolute
directory. Something like "/~/path" could be added to specify the home
directory, but seems like an unncessary complication.
Note that rsync supports rsync:// URIs itself, but those communicate
with a rsync daemon on its own port, rather than via ssh. gcrypt already
was using rsync:// to denote rsync over ssh, and this does not change
that. So, the url has to be rewritten from "rsync://user@host/path"
to the rsync location "user@host:/path"
I used this test suite while developing the rather complicated sed
expression, to make sure I did not break handling of the old URI form.
set -e
test $(rsynclocation "rsync://host/path/foo") = host:/path/foo
test $(rsynclocation "rsync://host:path/foo") = host:path/foo
test $(rsynclocation "rsync://user@host/path/foo") = user@host:/path/foo
test $(rsynclocation "rsync://user@host:path/foo") = user@host:path/foo
test $(rsynclocation "rsync://user@host/path:foo") = user@host:/path:foo
test $(rsynclocation "rsync://user@host:path:foo") = user@host:path:foo
test $(rsynclocation "rsync://user@host/path:foo/bar") = user@host:/path:foo/bar
test $(rsynclocation "rsync://user@host:path:foo/bar") = user@host:path:foo/bar
test $(rsynclocation "rsync://user@host/path/foo/bar") = user@host:/path/foo/bar
test $(rsynclocation "rsync://user@host:path/foo/bar") = user@host:path/foo/bar
Signed-off-by: Joey Hess <id@joeyh.name>
Sean Whitton [Fri, 24 Jul 2020 22:34:06 +0000 (15:34 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Wed, 22 Jul 2020 03:09:50 +0000 (20:09 -0700)]
shorten and tweak docs and output
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Wed, 22 Jul 2020 03:09:41 +0000 (20:09 -0700)]
rename new config key
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Fri, 24 Jul 2020 22:24:54 +0000 (15:24 -0700)]
avoid bashism
git-remote-gcrypt is POSIX sh.
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Fri, 24 Jul 2020 22:18:20 +0000 (15:18 -0700)]
add some blank lines back in
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Jay Colson [Thu, 23 Jul 2020 09:53:23 +0000 (10:53 +0100)]
git config to request abort if --force not passed
Default to emit a warning if the git config flag is not set.
Signed-off-by: Jay Colson <jay@karma.net>
Sean Whitton [Mon, 11 May 2020 22:20:43 +0000 (15:20 -0700)]
generalise GNU/Linux installation instructions
There isn't much point in listing distro-specific commands with the
same package name in each one, as users of those distros will already
know those commands.
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Fri, 1 May 2020 19:11:22 +0000 (12:11 -0700)]
fix filename
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Fri, 1 May 2020 19:08:24 +0000 (12:08 -0700)]
add mailing list & bug reporting info
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sun, 9 Feb 2020 06:01:20 +0000 (23:01 -0700)]
release 1.3 (Debian revision -1)
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sun, 9 Feb 2020 02:35:45 +0000 (19:35 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Travis Chen [Sat, 8 Feb 2020 19:46:30 +0000 (11:46 -0800)]
Add git-config option to set rsync put flags
Provide the ability to pass flags to `rsync` when uploading.
There are two ways to set the configuration:
- `gcrypt.rsync-put-flags`
- `remote.<name>.gcrypt-rsync-put-flags`
The flags will be applied to `rsync` during uploading when using the `rsync://`
backend. If `remote.<name>.gcrypt-rsync-put-flags` is set, the flags set in
`gcrypt.rsync-put-flags` will not be applied to the remote `<name>`.
This change also includes documentation.
We have tested with the following configurations:
1. none set
2. `git config gcrypt.rsync-put-flags "--perms --chmod=g+rX"`
3. `git config remote.<name>.rsync-put-flags "--perms --chmod=o+rX"`
4. both (2) and (3)
All local files start with only owner permissions set, and umask is set to 077.
In (1), no change in behavior as before, as expected. In (2), the remote files
have the group permissions set, as expected. In (3), the remote files have the
other permissions set, as expected. In (4), the remote files have the other
permissions set, but do not have the group permissions set, as expected.
Signed-off-by: Travis Chen <travis.chen@everchanging.dev>
Sean Whitton [Sat, 26 Oct 2019 18:03:39 +0000 (11:03 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Dmitry Zhlobo [Thu, 22 Aug 2019 17:52:15 +0000 (20:52 +0300)]
Use rst2man.py for man page generation when available
When docutils is installed on macos via pip or via homebrew there is no
`rst2man` binary but there is `rst2man.py` instead.
Signed-off-by: Dmitry Zhlobo <dima.zhlobo@gmail.com>
Sean Whitton [Sat, 26 Oct 2019 16:39:45 +0000 (09:39 -0700)]
Switch build-dep python-docutils -> python3-docutils
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Tue, 15 Oct 2019 16:29:08 +0000 (09:29 -0700)]
changelog
Dusty Mabe [Mon, 30 Sep 2019 03:00:40 +0000 (23:00 -0400)]
rpm: add license/doc files
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 02:58:19 +0000 (22:58 -0400)]
rpm: correct man page entry in files section
Code review comments [1]:
- Man pages should not be marked as %doc
- man pages extension should be globbed as the compression may change in the future.
- the man page should be installed unzipped. The compression will be handled by the rpm build process.
- %doc /usr/share/man/man1/%{name}.1.gz → %{_mandir}/man1/%{name}.1*
[1] https://bugzilla.redhat.com/show_bug.cgi?id=
1750179#c2
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 02:57:04 +0000 (22:57 -0400)]
rpm: use %{_bindir}
Code review comment [1]:
- /usr/bin/%{name} → %{_bindir}/%{name}
[1] https://bugzilla.redhat.com/show_bug.cgi?id=
1750179#c2
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 02:56:19 +0000 (22:56 -0400)]
rpm: debug_package not useful
Code review comment [1]:
- %global debug_package %{nil} is not useful for a noarch package
[1] https://bugzilla.redhat.com/show_bug.cgi?id=
1750179#c2
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 03:04:33 +0000 (23:04 -0400)]
rpm: make the rpm noarch
It's not specific to any CPU architecture.
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 02:54:50 +0000 (22:54 -0400)]
rpm: use full URL for source
Also update the setup line to %{name}-%{version} to
match the folder setup from the tar.gz file downloaded
from https://git.spwhitton.name/%{name}/snapshot/%{name}-%{version}.tar.gz
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Dusty Mabe [Mon, 30 Sep 2019 02:53:43 +0000 (22:53 -0400)]
rpm: convert tabs to spaces
Signed-off-by: Dusty Mabe <dusty@dustymabe.com>
Sean Whitton [Sat, 28 Sep 2019 14:30:02 +0000 (07:30 -0700)]
update changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Frank Grüllich [Tue, 28 May 2019 06:57:33 +0000 (08:57 +0200)]
Fixes spec file
- correct BuildRequires,
- bumps version in it.
Signed-off-by: Frank Grüllich <frank.gruellich@gmail.com>
Sean Whitton [Sun, 28 Jul 2019 09:58:10 +0000 (10:58 +0100)]
CONTRIBUTING.md is not just for github
Sean Whitton [Fri, 28 Jun 2019 13:51:20 +0000 (14:51 +0100)]
tweaks to "Signing off your commits"
Sean Whitton [Sun, 3 Mar 2019 16:14:30 +0000 (09:14 -0700)]
changelog
legrostdg [Sun, 3 Mar 2019 09:58:54 +0000 (10:58 +0100)]
GCRYPT_FULL_REPACK usage
Sean Whitton [Tue, 27 Nov 2018 05:08:37 +0000 (22:08 -0700)]
release 1.2 (Debian revision -1)
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Tue, 27 Nov 2018 05:07:57 +0000 (22:07 -0700)]
changelog tweak
Sean Whitton [Tue, 27 Nov 2018 05:04:51 +0000 (22:04 -0700)]
don't echo external command errors unless repo ID is set
Otherwise you'll get the error output whenever you push to a new
remote.
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Fri, 23 Nov 2018 04:06:41 +0000 (21:06 -0700)]
set urgency=low
Sean Whitton [Fri, 23 Nov 2018 04:04:40 +0000 (21:04 -0700)]
changelog
Sean Whitton [Fri, 23 Nov 2018 04:02:55 +0000 (21:02 -0700)]
bump copyright years
Sean Whitton [Fri, 23 Nov 2018 03:54:56 +0000 (20:54 -0700)]
output stderr from other commands when the repository is not found
Closes: #914059
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Tue, 24 Jul 2018 11:45:16 +0000 (19:45 +0800)]
er, fix changelog
Sean Whitton [Tue, 24 Jul 2018 10:26:41 +0000 (18:26 +0800)]
changelog
Sean Whitton [Tue, 24 Jul 2018 10:25:16 +0000 (18:25 +0800)]
tweak wording in Ulrike's patch
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Ulrike Uhlig [Tue, 24 Jul 2018 09:29:18 +0000 (11:29 +0200)]
Document connectivity issue error message
Sometimes, git-remote-gcrypt reports 'gcrypt: Repository not found', but
this can be due to all sorts of connectivity issues, or even due to
ssh-agent using a wrong identity. This should at least be in the docs as
it is a very unprecise error message.
Signed-off-by: Ulrike Uhlig <ulrike@debian.org>
Sean Whitton [Sat, 28 Apr 2018 20:32:53 +0000 (13:32 -0700)]
release git-remote-gcrypt 1.1 (Debian revision 1)
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sat, 28 Apr 2018 19:58:11 +0000 (12:58 -0700)]
suggest rclone
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sat, 28 Apr 2018 19:57:40 +0000 (12:57 -0700)]
changelog
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sat, 28 Apr 2018 19:56:27 +0000 (12:56 -0700)]
rewrite descriptions of rclone backend in README
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Sean Whitton [Sat, 28 Apr 2018 20:05:07 +0000 (13:05 -0700)]
tweak & move experimental warning msg
Move it to where the repository format notice used to be.
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Beren Minor [Sat, 14 Apr 2018 17:51:21 +0000 (19:51 +0200)]
Add support for several cloud storage remotes using rclone
rclone is an open-source command-line too to get and put files to several
cloud storage services that aren't supported by rsync.
git-remote-gcrypt can now push encrypted repositories to any configured rclone
remote using gcrypt::rclone://<rclone-repo>:<folder> URLs.
Signed-off-by: Beren Minor <beren.minor+git@gmail.com>
Sean Whitton [Wed, 18 Apr 2018 18:01:21 +0000 (11:01 -0700)]
add CONTRIBUTING.md and DEVELOPER-CERTIFICATE
Sean Whitton [Fri, 9 Mar 2018 18:18:22 +0000 (11:18 -0700)]
release 1.0.3 (Debian revision -1)
Sean Whitton [Fri, 9 Mar 2018 18:13:36 +0000 (11:13 -0700)]
add known issues
Sean Whitton [Fri, 9 Mar 2018 18:05:43 +0000 (11:05 -0700)]
consistent capitalisation for section headers
Sean Whitton [Fri, 9 Mar 2018 18:05:37 +0000 (11:05 -0700)]
improve first section of manpage
Sean Whitton [Fri, 9 Mar 2018 18:01:00 +0000 (11:01 -0700)]
add note about non-standard rsync URIs
Sean Whitton [Fri, 9 Mar 2018 17:58:21 +0000 (10:58 -0700)]
add year I became maintainer
Sean Whitton [Fri, 9 Mar 2018 17:58:02 +0000 (10:58 -0700)]
avoid comma splice
Sean Whitton [Fri, 20 Oct 2017 23:47:24 +0000 (16:47 -0700)]
changelog
Sean Whitton [Fri, 20 Oct 2017 23:46:43 +0000 (16:46 -0700)]
replace RPM desc with Debian package description
Frank Gruellich [Fri, 20 Oct 2017 13:40:07 +0000 (15:40 +0200)]
SPEC file to build RPMs
Sean Whitton [Fri, 6 Oct 2017 19:33:16 +0000 (12:33 -0700)]
fix version in changelog
Sean Whitton [Fri, 29 Sep 2017 01:33:54 +0000 (18:33 -0700)]
changelog
Steven R. Loomis [Thu, 17 Nov 2016 19:54:16 +0000 (11:54 -0800)]
on mingw64, 'mkdir -m 700' does not work
* workaround: skip the '-m 700' on mingw64/32 and msys
Sean Whitton [Fri, 1 Sep 2017 21:34:35 +0000 (14:34 -0700)]
Declare fast forward from 1.0.1-1
[dgit --overwrite]
Sean Whitton [Fri, 1 Sep 2017 21:34:41 +0000 (14:34 -0700)]
release 1.0.2, Debian revision -1
Sean Whitton [Fri, 1 Sep 2017 21:34:32 +0000 (14:34 -0700)]
bump std-ver
Sean Whitton [Fri, 1 Sep 2017 21:28:31 +0000 (14:28 -0700)]
Revert "drop d/links and d/gbp.conf"
This reverts commit
88b406aba96c65027cd05949cbffbecbff34a1cf.
Sean Whitton [Fri, 1 Sep 2017 21:27:51 +0000 (14:27 -0700)]
Revert "update lintian overrides for switch to native package"
This reverts commit
dc8f775b1f0a1f958bcb93d2044a3b3204657b55.
Sean Whitton [Fri, 1 Sep 2017 21:26:59 +0000 (14:26 -0700)]
Revert "switch to 3.0 (native)"
This reverts commit
8fa7bdf82d374c2c4ba3bbb881059be2fb2c1fc1.
Sean Whitton [Fri, 1 Sep 2017 21:19:04 +0000 (14:19 -0700)]
changelog tweaks
Sean Whitton [Fri, 1 Sep 2017 21:16:49 +0000 (14:16 -0700)]
update gpg dependencies for recent package split
Sean Whitton [Wed, 5 Apr 2017 22:22:33 +0000 (15:22 -0700)]
fix note about performance
Only the rsync:// backend performs incremental pushes. The sftp://
backend is no better than gitception.
Sean Whitton [Thu, 23 Mar 2017 20:51:19 +0000 (13:51 -0700)]
changelog
Etienne Brodu [Thu, 23 Mar 2017 17:57:52 +0000 (18:57 +0100)]
fix bug when using several options in gpg-args
Sean Whitton [Sun, 19 Feb 2017 22:24:07 +0000 (15:24 -0700)]
add a github pull request template
Sean Whitton [Sun, 19 Feb 2017 18:33:31 +0000 (11:33 -0700)]
clarify reason for dropping "Note to users of GnuPG version 2"
Sean Whitton [Sun, 19 Feb 2017 17:04:38 +0000 (10:04 -0700)]
tweak install.sh instructions
Sean Whitton [Sun, 19 Feb 2017 17:04:31 +0000 (10:04 -0700)]
fix typos & formatting errors
Sean Whitton [Sun, 19 Feb 2017 16:59:28 +0000 (09:59 -0700)]
drop d/links and d/gbp.conf
Sean Whitton [Sun, 19 Feb 2017 16:59:19 +0000 (09:59 -0700)]
drop "Note to users of GnuPG version 2"
Sean Whitton [Sun, 19 Feb 2017 15:48:39 +0000 (08:48 -0700)]
bump copyright years
Sean Whitton [Sun, 19 Feb 2017 15:37:54 +0000 (08:37 -0700)]
tweak credits section
Sean Whitton [Sun, 19 Feb 2017 15:36:42 +0000 (08:36 -0700)]
replace quilt patch with call to `sed` in d/rules