summaryrefslogtreecommitdiff
path: root/doc/bugs/On_Windows_the_Comitted_Symlinks_are_not_Relative.mdwn
blob: 3ea44f8575ef9b3ae25b065be3d58bf401bbb919 (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
### Please describe the problem.
On Windows 7, the committed symlink files are always relative to the repo's .git root; they are not prefixed with the correct number of ../ for the given level of directing nesting.

Trying to correct this with `git annex fix` returns "You cannot run this command in a direct mode repository."

I believe that this is also the source of a pathological case I'm seeing on Windows.  After adding a lot of content, commands like `git annex sync` and `git annex status` appear to re-checksum the entire annex.  After syncing the repo to a Linux machine, fixing the symlinks there, and syncing back, these commands become snappy again.

### What steps will reproduce the problem?

[[!format sh """
git init
git annex init
mkdir -p one/two/three/four/five/six

# drop files into the dir structure
git annex add .
git annex sync
git log -p
"""]]

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

git-annex version: 5.20140203-g83e6fb7

on Windows 7 Pro

### Please provide any additional information below.

The output of `git log -p` for me:

    commit f4d88b6bc99cc94a0b0154da41d06bad3f23cc1e
    Author: Justin Geibel <...>
    Date:   Tue Feb 4 20:56:32 2014 -0500
    
        git-annex automatic sync
    
    diff --git a/git-annex-installer.exe b/git-annex-installer.exe
    new file mode 120000
    index 0000000..64f7d83
    --- /dev/null
    +++ b/git-annex-installer.exe
    @@ -0,0 +1 @@
    +.git/annex/objects/GW/Wk/SHA256E-s14413167--ea3a1e4c09ad12fdb2993a157b77b246a058f7f0ca2cd174d8cc675d1495ec4d.exe/SHA256E-s14413167--ea3a1e4c09ad12fdb2993a157b77b246a058f7f0ca2cd174d8cc675d1495ec4d.exe
    \ No newline at end of file
    diff --git a/one/git-annex-installer(1).exe b/one/git-annex-installer(1).exe
    new file mode 120000
    index 0000000..5b37a29
    --- /dev/null
    +++ b/one/git-annex-installer(1).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/6k/8K/SHA256E-s19286321--add3e1ac7ceabce7aa1ed1907895ae527fc095610d1e21127e99814728b24f11.exe/SHA256E-s19286321--add3e1ac7ceabce7aa1ed1907895ae527fc095610d1e21127e99814728b24f11.exe
    \ No newline at end of file
    diff --git a/one/two/git-annex-installer(2).exe b/one/two/git-annex-installer(2).exe
    new file mode 120000
    index 0000000..f89508f
    --- /dev/null
    +++ b/one/two/git-annex-installer(2).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/Zm/6K/SHA256E-s19573485--4f2a22c5b96308cf694c85564940d3cba22b5e8b3b714b242116c91369be75ee.exe/SHA256E-s19573485--4f2a22c5b96308cf694c85564940d3cba22b5e8b3b714b242116c91369be75ee.exe
    \ No newline at end of file
    diff --git a/one/two/three/four/five/git-annex-installer(5).exe b/one/two/three/four/five/git-annex-installer(5).exe
    new file mode 120000
    index 0000000..34565f9
    --- /dev/null
    +++ b/one/two/three/four/five/git-annex-installer(5).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/p3/Xq/SHA256E-s19956630--ec421bfc6cb0b4df2b5195d9229cbcc27a2e5505e0b879bf07e1be38dcc64a42.exe/SHA256E-s19956630--ec421bfc6cb0b4df2b5195d9229cbcc27a2e5505e0b879bf07e1be38dcc64a42.exe
    \ No newline at end of file
    diff --git a/one/two/three/four/five/six/git-annex-installer(6).exe b/one/two/three/four/five/six/git-annex-installer(6).exe
    new file mode 120000
    index 0000000..d6f97d9
    --- /dev/null
    +++ b/one/two/three/four/five/six/git-annex-installer(6).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/9G/5g/SHA256E-s19967171--c9e33dff779a43e76089ec3bee3411299d5b8abfa67ae1b459cee5a812c5194d.exe/SHA256E-s19967171--c9e33dff779a43e76089ec3bee3411299d5b8abfa67ae1b459cee5a812c5194d.exe
    \ No newline at end of file
    diff --git a/one/two/three/four/git-annex-installer(4).exe b/one/two/three/four/git-annex-installer(4).exe
    new file mode 120000
    index 0000000..a4f791c
    --- /dev/null
    +++ b/one/two/three/four/git-annex-installer(4).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/8J/pM/SHA256E-s19959961--7e4521036f891bba97f4c04527946e26ef43b14576d874c666e73dee405c18cf.exe/SHA256E-s19959961--7e4521036f891bba97f4c04527946e26ef43b14576d874c666e73dee405c18cf.exe
    \ No newline at end of file
    diff --git a/one/two/three/git-annex-installer(3).exe b/one/two/three/git-annex-installer(3).exe
    new file mode 120000
    index 0000000..dda7284
    --- /dev/null
    +++ b/one/two/three/git-annex-installer(3).exe
    @@ -0,0 +1 @@
    +.git/annex/objects/5X/qQ/SHA256E-s19915186--c6dc288ec8a77404c0ebc22cbe9b4ec911103fd022c3ca74eec582604dff80a7.exe/SHA256E-s19915186--c6dc288ec8a77404c0ebc22cbe9b4ec911103fd022c3ca74eec582604dff80a7.exe
    \ No newline at end of file

> [[fixed|done]] -- I didn't notice this before because it happened to do
> the right thing if you cd'd into the subdir before adding the file there.
>
> WRT the slow down issue, I don't see how it could matter to git-annex on
> Windows whether the symlinks point to the right place. It only looks at
> the basename of the symlink target to get the key. If you have a
> repository that behaves poorly, you can probably use --debug to see if
> git-annex is calling some expensive series of git commands somehow.
> --[[Joey]]