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

Re: Tree conflicts when merging multiple revisions

From: Stefan Sperling <stsp_at_elego.de>
Date: Wed, 18 Aug 2010 13:34:14 +0200

On Wed, Aug 18, 2010 at 11:38:28AM +0100, emerson wrote:
> I'm trying to run a merge with different revisions. We use a two tier
> codebase approach with trunk and a stable branch and selectively
> cherry-pick what should be merged.

This is a rather vague description of what you are doing.
If you need more detailed help after reading my reply, please provide
full copy/paste of the commands you are running and their output.
Feel free to anonymize filenames or other sensitive bits of data in the
output if necessary.
> After merging a few revisions, I have a "Summary of conflicts: Tree
> conflicts: 2" message. How can I find out which the revisions actually
> had the tree conflict?

You'll need to dig in the log history.

There is no standard recipe for resolving tree conflicts.
The three steps to handle tree conflicts are:

1) Understand why there is a conflict (look through the logs, ask people)
2) Decide what you want the merge result to be, i.e. what is the desired
   state of your working copy after resolving the conflict?
3) Determine how to get from the current state to the desired state
   using Subversion commands, run those commands, and mark the conflict
   as resolved.

> The tree conflict messages are also really vague, without telling
> exactly what the conflict is, which file or folder is missing or
> whichever reason caused the tree conflict. Is there any way to get the
> reason of the tree conflict?

The tree conflict is described in the merge output, but if that scrolled
past you can still retrieve it from "svn status":

$ svn status
D C alpha
> local delete, incoming edit upon update
Summary of conflicts:
  Tree conflicts: 1

In this example, the file 'alpha' was deleted locally in the working
copy, but an incoming update tried to edit 'alpha'.

You can use "svn info" to find out a bit more:
$ svn info alpha
Path: alpha
Name: alpha
URL: file:///tmp/svn-sandbox/repos/trunk/alpha
Repository Root: file:///tmp/svn-sandbox/repos
Repository UUID: fa39d956-aaba-11df-9b53-e7fc3ea7c793
Revision: 3
Node Kind: file
Schedule: delete
Last Changed Author: stsp
Last Changed Rev: 1
Last Changed Date: 2010-08-18 13:23:08 +0200 (Wed, 18 Aug 2010)
Text Last Updated: 2010-08-18 13:23:08 +0200 (Wed, 18 Aug 2010)
Checksum: d046cd9b7ffb7661e449683313d41f6fc33e3130
Tree conflict: local delete, incoming edit upon update
  Source left: (file) ^/trunk/alpha_at_2
  Source right: (file) ^/trunk/alpha_at_3

The tells you which versions of alpha are involved the conflict.
You can look into the log messages of the respective revisions
to find out what changes were made which conflict with local changes.

Note that the URLs are not always accurate, e.g. for locally added
files the URLs may not really make sense.

See http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html
for more information about tree conflicts.

Received on 2010-08-18 13:35:12 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.