root
4f04d2d43b
Encrypt to self by default; basic functionality now needs no configuration
...
Introduces gcrypt.participants "simple" mode which encrypts to self, and
accepts any valid signature by default. No configuration needed for
private repositories.
We also adds remote.<name>.gcrypt-participants to configure this per
remote.
2013-02-14 00:00:00 +00:00
root
14da0a4d33
Migrate to SHA-256 and implicit repo ID (PARTIAL REPO FORMAT CHANGE)
...
* local, rsync, ssh, sftp repositories are still compatible
* gitception/git backend repositories are not compatible and need to be
deleted and recreated
* Put manifest in a static location, so we don't need #fragment in the URL
* Record repository ID for each remote, and warn if it changes.
* Use SHA-256 by default but allow reading SHA-224-identified packfiles
* The URL #fragment identifies branch to use when using the git backend
2013-02-14 00:00:00 +00:00
root
4d28d8fe4d
Do not use grep -F (busybox incompatible)
2013-02-14 00:00:00 +00:00
root
402eca0a09
Give warning about future format change
2013-02-14 00:00:00 +00:00
root
5c16aa4bda
Allow user to set $GCRYPT_FULL_REPACK to force repack of remote
2013-02-14 00:00:00 +00:00
root
2cac13417a
Unify all uses of trap
2013-02-14 00:00:00 +00:00
root
5751a91aef
Factor out common code in do_fetch and repack
2013-02-14 00:00:00 +00:00
root
80ac8a61e2
Use normal "url-safe" variant of base64 for repo url fragment
2013-02-14 00:00:00 +00:00
root
677df0e31b
Use rsync for both rsync and ssh access
2013-02-14 00:00:00 +00:00
root
68ff0eb7c4
Document the keep field
2013-02-14 00:00:00 +00:00
root
96b7608966
Repack the encrypted remote regularly
...
Use a simple but slow method of repacking the remote repository.
Download (and verify) all packs not marked 'keep', and repack those into
a new packfile. The new packfile is marked 'keep' with generation 1.
After PUT is called on the manifest, we remove the redundant old
packfiles.
The generation number will allow further iterations of repacking to be
implemented later.
2013-02-14 00:00:00 +00:00
root
6f0af6d0ff
Simplify informational output to emphasize the new repo URL
2013-02-14 00:00:00 +00:00
root
3a7f96671e
Add ./install.sh to install git-remote-gcrypt and its man page
2013-02-14 00:00:00 +00:00
root
f1614d70ec
Parameterise type of hash used
2013-02-14 00:00:00 +00:00
root
fc6d0b6e71
Fix iseq for null strings
2013-02-14 00:00:00 +00:00
root
bb0f05e03a
Document manifest fields better
2013-02-14 00:00:00 +00:00
root
7aa54e1ae6
Use config gcrypt.participants for GPG key ids
...
Instead of using a separate keyring file (gcrypt.keyring is now
deprecated!), use a simple list of key ids. Extract all keyids and use
these to match GOODSIG <keyid> manually on the gpg status output.
The gcrypt.keyring variable is still used, but it will be removed later.
2013-02-14 00:00:00 +00:00
root
6173d0ffe0
Use URL fragment for repository id instead of G.*
2013-02-14 00:00:00 +00:00
root
192befdb62
Request signature on manifest before uploading pack
...
Just to ensure that the user signs the push before we upload any files
(pack or manifest) to the remote.
2013-02-14 00:00:00 +00:00
root
b1f7d3ec22
Support rsync://
2013-02-14 00:00:00 +00:00
root
e2de0ce73f
Simply detect if using git repository backend. gitception:// is unneeded
...
Simply treat absolute paths that do not lead to a HEAD file as local
directory backends, and all other as git backends.
2013-02-14 00:00:00 +00:00
root
853dae8914
Use grep instead of sort/uniq
2013-02-14 00:00:00 +00:00
root
0a1730741c
Update README
2013-02-14 00:00:00 +00:00
root
fdb2732abb
Use batch-check to use only the remote_has commits we also have locally
2013-02-14 00:00:00 +00:00
root
8e1246e738
Allow deleting remote refs
2013-02-14 00:00:00 +00:00
root
543ca86029
Only encrypt to keys with encrypt capability
2013-02-14 00:00:00 +00:00
root
aa4b80db7f
Update README so it can generate a man page with rst2man
2013-02-14 00:00:00 +00:00
root
dc2d0b34b1
Minor cleanup (make sure used variables are clear at start)
2013-02-14 00:00:00 +00:00
root
6c203aaa77
Add extension namespace in manifest files, 'extn' lines are preserved
2013-02-14 00:00:00 +00:00
root
c355faebe8
Use a packfile passphrase of 33 bytes, parity with 256-bit crypto
2013-02-14 00:00:00 +00:00
root
e26f617761
Obey git config user.signingkey
2013-02-14 00:00:00 +00:00
root
745b893ebd
Use 'initial commit' as message for gitception commits
2013-02-14 00:00:00 +00:00
root
63d7a7437e
Use a separate symmetric key per packfile (REPO FORMAT CHANGE)
...
A separate key per pack is simpler and costs us very little; with
repack changes later it will be possible to change keys regularly.
2013-02-14 00:00:00 +00:00
root
1cb9281b45
Update README
2013-02-14 00:00:00 +00:00
root
5245d68453
Fix microissues
2013-02-14 00:00:00 +00:00
root
27fe6e199d
Simplify sort_stable_k2
2013-02-14 00:00:00 +00:00
root
4fe095e1c7
Use a shorter repository id in the URL, to simplify a tiny bit
2013-02-14 00:00:00 +00:00
root
3f3c9f05fc
Fix trap resets
2013-02-14 00:00:00 +00:00
root
1e0decc893
Implement stable sort (Lacking in POSIX)
2013-02-14 00:00:00 +00:00
root
da65f512a7
Simplify isnull to use case
2013-02-14 00:00:00 +00:00
root
d6df0f1453
Allow pushing into an empty repo using gitception://
2013-02-14 00:00:00 +00:00
root
1960c8ede0
Use git rev-list --stdin and cat-file --batch-check
2013-02-14 00:00:00 +00:00
root
a0232a9a67
Use utility functions for testing for equal and null strings
...
This way we do not show any sensitive data to the [ program.
2013-02-14 00:00:00 +00:00
root
71531be31e
Replace use of printf and echo with a safe variant
...
Use cat <<EOF etc for safe output of all data to pipes (mostly that we
don't know what the shell does with echo and printf).
2013-02-14 00:00:00 +00:00
root
ca6a984195
Big coding style shakeup, use Titlecase and lowercase variables
2013-02-14 00:00:00 +00:00
root
d342bbceab
Fix quoting of '$' for grep
2013-02-14 00:00:00 +00:00
root
7eb9620b7a
Fix incompatibilities with bash
2013-02-14 00:00:00 +00:00
root
6d36367de5
Fix reST syntax in README
2013-02-14 00:00:00 +00:00
root
7d849acd12
Update README
2013-02-14 00:00:00 +00:00
root
8abbe35752
Generate a Repository ID and verify it in the manifest (REPO FORMAT CHANGE)
...
This is a simplification and defends at someone maliciously switching
around different sign+encrypted manifest files of the same user. This
way we verify the repository we read is the repository we want.
Repo ID is not secret. Only requirement is that the same user does not
generate the same repo id more than onece.
2013-02-14 00:00:00 +00:00