On Tue, Oct 11, 2011 at 12:03 PM, Julian Foad <julian.f...@wandisco.com> wrote: > On Tue, 2011-10-11 at 10:20 +0200, Johan Corveleyn wrote: >> On Mon, Oct 10, 2011 at 3:25 PM, Bert Huijben <b...@qqmail.nl> wrote: >> > >> > >> >> -----Original Message----- >> >> From: Neels J Hofmeyr [mailto:ne...@elego.de] >> >> Sent: zaterdag 8 oktober 2011 7:58 >> >> To: Bert Huijben >> >> Cc: 'Subversion Development' >> >> Subject: Re: EXTERNALS table -- good or bad? >> >> >> >> On 10/07/2011 02:18 PM, Bert Huijben wrote: >> >> > I think you were the one that enabled processing svn:externals on local >> >> > additions? >> >> >> >> Can't say that I did :) >> >> >> >> > (Impossible without EXTERNALS) >> >> >> >> "Impossible" is such a strong word. Brief explanation? >> >> >> >> > And file externals would be impossible to delete, except when using >> >> > EXTERNALS. >> >> >> >> Not sure about that, we do have that update_root column... >> >> >> >> > (etc.) >> >> (/me greps svn:log,dev@) >> >> >> >> So in short, we are going to rely on the EXTERNALS table as the no.1 >> > source >> >> for information about svn:externals definitions, i.e. keep the table >> >> up-to-date at all times. It's more than just a cache. Right? >> > >> > ^/subversion/trunk/notes/wc-ng/externals contains more on the reasoning of >> > why 'EXTERNALS'. >> > >> > (It was written before it was decided not to move the real actual data >> > from >> > BASE, so it could use some updates) >> >> AFAIUI, the EXTERNALS table is indeed not a cache, but it notes the >> externals "as rolled out by the last svn update", i.e. the externals >> "as currently expanded in the WC" (at least, that's what I understood >> from the dev@ discussions a while ago, and from the notes doc). This >> is a criticial piece of information, which can be different from what >> the externals prop says (in either their BASE or ACTUAL forms). >> >> And it's needed in a couple of scenario's which Bert noted. For >> instance, there is the scenario (as described in the notes file), >> where you change an external from pointing to A, to B, and then to C, >> without committing in between (but updating, i.e. applying the >> externals each time). In that case, you really need the information of >> what the "actually applied externals" were, to do a correct >> "migration" from B to C. >> >> At least, that's how I understood the need for the EXTERNALS table... > > Can we *please* add some such description to the source code? I'd > suggest at the definition of the table in wc-metadata.sql.
+1 But I don't feel expert enough on the subject to do that myself :-). I'm not even sure if my understanding, as laid out above, is correct. Maybe one of the experts (Bert?) can add the necessary documentation? -- Johan