On 2012-11-29 20:13, Philip Martin wrote: > Daniel Shahaf <d...@daniel.shahaf.name> writes: > >> Philip Martin wrote on Thu, Nov 29, 2012 at 18:26:04 +0000: >>> Daniel Shahaf <d...@daniel.shahaf.name> writes: >>> >>>> Les Mikesell wrote on Thu, Nov 29, 2012 at 09:59:47 -0600: >>>>> But, the copy built by svnsync doesn't necessarily >>>>> get stored the same way, does it? >>>> >>>> I think in 1.8/fsfs it will byte-for-byte identical. (except >>>> rep-cache.db, but you can remove that file without consequences) >>>> >>>> There was a dev@ thread by philipm about this not too long ago. >>> >>> No, an svnsync mirror is usually not identical to the master. It does >>> contain the same versioned data but the representation of that data is >>> different. For example, every failed commit on the master will bump the >>> fsfs sequence number and that will cause the node-revision-ids to be >>> different. >> >> Node-revision-id's in revisions don't embed transaction id's... >> >> For example the noderev header (yes, header, not just id) of >> /subversion/trunk/notes is identical between svn.us and svn.eu. > > OK. But the sequence number differences do show up in other places: > > svnadmin create repo > svn mkdir -mm file://`pwd`/repo/A # r1 > svn mkdir -mm file://`pwd`/repo/A # fail > svn mkdir -mm file://`pwd`/repo/A/B # r2 > svnadmin create repo2 > svnadmin dump repo | svnadmin load repo2 > diff repo/db/revs/0/2 repo2/db/revs/0/2 > 37c37 > < _1.0.t1-2 add-dir false false /A/B > --- >> _1.0.t1-1 add-dir false false /A/B > > Further, node-revision-ids can vary for other reasons. Representations > in the revision files are in whatever order the client sends > representations to the server. There are no defined orders for clients > to use so it is quite likely that commits to the master and the mirror > will use different orders: > > mkdir zz > echo foo > zz/f > echo bar > zz/g > echo zigzig > zz/F > echo zagzag > zz/G > svnadmin create repo > svn mkdir -mm file://`pwd`/repo/A > svnadmin create repo2 > svnsync init file://`pwd`/repo2 file://`pwd`/repo > svnsync sync file://`pwd`/repo2 > > I see orders: > > repo/db/revs/0/1: foo, zigzig, zagzag, bar > repo2/db/revs/0/1: zigzig, zagzag, foo, bar > > That affects the offsets in the text: lines, often changing the line > length, which in turn affects the position of the subsequent nodes, and > the position of the nodes affects the node-revision-ids. >
Thats what I also see with svnsync, specially for revisions with a lot of files in the initial commit (master and mirror are the same OS and installed with exact the same packages no matter if I sync over svn or http(s)).