> I think that the InvalidSpecificationException may be explained by the fact that top level references are expected to be in uppercase (eg. HEAD, FETCH_HEAD).

Indeed. This passes:

```csharp
[Fact]
public void ReadingReflogOfUnbornReferenceIsEmpty()
{
    using (var repo = new Repository(StandardTestRepoWorkingDirPath))
    {
        Assert.Empty(repo.Refs.Log("refs/heads/toto"));
    }
}
```

Since reading seems to be cool, I think we just need to make sure writes work. And that appears to be handled for us by libgit2.

https://github.com/dahlbyk/libgit2sharp/compare/reflog-refactor

I suppose one of these days I should ask for access to the main repo so I don't have to play with forks.