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

Re: svn:global-ignores limited to workspace dirs?

From: Matthias Vorwerk <mv2_at_mailbox.org>
Date: Tue, 5 Aug 2014 14:02:05 +0200 (CEST)

Hi Stefan,

> On Wed, Jul 23, 2014 at 05:50:00PM +0200, Stefan Sperling wrote:
> > On Wed, Jul 23, 2014 at 02:02:39PM +0200, Matthias Vorwerk wrote:
> > > Hi,
> > >
> > > setting the svn property svn:global-ignores to the repository root (or
> > > some
> > > higher level directory in the repository) - it obviously does not get
> > > inherited
> > > if I only checkout and work in some lower-level directory (until
> > > subversion-1.8.9) .
> > >
> > > It looks like the parent directory containing the svn:global-ignores
> > > property
> > > must be present in the workspace. This seems to be in contrast to e.g. the
> > > svn:auto-props property which may not be present in the workspace - it
> > > seems to
> > > be looked for also on the server - which is what I expect.
> > >
> > > So the effect of the current svn:global-ignores handling is that the
> > > client
> > > behavior depends on the hierarchy which is checked out in the workspace.
> > >
> > > Can you reproduce this bahvior?
> > >
> > > Regards,
> > > Matthias
> >
> > Yes, this is a bug.
> >
> > The function filter_unwanted_props() in libsvn_wc/wc_db.c seems filters out
> > the cached global-ignores prop because the property names it compares are
> > different (one is qualified with "svn:" and the other isn't), even though
> > they should be the same:
> >
> > 10240 if (strcmp(ipropname, propname) != 0)
> > (gdb) p ipropname
> > $5 = 0x21281cfda20 "global-ignores"
> > (gdb) p propname
> > $6 = 0x211f750bba6 "svn:global-ignores"
> >
> > I'm not sure off-hand how to fix this.
> > I've filed http://subversion.tigris.org/issues/show_bug.cgi?id=4515
> >
> > Thanks for your report.
>
> I tried to look into this today but I cannot reproduce this bug anymore.
> I should have written a reproduction script.
>
> Matthias, do you have a way of reliably triggering this bug? Thanks.

I again looked into this and tried to create a short script. By doing this I now
understand how it works. (So it is not a bug):

If I have checked out only a portion of the repos (with the svn:global-ignores
property set at highest level) I need to run an "svn update" in the workspace
whenever there are changes done in the repos at higher level.
So the props svn:global-ignores and svn:auto-props are stored (cached) in the
workspace copy and this is where svn add / svn status look at. Any
property-changes in the repo have to be pulled into the workspace - even if set
at higher levels which are not part of the workspace.

Here are the steps to see this:
# cd into some dir

svnadmin create /tmp/myrepos
svn mkdir -m "initial dir structure" --parents file:///tmp/myrepos/a/b/c

# create a lower level workspace
svn co file:///tmp/myrepos/a/b
cd b
touch file2.foo
svn status
# (shows: ? file2.foo)

# now add the property at file:///tmp/myrepos
cd ..
svn co --depth empty file:///tmp/myrepos
cd myrepos
svn propset svn:global-ignores '*.foo' .
svn commit -m "set svn:global-ignores on repo-root" .
svn proplist --verbose .

# back to the workspace
cd ..
cd b
svn status
# (still shows: ? file2.foo)

svn update
svn status
# nothing shown anymore: ok!

Matthias
Received on 2014-08-05 14:02:41 CEST

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

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