When I rename unsynced files in a direct mode repo, the original symlink gets removed from git, but the new symlink doesn't get added back by autocommit or by explicitly using git annex add.

First, I create a file in a git-annex repo:

    $ mkdir annex1
    $ cd annex1
    $ git init
    Initialized empty Git repository in /home/cwarden/annex1/.git/
    $ git annex init
    init  ok
    (Recording state in git...)
    $ echo test > test1
    $ git annex add test1
    add test1 ok
    (Recording state in git...)
    $ git annex sync
    commit  ok
    $ ls -l
    total 4
    lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test1 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
    $ cat test1
    test

Now, I clone the repo and enable autocommit and direct mode in the second repo:

    $ cd ..
    $ git clone annex1 annex2
    Cloning into 'annex2'...
    done.
    $ cd annex2
    $ git config annex.autocommit true
    $ git annex direct
    commit
    On branch master
    Your branch is up-to-date with 'origin/master'.

    nothing to commit, working directory clean
    ok
    direct  ok

I drop the file, then rename it:

    $ git annex drop test1
    (merging origin/git-annex into git-annex...)
    (Recording state in git...)
    $ mv test1 test2
    $ ls -l
    total 4
    lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
    $ git annex sync
    commit  (Recording state in git...)
    ok
    pull origin
    ok
    push origin
    Counting objects: 6, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (5/5), done.
    Writing objects: 100% (6/6), 674 bytes | 0 bytes/s, done.
    Total 6 (delta 1), reused 0 (delta 0)
    To /home/cwarden/annex1
            2772756..ffcb7a1  annex/direct/master -> synced/master
     * [new branch]      git-annex -> synced/git-annex
    ok
    (Recording state in git...)

Now, I want to get the renamed file:

    $ git annex get test2
    $ ls -l
    total 4
    lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
    $ cat test2
    cat: test2: No such file or directory

Explicitly adding test2 doesn't work:

    $ git annex add test2
    $ git annex get test2
    $ cat test2
    cat: test2: No such file or directory

git annex fsck doesn't help:

    $ git annex fsck
    $ cat test2
    cat: test2: No such file or directory

The only way I've found to get the renamed file back into git is to use core.bare=false, but the documentation says that "there should be no good reason to need to do this, ever".

    $ git -c core.bare=false add test2
    $ git -c core.bare=false commit -m'force renamed file back into git'
    $ git annex get test2
    $ cat test2
    test

Is there a better solution?