### 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]]