aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/whereis_does_not_work_in_direct_mode.mdwn
blob: 69302b0b18d251ac026fbcede83628dec64d88c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
### Please describe the problem.

`git annex whereis` says that there are no copies of any of the files that have been added in repositories running in direct mode.

In other words, if I add a file from PC1 in direct mode, `whereis` in PC2 will fail. Instead, if I add the same file from PC1 in indirect mode, `whereis` in PC2 will work correctly and will report that the file is present in PC1.

This is the error received in PC2:

    $ git annex whereis
    whereis fileA (0 copies) failed
    whereis fileB (0 copies) failed
    git-annex: whereis: 2 failed

### What steps will reproduce the problem?

The following script (available at <https://gist.github.com/gioele/dde462df89edfe17c5e3>) will reproduce this problem.

[[!format sh """
#!/bin/sh -x
 
set -e ; set -u
export LC_ALL=C
 
direct=true # set to false to make the problem disappear
 
h=${h:-localhost}
dr="/tmp/annex"
 
sync='sync -c annex.alwayscommit=true'
 
chmod a+rwx -R pc1 pc2 || true
rm -Rf pc1 pc2
 
# create central git repo
ssh $h "chmod a+rwx -R ${dr}/Docs.git" || true
ssh $h "rm -Rf ${dr}/Docs.git"
ssh $h "mkdir -p ${dr}/Docs.git"
ssh $h "cd ${dr}/Docs.git ; git init --bare"
 
d=$(pwd)
 
# populate repo in PC1
mkdir -p pc1/Docs
cd pc1/Docs
echo AAA > fileA
echo BBB > fileB
 
git init
git remote add origin $h:$dr/Docs.git
git fetch --all
 
# simulate a host without git-annex
git config remote.origin.annex-ignore true
 
git annex init "pc1"
git annex info
 
$direct && git annex direct
 
git annex add .
git annex $sync origin
 
# re-create repo on PC2
cd $d
mkdir -p pc2
cd pc2
git clone $h:$dr/Docs.git
cd Docs
 
git config remote.origin.annex-ignore true
 
git annex init "pc2"
git annex info
 
git annex whereis || true
echo "I was expecting location info to be available after info (press Enter)" ; read enter
 
git annex $sync origin
 
git annex whereis || true
echo "Why isn't location info available even after sync? (press Enter)"
"""]]

### What version of git-annex are you using? On what operating system?

git-annex version: 5.20140716-g8c14ba8