You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Daniel Shahaf <d....@daniel.shahaf.co.il> on 2008/07/10 18:24:32 UTC

Re: [PATCH]: fix double occurrence of the same commit patch while 'svn copy --parents url url' (was Re: Bug in 'svn copy --parents url url'?)

Ping.  This patch hasn't had any responses yet.

Alexander Sinyushkin wrote on Wed, 25 Jun 2008 at 19:02 +0700:
> Here is a patch to the problem in question to review .
> 
> [[[
> Fix double occurrence of the same commit path
> in commit items array which takes place in
> 'svn cp --parent url/src url/dst' command
> where src exists and dst does not.
> 
>  * subversion/libsvn_client/copy.c
>    (repos_to_repos_copy): when collecting new_dirs in case
>    make_parents is true proceed only when dir (the result of
>    svn_path_is_child(top_url, svn_path_dirname(pair->dst, pool),..))
>    is not null. If dir is null do not bother collecting anything
>    for new_dirs.
>  ]]]
> ----
> Alexander Sinyushkin,
> TMate Software,
> http://svnkit.com/ - Java [Sub]Versioning Library!
> 
> Karl Fogel wrote:
> > Alexander Sinyushkin <Al...@svnkit.com> writes:
> > > If I try to copy an existing directory to nonexistent one with
> > > --parents, like this:
> > > 
> > > svn copy --parents svn://localhost/repo/x svn://localhost/repo/y
> > > 
> > > where x exists and y does not, an editor for commit message is
> > > launched twice (if no -m or -F is provided). Commit succeeds,
> > > i.e. afterwards I see /y/x in my repo but isn't it a bug that the
> > > editor is launched twice?
> > 
> > Yes, that's a bug.
> > 
> > > Debugging this command I see that first call to setup_copy() fails
> > > with the following error:
> > > 
> > > "File already exists: filesystem '/home/alex/workspace/tmp/repo/db',
> > > transaction '9-f', path '/y'"
> > > 
> > > The problem here is in that commit paths array (which is passed to
> > > svn_delta_path_driver()) contain two identical strings "y" what causes
> > > the aforementioned error.
> > > 
> > > But then the second call to setup_copy() is made in the following if
> > > clause and commit ends well.
> > > 
> > >   if (copy_as_child && err && (sources->nelts == 1)
> > >         && (err->apr_err == SVN_ERR_ENTRY_EXISTS
> > >             || err->apr_err == SVN_ERR_FS_ALREADY_EXISTS))
> > > 
> > > Anyway, I'm reporting this because you may decide that this behavior
> > > should be changed. Thank you.
> > 
> > I doubt anyone would disagree that it's bug... Since you're now familiar
> > with the code path, do you have time to make a patch?
> > 
> > Best,
> > -Karl
> > 
> > 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH]: fix double occurrence of the same commit patch while 'svn copy --parents url url'

Posted by Karl Fogel <kf...@red-bean.com>.
Daniel Shahaf <d....@daniel.shahaf.co.il> writes:
> Ping.  This patch hasn't had any responses yet.

Thank you.  It really should get reviewed, and it doesn't look like it
would be too hard.  But Alexander, my apologies, I've just had a lot of
unexpected work to do on issue #2489, so my patch review committments
have gotten... um, delayed :-(.

If you could file a "[PATCH]" issue for this, that would be great.  Or
if someone else has time to review it right now, that would be even
better.

-Karl

> Alexander Sinyushkin wrote on Wed, 25 Jun 2008 at 19:02 +0700:
>> Here is a patch to the problem in question to review .
>> 
>> [[[
>> Fix double occurrence of the same commit path
>> in commit items array which takes place in
>> 'svn cp --parent url/src url/dst' command
>> where src exists and dst does not.
>> 
>>  * subversion/libsvn_client/copy.c
>>    (repos_to_repos_copy): when collecting new_dirs in case
>>    make_parents is true proceed only when dir (the result of
>>    svn_path_is_child(top_url, svn_path_dirname(pair->dst, pool),..))
>>    is not null. If dir is null do not bother collecting anything
>>    for new_dirs.
>>  ]]]
>> ----
>> Alexander Sinyushkin,
>> TMate Software,
>> http://svnkit.com/ - Java [Sub]Versioning Library!
>> 
>> Karl Fogel wrote:
>> > Alexander Sinyushkin <Al...@svnkit.com> writes:
>> > > If I try to copy an existing directory to nonexistent one with
>> > > --parents, like this:
>> > > 
>> > > svn copy --parents svn://localhost/repo/x svn://localhost/repo/y
>> > > 
>> > > where x exists and y does not, an editor for commit message is
>> > > launched twice (if no -m or -F is provided). Commit succeeds,
>> > > i.e. afterwards I see /y/x in my repo but isn't it a bug that the
>> > > editor is launched twice?
>> > 
>> > Yes, that's a bug.
>> > 
>> > > Debugging this command I see that first call to setup_copy() fails
>> > > with the following error:
>> > > 
>> > > "File already exists: filesystem '/home/alex/workspace/tmp/repo/db',
>> > > transaction '9-f', path '/y'"
>> > > 
>> > > The problem here is in that commit paths array (which is passed to
>> > > svn_delta_path_driver()) contain two identical strings "y" what causes
>> > > the aforementioned error.
>> > > 
>> > > But then the second call to setup_copy() is made in the following if
>> > > clause and commit ends well.
>> > > 
>> > >   if (copy_as_child && err && (sources->nelts == 1)
>> > >         && (err->apr_err == SVN_ERR_ENTRY_EXISTS
>> > >             || err->apr_err == SVN_ERR_FS_ALREADY_EXISTS))
>> > > 
>> > > Anyway, I'm reporting this because you may decide that this behavior
>> > > should be changed. Thank you.
>> > 
>> > I doubt anyone would disagree that it's bug... Since you're now familiar
>> > with the code path, do you have time to make a patch?
>> > 
>> > Best,
>> > -Karl
>> > 
>> > 
>> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org