You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Brian Buesker <bb...@qualcomm.com> on 2005/06/02 17:44:12 UTC
Including local changes in one WC in merge to another
I'm trying to merge changes that have been made in one working copy
since a specific revision (including any local changes that have not
been committed) to a new working copy using the perl bindings. From
reading the documentation for the perl bindings, it was my understanding
that I should be able to specify 'WORKING' as the second revision for
the merge. In other words, something like:
use SVN::Client;
my $client = new SVN::Client;
$client->merge ('/var/tmp/trunk', 1, '/var/tmp/trunk', 'WORKING',
'/var/tmp/trunk-other', 1, 1, 1, 0);
However, that does not result in anything being merged. If instead I
commit the first working copy, and then specify 'HEAD' as the second
revision for the merge, the changes are merged into the second working
copy.
Is 'WORKING' as a revision not valid for a merge? If it is not valid, is
there some way I can do this merge without doing the commit first, or
will I always need to do the commit?
I'm using SVN version 1.1.4.
Thanks,
Brian
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Re: Including local changes in one WC in merge to another
Posted by Brian Buesker <bb...@qualcomm.com>.
Ben Collins-Sussman wrote:
>
> On Jun 2, 2005, at 12:44 PM, Brian Buesker wrote:
>
>> I'm trying to merge changes that have been made in one working copy
>> since a specific revision (including any local changes that have not
>> been committed) to a new working copy using the perl bindings. From
>> reading the documentation for the perl bindings, it was my
>> understanding that I should be able to specify 'WORKING' as the
>> second revision for the merge. In other words, something like:
>>
>> use SVN::Client;
>>
>> my $client = new SVN::Client;
>>
>> $client->merge ('/var/tmp/trunk', 1, '/var/tmp/trunk', 'WORKING',
>> '/var/tmp/trunk-other', 1, 1, 1, 0);
>>
>> However, that does not result in anything being merged. If instead I
>> commit the first working copy, and then specify 'HEAD' as the second
>> revision for the merge, the changes are merged into the second
>> working copy.
>>
>> Is 'WORKING' as a revision not valid for a merge? If it is not
>> valid, is there some way I can do this merge without doing the
>> commit first, or will I always need to do the commit?
>>
>
> Merge takes 3 arguments: 2 URLs, and a working copy to apply the
> difference to.
>
> Merge doesn't have the ability to extract diffs from a working copy;
> it can only ask the server to compare two URLs.
>
> So when you pass two working-copy paths as the first argument to merge
> (), all you're really saying is, "hey server, please compare the two
> URLs of these working copy paths, and send me the differences." It's
> a completely different thing than what you want to do, which is to
> compare some URL with a working copy. Just not possible with merge.
Thanks, that's what I was beginning to suspect. I would have expected
merge to produce an error if I specified WORKING as the revision when
that is not allowed, but apparently it just silently maps it to HEAD.
Not that big of a deal, but it might be nice if merge raised the
$SVN::Error::CLIENT_BAD_REVISION error in this case. That way people
would know right away that WORKING cannot be used. Either that, or an
update to the perl binding documentation section that mentions WORKING
indicating that it cannot be used with merge.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Re: Including local changes in one WC in merge to another
Posted by Ben Collins-Sussman <su...@collab.net>.
On Jun 2, 2005, at 12:44 PM, Brian Buesker wrote:
> I'm trying to merge changes that have been made in one working copy
> since a specific revision (including any local changes that have
> not been committed) to a new working copy using the perl bindings.
> From reading the documentation for the perl bindings, it was my
> understanding that I should be able to specify 'WORKING' as the
> second revision for the merge. In other words, something like:
>
> use SVN::Client;
>
> my $client = new SVN::Client;
>
> $client->merge ('/var/tmp/trunk', 1, '/var/tmp/trunk', 'WORKING',
> '/var/tmp/trunk-other', 1, 1, 1, 0);
>
> However, that does not result in anything being merged. If instead
> I commit the first working copy, and then specify 'HEAD' as the
> second revision for the merge, the changes are merged into the
> second working copy.
>
> Is 'WORKING' as a revision not valid for a merge? If it is not
> valid, is there some way I can do this merge without doing the
> commit first, or will I always need to do the commit?
>
Merge takes 3 arguments: 2 URLs, and a working copy to apply the
difference to.
Merge doesn't have the ability to extract diffs from a working copy;
it can only ask the server to compare two URLs.
So when you pass two working-copy paths as the first argument to merge
(), all you're really saying is, "hey server, please compare the two
URLs of these working copy paths, and send me the differences." It's
a completely different thing than what you want to do, which is to
compare some URL with a working copy. Just not possible with merge.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org