git-annex-shell: Added support for operating inside gcrypt repositories.

* Note that the layout of gcrypt repositories has changed, and
  if you created one you must manually upgrade it.
  See http://git-annex.branchable.com/upgrades/gcrypt/
This commit is contained in:
Joey Hess 2013-09-24 17:25:47 -04:00
parent f9e438c1bc
commit 4c954661a1
13 changed files with 221 additions and 50 deletions

View file

@ -1230,6 +1230,15 @@ Here are all the supported configuration settings.
Used to identify the XMPP address of a Jabber buddy.
Normally this is set up by the git-annex assistant when pairing over XMPP.
* `remote.<name>.gcrypt`
Used to identify gcrypt special remotes.
Normally this is automatically set up by `git annex initremote`.
It is set to "true" if this is a gcrypt remote.
If the gcrypt remote is accessible over ssh and has git-annex-shell
available to manage it, it's set to "shell"
# CONFIGURATION VIA .gitattributes
The key-value backend used when adding a new file to the annex can be

View file

@ -29,7 +29,9 @@ gcrypt:
## notes
For git-annex to store files in a repository on a remote server, you need
shell access, and `rsync` must be installed.
shell access, and `rsync` must be installed. Those are the minimum
requirements, but it's also recommended to install git-annex on the remote
server, so that [[git-annex-shell]] can be used.
While you can use git-remote-gcrypt with servers like github, git-annex
can't store files on them. In such a case, you can just use

View file

@ -50,14 +50,18 @@ the gpg key used to encrypt it, and then:
## encrypted git-annex repository on a ssh server
If you have a ssh server that has git-annex and rsync installed, you can
set up an encrypted repository there. Works just like the encrypted drive
except without the cable.
If you have a ssh server that has rsync installed, you can set up an
encrypted repository there. Works just like the encrypted drive except
without the cable.
First, on the server, run:
git init --bare encryptedrepo
(Also, install git-annex on the server if it's possible & easy to do so.
While this will work without git-annex being installed on the server, it
is recommended to have it installed.)
Now, in your existing git-annex repository:
git annex initremote encryptedrepo type=gcrypt gitrepo=ssh://my.server/home/me/encryptedrepo keyid=$mykey

25
doc/upgrades/gcrypt.mdwn Normal file
View file

@ -0,0 +1,25 @@
Unfortunately the initial gcrypt repository layout had to be changed
after git-annex version 4.20130920. If you have an encrypted git repository
created using version 4.20130920 or 4.20130909, you need to manually
upgrade it.
If you look at the contents of your gcrypt repository, you will
see a bare git repository, with a few three-letter subdirectories,
which are where git-annex stores its encrypted file contents:
<pre>
27f/ branches/ description hooks/ objects/
HEAD config f37/ info/ refs/
</pre>
In the example above, the subdirectories are `27f` and `f37`.
All you need to do to transition is move those subdirectories
into an `annex/objects` directory.
mkdir annex ; mkdir annex/objects ; mv 27f f37 annex/objects
Probably those are the only 3 letter things inside your git repository,
so this will probably work:
mkdir annex ; mkdir annex/objects ; mv ??? annex