[prev in list] [next in list] [prev in thread] [next in thread] 

List:       subversion-users
Subject:    RE: Difference between merge -c and merge -r
From:       Scott Bloom <scott () towel42 ! com>
Date:       2017-09-29 16:02:04
Message-ID: BN3PR1001MB105881DF5D8C3B7D9B1DDBA0A97E0 () BN3PR1001MB1058 ! namprd10 ! prod ! outlook ! com
[Download RAW message or body]

That does clarify things.  I would suggest something in the docs (tool help as well \
as the redbook), since the redbook uses both with no reason for either.

My coworker, read somewhere it was "cherry picking", I have always used -r when I \
need to do it, and yes -r 99:100 is "harder" than -c 100..

But we were getting some conflicts, and I wasn't sure of the cause.. when speaking \
with the coworker as to how he was merging, this came up.

Thanks for the detailed explanation.

Scott
-----Original Message-----
From: Stefan Sperling [mailto:stsp@apache.org] 
Sent: Friday, September 29, 2017 08:57
To: Scott Bloom <scott@towel42.com>
Cc: Subversion <users@subversion.apache.org>
Subject: Re: Difference between merge -c and merge -r

On Fri, Sep 29, 2017 at 03:36:27PM +0000, Scott Bloom wrote:
> After reading the docs, I cant for the life of me, figure out what the difference \
> is.  Any pointer where I can learn what the difference in the two merge techniques \
> is? 
> Scott

Hi Scott,

The -c option is just syntactic sugar.

Before it was invented, merging a single revision, say r100, was always done like \
this: svn merge -r99:100 This asks svn to merge the difference between r99 and r100, \
i.e. the changeset committed in r100.

With -c, we can write this in a shorter way: svn merge -c100 This is equivalent to \
svn merge -r99:100

The -r option also supports "reverse" merges, where the differences of the original \
changeset are reversed: svn merge -r100:99 effectively backs out changes from r100. \
To achieve this effect with -c, prepend a minus sign to the number: svn merge -c-100

To make copy-pasting revision numbers from the output of 'svn log' easier the -c \
option also accepts numbers with 'r' prepended:  svn merge -cr100
is the same as
  svn merge -c100
and
  svn merge -c-r100
is the same as
  svn merge -c-100

To an untrained eye the -c-r100 case might look as if the -r option was used, but \
that is not the case. It's the -c option with a minus for a reverse-merge and an 'r' \
prepended to the revision number.

The -c option also accepts multiple revision numbers separated by commas:
  svn merge -c100,102,105,200
This merges changes from all the listed revisions in the given order.
The -r option can be specified multiple times for the same effect but this is much \
more verbose: svn merge -r99:100 -r101:102 -r104:105 -r199:200

I hope this clarifies the situation :)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic