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

[merge tracking] Merging all outstanding changes between ancestrally related branches

From: Daniel L. Rall <dlr_at_finemaltcoding.com>
Date: 2007-12-07 22:15:33 CET

...via merging from a single source URL into a WC. This requires that
your merge source URL and WC are ancestrally-related.

Use cases
=========

Easily allow merging of all (ancestrally-related) outstanding changes
from one line of development to another, while accurately recording a
mergeinfo audit trail.

By "easily", the default behavior (merge algorithm) must support the
use case encountered most often by the user: "bring un-cherry-picked
branch WC up to date with its mainline". At the same time, the
ability to merge a cherry-picked branch back into a mainline WC must
also be easily accessible, and require the barest minimum of
parameters. This latter case is important for avoiding repeated
conflict resolution on long-lived/heavily cherry-picked branches.

Proposal
========

* Subversion 1.5, unlike previous versions, will let you specify one URL
  and an optional WC, via:

    svn [options...] merge URL [WC]

* If you specify no revision range, or specifiy -c/-r options, you get a
  "cherry-picking" (or "unlumped") style merge, which potentially performs
  multiple editor drives, but will merge all eligible changes regardless of
  the state of your WC with respect to the line of development that you're
  merging from.

* If you specify the --reintegrate option (bikeshed painting contest open
  for business), you get a "lumped" style merge, which merges the differences
  between the youngest revision from the WC that has been merged into the URL,
  and any peg revision specified for the URL (otherwise HEAD).

Relation with Mike Pilato's recent 2-URL merge changes
======================================================

The --reintegrate portion of the above proposal is basically a special
case of Mike's recent changes (r28315 on trunk, r28303 on the
mo-betta-two-url-merges branch), which requires some additional code
from the whole-branch-merge branch. In terms of modularization, the
proposal is to retain the code from the whole-branch-merge's
libsvn_client/merge.c's ensure_wc_reflects_repository_subtree() and
svn_client_merge_whole_branch() functions (renaming the latter to
reflect whatever we name what I'm thinking of as the --reintegrate
option).

  • application/pgp-signature attachment: stored
Received on Fri Dec 7 21:14:42 2007

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