Ben, I misunderstood your question in the source code just now -- in
fact, what you detected was a bug. I was opening a file for writing,
and then calling a function that would do the same thing again.
Badness! Thanks for spotting.
> Ben checked in this comment:
> /* TODO: Karl... what makes these two file-open calls any different?
> Won't they both result in opening the *same* `path/tmp/versions'
> file?!? */
> To answer: no, because the first call passes APR_READ, whereas the
> second is an APR_WRITE call. Writes in the adm area *always* result
> in a tmp file being opened; optionally, it will be atomically renamed
> on close, or else you can sync it by hand (there's a function for
> that) if the implementation requires that level of control.
> So you can open an adm file for reading, and open it for writing at
> the same time, and they won't conflict. This is useful (or anyway is
> intended to be useful, and so far has been I think) because very often
> one needs to read in an adm file and write it back out with a minor
> change -- this is how in-place editing is done, given that Subversion
> can't just invoke vi or emacs on the file. :-)
> Hope that helps; this is sort of explained in wc.h, but the text could
> be clearer about how things work, and I'd gladly accept a doc patch
> for it.
Received on Sat Oct 21 14:36:09 2006