From c47ba6e5161d559ac94fb7a2762a9933a850add6 Mon Sep 17 00:00:00 2001 From: yarikoptic Date: Sun, 5 Jan 2025 00:59:40 +0000 Subject: [PATCH] initial report on encfs and per-repository ssh caching --- ...fs_more_informatively_or_do_not_fail_.mdwn | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 doc/todo/fail_on_encfs_more_informatively_or_do_not_fail_.mdwn diff --git a/doc/todo/fail_on_encfs_more_informatively_or_do_not_fail_.mdwn b/doc/todo/fail_on_encfs_more_informatively_or_do_not_fail_.mdwn new file mode 100644 index 0000000000..22722b5a53 --- /dev/null +++ b/doc/todo/fail_on_encfs_more_informatively_or_do_not_fail_.mdwn @@ -0,0 +1,60 @@ +reposting since initial post seems has failed with odd https://www.oneukrainian.com/tmp/annex-blew-1.png . + +After spending some time in troubleshooting the situation that `git-annex` for some reason claims that `origin` remote does not support git-annex, I have ran into [11 year old discussion](https://git-annex.branchable.com/forum/ssh__95__exchange__95__identification__58___read__58___Connection_reset_by_peer/#comment-1776b4d3b175c77cdb44fc8656e3352c) which boils down to + +> It would be a good idea to `git config annex.sshcaching` false in repositories stored on encfs. + +As AFAIK encfs is generally working ok (seems to test ok with bleeding edge [ref](https://github.com/datalad/git-annex/issues/216)), and overall if there is something wrong, it better be fixed and not "avoided", I think that git-annex should either inform user about necessity to not do internal caching within the same repository (e.g. to have it configured to be shared somewhere under ~/.cache/` instead or a like) if file system does not support the ssh caching, or even somehow automagically handle the case, but it should not mislead in its reporting stating that remote does not support git-annex whenever it does. + +With this minimalistic reproducer where origin on a regular filesystem and a clone is under `encfs`, we receive a misleading error: + +
+reproducer + +``` +#!/bin/bash +export PS4='> ' +set -x +set -eu + +cd "$(mktemp -d ${TMPDIR:-/tmp}/dl-XXXXXXX)" + +topd=$PWD +mkdir -p denc{r,}; encfs --standard --extpass="echo 123" $PWD/denc{r,} + +cleanup () { + # to possible kill/troubleshoot + if ! fusermount -u $topd; then + lsof $topd/denc + echo "ERROR: failed to unmount" + exit 1 + fi +} +trap cleanup SIGINT SIGHUP SIGABRT EXIT + + +mkdir d +(cd d; git init; git annex init; echo 1 > 1.dat; git annex add 1.dat; git commit -m 1 1.dat) + +echo "cloning locally and ssh works ok, testing" +git clone localhost:$topd/d d-clone +git -C d-clone annex wanted origin + +echo "but would not be happy under encfs with misleading error:" +cd denc +git clone localhost:$topd/d d-clone +git -C d-clone annex wanted origin + +``` +
+ + +``` +> git -C d-clone annex wanted origin + Unable to parse git config from origin + Remote origin does not have git-annex installed; setting annex-ignore + This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git annex enableremote origin +git-annex: cannot determine uuid for origin (perhaps you need to run "git annex sync"?) +``` + +which is simply due to the fact that git-annex does not only unable to parse, it is unable to connect. But if so, IMHO ideally it should avoid claiming anything about git annex installation there.