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

Re: Presenting net code changes for a branch

From: Branko Čibej <brane_at_wandisco.com>
Date: Wed, 23 Oct 2013 20:05:22 +0200

On 23.10.2013 18:45, Julian Foad wrote:
> Julian Foad wrote:
>
>> Branko Čibej wrote:
>>> Another option -- somewhat less dependent on a completely new
>>> feature -- might be this:
>>>
>>> svn diff -rROOT:HEAD
>> Well, you haven't ascribed a meaning to that syntax. If you mean it should
>> compare the "root of the branch" with the "tip" of the same
>> branch, then no, that's not what we're looking for. We're looking
>> for (that diff) MINUS (whatever's been merged onto that branch from trunk).
> ... alternatively, if "root of the branch" means "base of last merge between trunk and branch" (assuming the last merge was trunk-to-branch, that's the same as "last point on trunk that you caught up to"), then yes that's what I mean.

Here's a more complete proposal:

Introduce two new revision keywords:

  * ROOT (alternatively: CREATED)
    Represents the revision in which a directory was originally created.
    This is different from the revision reported by 'svn log
    --stop-on-copy' in that it will "see through" any renames of that
    directory.
    When used in the context of a branch, it effectively represents the
    branchpoint revision.

  * MERGED
    Only relevant in the context of a branch. Represents the latest
    revision in which a merge was made to the branch. This revision may
    depend on a discriminator parameter, which is a branch URL, such
    that the result is the revision of the latest merge from that branch.

Example usage:

  * svn info
      o 'svn info -rROOT' or 'svn info -rCREATED'
        Returns information about the revision in which the directory
        was created; i.e., the branchpoint revision. Works with any
        directory, wether WC path or URL.
        Note: Better than the --stop-on-copy trick, since it doesn't
        trip over renames.
      o 'svn info -rMERGED'
        Returns info about the latest revision in which a merge to a
        branch was committed. Works only with branches (i.e.,
        directories that contain [inherited] mergeinfo).
  * svn diff
      o svn diff -rMERGED:HEAD
        Shows changes on a branch that were made after the last merge.
      o svn diff -rMERGED:HEAD ^/other/branch
        As above, but shows changes since the last merge from ^/other/branch
      o svn diff ^/first/branch_at_MERGED ^/second/branch_at_MERGED
        Shows changes made on the branch between the last merges from
        ^/first/branch and ^/second/branch. This one could be tricky to
        fit into the other diff syntaxes. (Sometimes I wish we'd allowed
        more than one -r option per command.)

There are probably more scenarios where these keywords would be useful.
Incidentally, their use is not limited to directories; files are
branches, too.

Not a complete. formal proposal by any means, but I'm sure it could be
made so if we like it.

-- Brane

-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane_at_wandisco.com
Received on 2013-10-23 20:07:04 CEST

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