> -----Original Message----- > From: MARTIN PHILIP [mailto:codematt...@ntlworld.com] On Behalf Of > Philip Martin > Sent: vrijdag 18 januari 2013 20:13 > To: Bert Huijben > Cc: dev@subversion.apache.org > Subject: Re: svn commit: r1434913 - > /subversion/trunk/subversion/libsvn_wc/wc_db.c > > "Bert Huijben" <b...@qqmail.nl> writes: > > > This problem will never occur with a storing moved-from in BASE > > (op-depth 0). (Moved-from is always stored in the op-root of the > > addition, so this can never have this problem... The problem is in the > > moved-to scheme) > > I think the two schemes are equivalent. The implementations are > different but the data stored in either scheme can be transformed into > the data stored in the other without any losses. (I assume the BASE > scheme is tweaked to allow tracking moves in copies by storing in the > lowest op-depth normal node.) Some operations may be simpler to > implement in one scheme compared to the other, and maybe one is simpler > overall, but I think each scheme has operations that are easier/harder > to implement.
I agree that both schemes should be equivalent, for the cases that can be recorded in BASE... But they have to be updated at different times, so maintaining one format may be easier than maintaining the other. (I really don't know which way would be easier... But I would guess that the number of corner cases for the BASE scheme is easier to identify) Recording things in BASE has the advantage that it will only be overwritten by future update handling, while maintaining in WORKING has the advantage that it is not touched by update. The only problem I real/current problem I see with maintaining in working is that we currently have APIs for the top of WORKING and BASE, while many moves are stored somewhere in between. The BASE scheme has the advantage that moved from can be uniquely identified by just an abspath, while the WORKING scheme needs a path and an op-depth to be guaranteed unique. (moved from is the same for both schemes) Bert