Merge branch 'master' of ssh://git-annex.branchable.com into master

This commit is contained in:
Joey Hess 2020-08-25 13:01:03 -04:00
commit 2ab574a72f
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
7 changed files with 285 additions and 0 deletions

View file

@ -0,0 +1,110 @@
### Please describe the problem.
the goal was to have files unlocked (no symlinks) and gain "efficient" clone which would not consume more space through hardlinks.
But if mode is thin in the clone - we get a copy within the clone
### What steps will reproduce the problem?
[[!format sh """
#!/bin/bash
export PS4='> '
set -x
set -eu
cd "$(mktemp -d ${TMPDIR:-/tmp}/dl-XXXXXXX)"
git annex version | head -n 1
(
mkdir src
cd src
git init
git annex init
git commit --allow-empty -m empty
git annex adjust --unlock
git config annex.thin true
touch 123
git annex add 123
git commit -m 123 123
)
git clone --shared src dest
(
cd dest
# without it it would stall in "get" call
# https://git-annex.branchable.com/bugs/get_is_stuck_unless_a_clone_was_previously_explicitly___34__annex_init__34__ed/
git annex init
git config annex.thin true
git annex get 123
)
: are inodes the same?
ls -lLi {dest,src}/{123,.git/annex/objects/*/*/*/*}
"""]]
### Please provide any additional information below.
[[!format sh """
$> bash check-annex-thin-hardlink.sh
> set -eu
>> mktemp -d /home/yoh/.tmp/dl-XXXXXXX
> cd /home/yoh/.tmp/dl-je8JzWt
> git annex version
> head -n 1
git-annex version: 8.20200810+git47-g27329f0bb-1~ndall+1
> mkdir src
> cd src
> git init
Initialized empty Git repository in /home/yoh/.tmp/dl-je8JzWt/src/.git/
> git annex init
init (scanning for unlocked files...)
ok
(recording state in git...)
> git commit --allow-empty -m empty
[master (root-commit) be447d9] empty
> git annex adjust --unlock
adjust
Switched to branch 'adjusted/master(unlocked)'
ok
> git config annex.thin true
> touch 123
> git annex add 123
add 123
ok
(recording state in git...)
> git commit -m 123 123
[adjusted/master(unlocked) c5db915] 123
1 file changed, 1 insertion(+)
create mode 100644 123
> git clone --shared src dest
Cloning into 'dest'...
done.
> cd dest
> git annex init
init (merging origin/git-annex into git-annex...)
(recording state in git...)
(scanning for unlocked files...)
Repository was cloned with --shared; setting annex.hardlink=true and making repository untrusted.
ok
(recording state in git...)
> git config annex.thin true
> git annex get 123
get 123 (from origin...)
(checksum...) ok
(recording state in git...)
> : are inodes the 'same?'
> ls -lLi dest/123 dest/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 src/123 src/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
49711952 -rw------- 2 yoh yoh 0 Aug 25 11:04 dest/123
49711952 -rw------- 2 yoh yoh 0 Aug 25 11:04 dest/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
49711742 -rw------- 2 yoh yoh 0 Aug 25 11:04 src/123
49711742 -rw------- 2 yoh yoh 0 Aug 25 11:04 src/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
"""]]
[[!meta author=yoh]]
[[!tag projects/datalad]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="kyle"
avatar="http://cdn.libravatar.org/avatar/7d6e85cde1422ad60607c87fa87c63f3"
subject="comment 1"
date="2020-08-25T15:20:45Z"
content="""
I believe this is by design. See ecd0684bf (avoid hard linking object
from other repository when annex.thin is set, 2016-01-13).
"""]]

View file

@ -0,0 +1,76 @@
### Please describe the problem.
A very basic operation is stuck (isn't there a unit-test?)
### What steps will reproduce the problem?
[[!format sh """
#!/bin/bash
export PS4='> '
set -x
set -eu
cd "$(mktemp -d ${TMPDIR:-/tmp}/dl-XXXXXXX)"
(
mkdir src
cd src
git init
git annex init
touch 123
git add 123
git commit -m 123 123
)
#git clone --shared src dest
git clone src dest
(
cd dest
#git annex init
# would stall unless we git annex init above with 8.20200810+git5-gb41f77445-1~ndall+1
git annex get 123
)
ls -lLi {dest,src}/123
"""]]
### What version of git-annex are you using? On what operating system?
8.20200810+git47-g27329f0bb-1~ndall+1
### Please provide any additional information below.
[[!format sh """
$> bash check-annex-hardlink.sh
> set -eu
>> mktemp -d /home/yoh/.tmp/dl-XXXXXXX
> cd /home/yoh/.tmp/dl-sgm3azv
> mkdir src
> cd src
> git init
Initialized empty Git repository in /home/yoh/.tmp/dl-sgm3azv/src/.git/
> git annex init
init (scanning for unlocked files...)
ok
(recording state in git...)
> touch 123
> git add 123
> git commit -m 123 123
[master (root-commit) 8e97f2f] 123
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 123
> git clone src dest
Cloning into 'dest'...
done.
> cd dest
> git annex get 123
(merging origin/git-annex into git-annex...)
(scanning for unlocked files...)
^C
"""]]
[[!meta author=yoh]]
[[!tag projects/datalad]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="yarikoptic"
avatar="http://cdn.libravatar.org/avatar/f11e9c84cb18d26a1748c33b48c924b4"
subject="comment 1"
date="2020-08-25T15:01:16Z"
content="""
FWIW:ha ha -- just now spotted that I have used `git add` instead of `git annex add` (not that `get` should have stuck)
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="kyle"
avatar="http://cdn.libravatar.org/avatar/7d6e85cde1422ad60607c87fa87c63f3"
subject="comment: works on my end"
date="2020-08-25T15:02:43Z"
content="""
Your script doesn't stall on my end. I tried with the last git-annex
release 8.20200810 and the commit you report (27329f0bb).
"""]]

View file

@ -0,0 +1,47 @@
[[!comment format=mdwn
username="yarikoptic"
avatar="http://cdn.libravatar.org/avatar/f11e9c84cb18d26a1748c33b48c924b4"
subject="pidlock to blame!"
date="2020-08-25T16:27:08Z"
content="""
Thank you Kyle! your comment reminded me that yesterday while I was trying to reproduce [stalling issue on NFS (not yet reported here)]() I have set globally pidlock=true!
<details>
<summary>Here is an adjusted script which sets it in the clone and causes the stall (also changed to use git annex add instead of git add)</summary>
```shell
#!/bin/bash
export PS4='> '
set -x
set -eu
cd \"$(mktemp -d ${TMPDIR:-/tmp}/dl-XXXXXXX)\"
(
mkdir src
cd src
git init
git annex init
touch 123
git annex add 123
git commit -m 123 123
)
#git clone --shared src dest
git clone src dest
(
cd dest
#git annex init
# would stall unless we git annex init above with 8.20200810+git5-gb41f77445-1~ndall+1
git config annex.pidlock true
git annex get 123
)
ls -lLi {dest,src}/123
```
</details>
"""]]

View file

@ -0,0 +1,26 @@
### Please describe the problem.
I am establishing running daily tests on annex on NFS mounted partition (one run with NFS as TMPDIR -- passes, another with NFS for HOME).
### What version of git-annex are you using? On what operating system?
as of now git-annex-standalone_8.20200810+git47-g27329f0bb-1~ndall+1_amd64.deb
### Please provide any additional information below.
[full build/log](https://github.com/datalad/datalad-extensions/pull/29/checks?check_run_id=1024502537)
[[!format sh """
...
All 840 tests passed (707.87s)
.t/gpgtmp/7: removePathForcibly:removePathForcibly:removePathForcibly:removeDirectory: unsatisfied constraints (Directory not empty)
sleeping 10 seconds and will retry directory cleanup
git-annex: .t/gpgtmp/7/.nfs0000000000669ff400000a6b: removePathForcibly:removePathForcibly:removePathForcibly:removePathForcibly:removeLink: resource busy (Device or resource busy)
##[error]Process completed with exit code 1.
"""]]
so it seems to relate to gpg, and not unlikely to be out of git-annex control, but I wondered if it could potentially be some non-clean termination of underlying gpg process or alike which could/should actually be addressed on git-annex side?
[[!meta author=yoh]]
[[!tag projects/datalad]]