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

Re: [PATCH] svn_fs_text_changed

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: 2003-11-26 02:05:21 CET

Philip Martin <philip@codematters.co.uk> writes:

> "C. Michael Pilato" <cmpilato@collab.net> writes:
>
> > Chia-liang Kao <clkao@clkao.org> writes:
> >>
> >> It's quite simple: make a local import of svn tree at rev6000 or so,
> >> create a local branch, update the local import to trunk, do a merge to
> >> the local branch. Now diff the local import and the branch.
> >
> > Well, I had a tough time really understanding this description. I did
> > this:
> >
> > $ svn import /some/dir/of/stuff file://`pwd`/repos/dir1 -m dir1
> > $ svn import /some/dir/of/stuff file://`pwd`/repos/dir2 -m dir2
> > $ svn diff file://`pwd`/repos/dir1 file://`pwd`/repos/dir2
>
> You didn't make a branch, so there's no history relating dir1 to dir2,
> without history we always send delete plus add.

Diff and merge pass the ignore_ancestry flag to dir-delta, which tells
that sucker to not pay attention to relatedness, and just do a
path-based delta. If you do what I did above, you should see that
delta.c:add_file_or_dir() is never called, and that delta_files() is
always called with non-NULL source and target paths (an indication
that these are not adds).

> Do it like this and > there is history:
>
> $ stress.pl -c -F200 -D1 -N1 -n1 -x200 -s0
> $ svn cp -r1 file://`pwd`/repostress/trunk file://`pwd`/repostress/branch -m ""
> $ svn co file://`pwd`/repostress/branch wc
> $ svn merge -r1:2 file://`pwd`/repostress/trunk wc
> $ svn ci wc -m ""
> $ svn diff file://`pwd`/repostress/trunk file://`pwd`/repostress/branch
>
> 200 empty diffs for history related files with identical contents.

It's not the output that I'm concerned with. It's the extra work
happening under the hood. If you still have your test scenario above,
set a breakpoint on repos_diff.c:window_handler. If you even once see
a non-NULL window, Subversion is being inefficient. And that's what I
was seeing.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Nov 26 02:07:56 2003

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