Bert Huijben wrote: > >> -----Original Message----- >> From: Stefan Sperling [mailto:s...@elego.de] >> Sent: zondag 17 januari 2010 23:39 >> To: Bert Huijben >> Cc: 'Neels J Hofmeyr'; dev@subversion.apache.org; 'Bert Huijben' >> Subject: Re: libsvn_wc bug: pristine contents for locally replaced file >> >> On Sun, Jan 17, 2010 at 11:14:58PM +0100, Bert Huijben wrote: >>> If you want to fix this behavior, you would have to check the exact >> status >>> information to determine that you are exactly in the replacement >> without >>> history case. >>> >>> This is one of the hardest statuses to detect with WC-NG (which was >> easy as >>> entries), but luckily we don't need it any more for the processing in >> the >>> three tree storage model with a SHA-1 based pristine store. There we >> store a >>> hash in BASE and in WORKING. >> So... you're saying we should wait with fixing this until the wc-ng >> pristine store has been implemented? > > I'm not sure if it needs fixing. It probably needs a better explanation on > what @BASE is and isn't. > > Currently @BASE is the 'previous' version of the node that will be > committed. For added and replaced nodes with history there is no @BASE. > (There is just a copy of the file that was there before the new node was > added to allow reverting to the unmodified state) > > And telling that the .svn-base file doesn't exist (1.6 and trunk behavior) > doesn't look like te right way to tell the user that. But I don't think that > presenting a completely unrelated file (the deleted one) is the right answer > either.
I had a slightly wrong concept of BASE. So BASE is the original state of the *new* file. I was thinking of, say, ORIG, meaning the state in the original unmodified working copy. In most cases BASE == ORIG, except in a replace (in that ORIG would be the BASE of the file that was deleted in the replace), and in a non-replacing add with history (in that ORIG would be empty). So if I call svn_wc__get_pristine_contents() on a locally replaced file without history, I should get an empty stream (no history => BASE empty) -- that should be fixed. 'svn cat f...@base', locally replaced without history, will then print nothing, and with history already prints the most recent contents of that history. If 'cat' were to print what I call ORIG, it would need another keyword other than BASE, e.g. "ORIG". Not that I'm keen on implementing that. IMHO a little awkward from a user's intuition point of view (the user being me), but good to know. > But even if we decide that showing the original file would be an answer, we > should always be explicit about the status and not rely on whether a file > exists or doesn't exist. The old working copy library has too much of those I do agree. Thanks, ~Neels > loose ends and the wc_db api can give you the right status easily, if you > ask it the right question.
signature.asc
Description: OpenPGP digital signature