Re: [PATCH v2 38/43] refs: make some files backend functions public
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:06:47
Michael Haggerty [off-list ref] writes:
quoted
Right now, for cross-backend reads/writes, the lmdb code cheats. It simply does the write directly and immediately. This means that these portions of transactions cannot be rolled back. That's clearly bad.That's a really good point. I hate to break it to you, but the handling of symrefs in Git is already a mess. HEAD is the only symref that I would really trust to work correctly all the time. So I think that changes needn't be judged on whether they handle symrefs perfectly. They should just not break them in any dramatic new ways. ... If everything that I've said is correct, then my opinion is that it would be perfectly adequate if your code would handle the specific case of HEAD (by hook or by crook), and if there are any other cross-backend symrefs, just die with a message stating that such usage is unsupported. Junio, do you think that would be acceptable?
I find it a very sensible approach.
BTW I just realized that if one backend should delegate to another, then the primary backend should be the per-worktree backend and it should delegate to the common backend. I think I described things the other way around in my earlier message. This makes more sense because it is acceptable for per-worktree references to refer to common references but not vice versa.
Sounds good. Thanks.