On 2012-11-29 20:13, Philip Martin wrote:
> Daniel Shahaf <d.s_at_daniel.shahaf.name> writes:
>
>> Philip Martin wrote on Thu, Nov 29, 2012 at 18:26:04 +0000:
>>> Daniel Shahaf <d.s_at_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)).
Received on 2012-11-29 22:22:31 CET