Stephen Butler wrote on Tue, Dec 20, 2011 at 14:08:17 +0100: > > On Dec 20, 2011, at 12:51 , Eric S. Raymond wrote: > > > Still working on it as I await restoration of commit access. Here's the > > 0.4 version. Note the two open questions and the buglet. > > [[[ > 1. Is it true that a replace operation on a directory *must* > have a copyfrom source? > ]]] > > No. A replace operation can create a "fresh" item without prior > history. For example, the following node record is acceptable to > 'svnadmin load', assuming there's already a file at ^/omega. >
And this is how to produce such a thing: svnadmin create r svn checkout file://$PWD/r wc cd wc mkdir A; touch iota; svn add A iota svn commit -madd svn up do-replace() { svn rm A iota mkdir A; touch iota; svn add A iota } do-replace svn commit -mreplace svnadmin dump --deltas --incremental -r2 ../r Some other definitions that work are: do-replace() { svn rm A iota mkdir iota; touch A; svn add A iota } do-replace() { svn rm A iota svn commit -m rm svn up svn copy ^/A@1 A; svn copy ^/iota@1 iota; } And even: do-replace() { svn rm A iota svn cp ^/@0 A; svn cp ^/@1 iota; # well-defined; does not cause a loop } > [[[ > Node-path: omega > Node-kind: file > Node-action: replace > Prop-content-length: 30 > Text-content-length: 9 > Text-content-md5: a2f613b8081a42cc0ff004f1191fe59e > Text-content-sha1: 772ec56b2bff8db0bb4adb065ce9f212838a5143 > Content-length: 39 > > K 3 > foo > V 7 > new foo > PROPS-END > new text > > > ]]] >