Re: [PATCH v2 38/43] refs: make some files backend functions public
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 17 quoted lines
>> 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.
Show 6 quoted lines
> 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.