[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: New SVNSYNC bug?

From: David Summers <david_at_summersoft.fay.ar.us>
Date: Tue, 29 Apr 2008 16:43:02 -0500 (CDT)

On Tue, 29 Apr 2008, David Glasser wrote:

> On Tue, Apr 29, 2008 at 12:11 PM, David Summers
> <david_at_summersoft.fay.ar.us> wrote:
>> On Tue, 29 Apr 2008, Lieven Govaerts wrote:
>>
>>
>>> Justin Erenkrantz wrote:
>>>
>>>> On Mon, Apr 28, 2008 at 3:48 PM, David Glasser
>> <glasser_at_davidglasser.net>
>>>> wrote:
>>>>> There were in fact changes to the svnsync RA calls as well as to the
>>>>> svnserve protocol for it, so I wouldn't be horribly surprised if we
>>>>> screwed something up in the compatibility code or something.
>>>>
>>>> FWIW, we're starting to deploy the mirroring code over at apache.org
>>>> and we're seeing a similar bug to what David S. is seeing: new files
>>>> aren't being added over replay. Changed/modified files are okay.
>>>>
>>>> (Sadly, our master SVN server has suffered a hard drive failure; so
>>>> this is on the back burner for us now.) -- justin
>>>>
>>>>
>>>
>>> David, Justin,
>>>
>>> For completeness sake:
>>> 1. between master and svnsync client you're using http, with ra_serf or
>> ra_neon?
>>> 2. between svnsync and slave you're using what? ra_local?
>>>
>>>
>>
>> Maybe I'm not understanding (terminology?) something, but here is my setup.
>>
>> 1. I commit from a WinXP SP2 client using Subversion command-line client
>> 1.4.6 with http method. (I commit to the web-dav proxy enabled slave but as
>> per your message above, that may not be relevant, the master is not being
>> corrupted as far as I can tell).
>>
>> 2. The master server receives the commit and in the post-commit hook does a
>> svnsync to the slave.
>>
>> 3. On the slave server I have svnserve running (svn method) to do the sync
>> between the master and slave.
>>
>> When I then subsequently check the slave server with "svn log -v" then I
>> see no information in "Changed Paths" and no log message.
>>
>> Hope that helps. I'm working on setting up a controlled test with rc3 to
>> see what happens and if I can narrow it down any further.
>>
>> When I backed the slave back down from rc3 to r27613 then things started
>> working fine again.
>>
>> Also, I'm beginning to wonder if the problem only showed up on a slave repo
>> created recently with rc3 or higher but I don't remember exactly when I
>> installed rc3 or created the new slave repo. I *think* I'm only seeing
>> corruption on my newest small repo and not ones created earlier with r27613
>> or older, but I can't swear to it yet.
>
> I'm not sure that this would be relevant, but there are a couple of
> places you are breaking our abstractions and doing things by hand:
>
>> Here is my script I use to create slave repos:
>> #! /bin/bash
>> # Set up a mirror from SAMSON
>>
>> usage() {
>> echo "Usage: setup.mirror RepositoryName
>> http://SourceHost/SourceRepository"
>> exit 1
>> }
>>
>> if [ ! -f repos/TEMPLATE/README.txt ]; then
>> echo "Missing TEMPLATE repository."
>> exit 1
>> fi
>>
>> if [ "$1"x = "x" ]; then
>> usage
>> fi
>>
>> if [ "$2"x = "x" ]; then
>> usage
>> fi
>>
>> REPO_NAME=$1
>> SOURCE_REPOSITORY=$2
>>
>> result=`echo $SOURCE_REPOSITORY | grep -i http://`
>>
>> if [ "$result"x = "x" ]; then
>> usage
>> fi
>>
>> # Create new repository
>> svnadmin --pre-1.5-compatible create repos/$REPO_NAME
>>
>> # Zap initial template files
>> rm -rf repos/$REPO_NAME/hooks/*.tmpl
>>
>> # Copy template hooks from TEMPLATE repo
>> cp repos/TEMPLATE/hooks/* repos/$REPO_NAME/hooks
>>
>> # Zap initial conf files.
>> rm -rf repos/$REPO_NAME/conf/*
>>
>> # Setup svnserve.conf
>> (cd repos/$REPO_NAME/conf; ln -s ../../../svnserve.conf .)
>
> What's in the conf?
>
> Specifically, could there be any authz issues here, where your
> svnsyncing user can't read all the files?

Good question, but no; The user's all have full access to the repository.

[general]
anon-access = none
auth-access = write
password-db = ../../../passwd.svn
authz-db = ../../../authz
realm = Razorback SVN Repository

>> # Get UUID from source repository
>> uuid=`svn info $SOURCE_REPOSITORY | grep -i uuid | sed -e 's/^.*:\s//'`
>>
>> echo UUID = \"$uuid\"
>>
>> echo $uuid > repos/$REPO_NAME/db/uuid
>
> You can use svnadmin setuuid here now.

OK, thanks, I'll try that sometime. I remember seeing that commit in the
svn repo.

>> # Set up for SYNC operation
>> svnsync init file:///home/svnroot/repos/$REPO_NAME $SOURCE_REPOSITORY
>>
>> svn ps svn:sync-from-url svn://samson/$REPO_NAME
>> file:///home/svnroot/repos/$REPO_NAME -r0 --revprop --username=svnsync
>
> Why not just use the right URL with svnsync init in the first place?

Hmmm, I may try that (again) but for some reason I was thinking that
wasn't working for me when I originally set things up.

>> chown -R apache:apache repos/$REPO_NAME
>>
>> exit 0
>>
>>
>> Here is my script I run on the master server to sync to the slave
>> (razorback) on post-commit.
>>
>> "C:\Program Files\Subversion\bin\svnsync" sync svn://razorback/%1%
>
> Hmm, so the master is Windows, and the slave is Unix? Interesting;
> this stuff might be undertested on Windows, though I'm not sure why it
> should make a difference.

Correct. Master is Win2003 and Slave is Linux (RHEL5).

> --dave
>
>

-- 
David Wayne Summers        "Linux: Because reboots are for hardware upgrades!"
david@summersoft.fay.ar.us PGP Key: http://summersoft.fay.ar.us/~david/pgp.txt
PGP Key fingerprint =  0B44 B118 85CC F4EC 7021  1ED4 1516 5B78 E320 2001
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-04-29 23:43:22 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.