Shane Jaroch [Sat, 17 Jan 2026 13:33:19 +0000 (08:33 -0500)]
fixup! lint/cubic
Shane Jaroch [Sat, 17 Jan 2026 13:18:10 +0000 (08:18 -0500)]
lint/cubic
Shane Jaroch [Sat, 17 Jan 2026 13:10:51 +0000 (08:10 -0500)]
fixup! more fixes to support container/root mount action
Shane Jaroch [Sat, 17 Jan 2026 13:04:10 +0000 (08:04 -0500)]
squash! more fixes to support container/root mount action
hopefully fixed?
Shane Jaroch [Sat, 17 Jan 2026 12:58:10 +0000 (07:58 -0500)]
fixup! more fixes to support container/root mount action
Shane Jaroch [Sat, 17 Jan 2026 12:52:47 +0000 (07:52 -0500)]
fixup! more fixes to support container/root mount action
Shane Jaroch [Sat, 17 Jan 2026 12:47:39 +0000 (07:47 -0500)]
more fixes to support container/root mount action
Shane Jaroch [Sat, 17 Jan 2026 12:41:12 +0000 (07:41 -0500)]
fix?
Shane Jaroch [Sat, 17 Jan 2026 12:37:03 +0000 (07:37 -0500)]
fix?
Shane Jaroch [Sat, 17 Jan 2026 12:29:31 +0000 (07:29 -0500)]
add make to compat container tests dependencies
Shane Jaroch [Sat, 17 Jan 2026 12:26:03 +0000 (07:26 -0500)]
save kcov merge?
Shane Jaroch [Sat, 17 Jan 2026 12:19:02 +0000 (07:19 -0500)]
fixes/debugs
Shane Jaroch [Sat, 17 Jan 2026 12:09:14 +0000 (07:09 -0500)]
also should work, more robustly avoid kcov underreporting
Shane Jaroch [Sat, 17 Jan 2026 12:05:23 +0000 (07:05 -0500)]
fixed kcov
Shane Jaroch [Sat, 17 Jan 2026 11:55:50 +0000 (06:55 -0500)]
get the compat runners further along
Shane Jaroch [Sat, 17 Jan 2026 11:45:10 +0000 (06:45 -0500)]
fix
Shane Jaroch [Sat, 17 Jan 2026 11:17:26 +0000 (06:17 -0500)]
fix compatibility workflow and tests on older GPG
Shane Jaroch [Sat, 17 Jan 2026 10:56:11 +0000 (05:56 -0500)]
fix: CI workflows, missing target name
Shane Jaroch [Sat, 17 Jan 2026 09:50:05 +0000 (04:50 -0500)]
fix coverage, ln not copy!
Shane Jaroch [Sat, 17 Jan 2026 08:24:56 +0000 (03:24 -0500)]
separate/organized workflows; fix lints.
Shane Jaroch [Sat, 17 Jan 2026 08:04:59 +0000 (03:04 -0500)]
add compatibility workflow; fix format
Shane Jaroch [Sat, 17 Jan 2026 07:53:03 +0000 (02:53 -0500)]
lint
Shane Jaroch [Sat, 17 Jan 2026 07:43:56 +0000 (02:43 -0500)]
fix: use posix-specific syntax in docs generation
Shane Jaroch [Sat, 17 Jan 2026 07:38:40 +0000 (02:38 -0500)]
fix: termux action and format/generate targets
Shane Jaroch [Sat, 17 Jan 2026 07:28:41 +0000 (02:28 -0500)]
lint & format commands
Shane Jaroch [Sat, 17 Jan 2026 07:20:37 +0000 (02:20 -0500)]
fix termux action
Shane Jaroch [Sat, 17 Jan 2026 06:49:26 +0000 (01:49 -0500)]
fixes
Shane Jaroch [Sat, 17 Jan 2026 06:46:00 +0000 (01:46 -0500)]
macOS fix
Shane Jaroch [Sat, 17 Jan 2026 06:38:39 +0000 (01:38 -0500)]
lint/fixes
Shane Jaroch [Sat, 17 Jan 2026 06:01:07 +0000 (01:01 -0500)]
fixes?
Shane Jaroch [Sat, 17 Jan 2026 05:57:51 +0000 (00:57 -0500)]
more fixes/lint/test tidying up.
Shane Jaroch [Sat, 17 Jan 2026 05:17:52 +0000 (00:17 -0500)]
fixes/lint. tidy up. polish up.
Shane Jaroch [Sat, 17 Jan 2026 05:06:32 +0000 (00:06 -0500)]
lint/fixes
Shane Jaroch [Sat, 17 Jan 2026 04:57:37 +0000 (23:57 -0500)]
wip
Shane Jaroch [Sat, 17 Jan 2026 04:50:22 +0000 (23:50 -0500)]
wip
Shane Jaroch [Sat, 17 Jan 2026 04:45:32 +0000 (23:45 -0500)]
Update tests & code. Add Android/Termux workflow
Shane Jaroch [Sat, 17 Jan 2026 04:03:33 +0000 (23:03 -0500)]
repack on init option
Shane Jaroch [Sat, 17 Jan 2026 03:45:34 +0000 (22:45 -0500)]
wip
Shane Jaroch [Sat, 17 Jan 2026 03:03:29 +0000 (22:03 -0500)]
tidy completions
Shane Jaroch [Sat, 17 Jan 2026 02:56:06 +0000 (21:56 -0500)]
wip
Shane Jaroch [Sat, 17 Jan 2026 02:32:05 +0000 (21:32 -0500)]
update tests
Shane Jaroch [Sat, 17 Jan 2026 01:59:35 +0000 (20:59 -0500)]
update clean tests/edge cases
Shane Jaroch [Sat, 17 Jan 2026 01:52:44 +0000 (20:52 -0500)]
more tweaks/spelling
Shane Jaroch [Sat, 17 Jan 2026 01:50:21 +0000 (20:50 -0500)]
handle clean/init cases better
Shane Jaroch [Sat, 17 Jan 2026 01:48:55 +0000 (20:48 -0500)]
wip fix up stat command and clean
Shane Jaroch [Sat, 17 Jan 2026 01:00:51 +0000 (20:00 -0500)]
add command to list/stat remote; update completions
Shane Jaroch [Fri, 16 Jan 2026 23:23:43 +0000 (18:23 -0500)]
fix kcov errors
Shane Jaroch [Fri, 16 Jan 2026 23:20:09 +0000 (18:20 -0500)]
lint fixes
Shane Jaroch [Fri, 16 Jan 2026 20:52:30 +0000 (15:52 -0500)]
squash! fixes to support installation on Termux (Android)
fix installer script gnu sed for linux tests
Shane Jaroch [Fri, 16 Jan 2026 20:18:51 +0000 (15:18 -0500)]
fixes to support installation on Termux (Android)
Shane Jaroch [Thu, 15 Jan 2026 09:13:01 +0000 (04:13 -0500)]
update installer logic test
Shane Jaroch [Thu, 15 Jan 2026 06:29:53 +0000 (01:29 -0500)]
update test coverage
Shane Jaroch [Thu, 15 Jan 2026 06:24:12 +0000 (01:24 -0500)]
more fixes
Shane Jaroch [Thu, 15 Jan 2026 03:09:38 +0000 (22:09 -0500)]
lint/bug
Shane Jaroch [Wed, 14 Jan 2026 19:49:53 +0000 (14:49 -0500)]
lint
Shane Jaroch [Wed, 14 Jan 2026 18:20:47 +0000 (13:20 -0500)]
format
Shane Jaroch [Wed, 14 Jan 2026 17:19:57 +0000 (12:19 -0500)]
update completions
Shane Jaroch [Wed, 14 Jan 2026 17:06:30 +0000 (12:06 -0500)]
logic/test fix
Shane Jaroch [Wed, 14 Jan 2026 16:39:04 +0000 (11:39 -0500)]
update
Shane Jaroch [Wed, 14 Jan 2026 16:17:22 +0000 (11:17 -0500)]
update gitignore
Shane Jaroch [Wed, 14 Jan 2026 16:06:10 +0000 (11:06 -0500)]
update/fix stuff. tidy.
Shane Jaroch [Tue, 13 Jan 2026 21:50:37 +0000 (16:50 -0500)]
fix two bugs with push/clean exiting cowardly
Shane Jaroch [Sun, 11 Jan 2026 01:28:13 +0000 (20:28 -0500)]
todo wip
Shane Jaroch [Thu, 8 Jan 2026 20:32:44 +0000 (15:32 -0500)]
URL resolution logic, clean/check, shell completions
generate script generates from scratch
gen docs with shell not python
show all files (not just top-level dirs) in clean
update install.sh (automate completion installs)
fix installer logic test
remove `--check` flag in favor of `check` command
remove redundant `--help` argument on subcommands
more helpful warning (not error) message; clean msg
strip gcrypt:: & report URLs like git.
don't clean non-gcrypt URLs
clean URLs filtered specially for rsync:// protocol
update/fix clean command for sft/rclone
Shane Jaroch [Sat, 3 Jan 2026 05:00:31 +0000 (00:00 -0500)]
linting, testing; coverage reported 63.8%
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
Signed-off-by: Shane Jaroch <chown_tee@proton.me>
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>