--check option to see if a repo exists and can be decrypted

This is to allow programs to determine if a repo uses gcrypt, per #6.

Since this program already knows the name of the manifest file and how to
download it and decrypt it, it makes sense to do the check here rather than
in, eg, git-annex.
This commit is contained in:
Joey Hess 2013-09-19 12:03:33 -04:00
parent 243671037f
commit 83d519179f
2 changed files with 36 additions and 8 deletions

View file

@ -173,6 +173,17 @@ Each item extends until newline, and matches one of the following:
``extn <name> ...``
Extension field, preserved but unused.
Detecting gcrypt repos
======================
To detect if a git url is a gcrypt repo, use: git-remote-gcrypt --check url
Exit status if 0 if the repo exists and can be decrypted, 1 if the repo
uses gcrypt but could not be decrypted, and 100 if the repo does not
exist or could not be accessed.
Note that this has to fetch the repo contents into the local git
repository, the same as is done when using a gcrypt repo.
See Also
========

View file

@ -779,14 +779,8 @@ cleanup_tmpfiles()
rm -r -f -- "${Tempdir}" >&2
}
# handle git-remote-helpers protocol
gcrypt_main_loop()
setup()
{
local input_= input_inner= r_args= temp_key=
NAME=$1 # Remote name
URL=$2 # Remote URL
mkdir -p "$Localdir"
# Set up a subdirectory in /tmp
@ -798,6 +792,17 @@ gcrypt_main_loop()
trap 'exit 1' 1 2 3 15
echo_info "Development version -- Repository format MAY CHANGE"
}
# handle git-remote-helpers protocol
gcrypt_main_loop()
{
local input_= input_inner= r_args= temp_key=
NAME=$1 # Remote name
URL=$2 # Remote URL
setup
while read input_
do
@ -849,4 +854,16 @@ gcrypt_main_loop()
done
}
gcrypt_main_loop "$@"
if [ "x$1" = x--check ]
then
NAME=dummy-gcrypt-check
URL=$2
setup
ensure_connected
if iseq "$Did_find_repo" "no"
then
exit 100
fi
else
gcrypt_main_loop "$@"
fi