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

Re: --reintegrate yields more merge conflicts than manual merge revs from --show-revs eligible

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Fri, 19 Dec 2008 17:03:47 +0000

Jack Bates wrote:
> > > I want to file an issue because "svn merge --reintegrate" yields more
> > > merge conflicts than "svn merge" and manually specifying the revision
> > > numbers from "svn mergeinfo --show-revs eligible"
> > >
> > > My understanding is that the behaviour of "svn merge --reintegrate"
> > > should be identical to "svn merge" and manually specifying the revision
> > > numbers from "svn mergeinfo --show-revs eligible"
> >
> > So, you might be right that conflicts shouldn't be caused, but this
> > understanding is not true: --reintegrate does a two-URL diff, whereas
> > merge -c does a one-URL two-rev diff.
>
> I got around to trying a manual two-URL merge and find that the results
> still disagree with the results of --reintegrate: --reintegrate results
> in many extraneous conflicts.
>
> Here is a screenlog which illustrates a manual two-URL merge and a
> --reintegrate merge with different results:
> http://cgi.sfu.ca/~jdbates/tmp/svn/200812180/screenlog
>
> The steps it illustrates are:
>
> * checkout a revision from my repository
> * get the eligible revisions of an ancestrally related branch using "svn
> mergeinfo --show-revs eligible"
> * do manual two-URL merge and observe two conflicts
> * do --reintegrate merge and observe six conflicts

Hi Jack.

I think you misunderstand the "--reintegrate" merge. It does not merge a
set of changes that were made on branch A into branch B. It merges the
difference between branch A and branch B into branch A, thereby making
branch A look just like branch B.

Sorry that's not a thorough explanation. Please read the bit in the
on-line book again or ask on the "users" mailing list for explanation.

Thanks.
- Julian

> Here is a summary of the commands from the screenlog and significant
> output:
>
> ket% ./svn --version
> svn, version 1.6.0 (dev build)
> compiled Dec 18 2008, 15:14:36
>
> Copyright (C) 2000-2008 CollabNet.
> Subversion is open source software, see http://subversion.tigris.org/
> This product includes software developed by CollabNet (http://www.Collab.Net/).
>
> The following repository access (RA) modules are available:
>
> * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
> - handles 'http' scheme
> - handles 'https' scheme
> * ra_svn : Module for accessing a repository using the svn network protocol.
> - handles 'svn' scheme
> * ra_local : Module for accessing a repository on local disk.
> - handles 'file' scheme
>
> ket% ./svn co http://example.com/svn/qubit/trunk/qubit/lib/vendor/symfony -r 1631
> [...]
> Checked out revision 1631.
> ket% ./svn mergeinfo http://example.com/svn/qubit/trunk/symfony/vendor@1636 symfony --show-revs eligible
> r1636
> ket% ./svn merge --dry-run http://example.com/svn/qubit/trunk/symfony/vendor@1635 http://example.com/svn/qubit/trunk/symfony/vendor@1636 symfony | grep ^C
> C symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php
> C symfony/lib/yaml/sfYamlInline.class.php
> ket% ./svn merge --reintegrate http://example.com/svn/qubit/trunk/symfony/vendor@1636 symfony --dry-run | grep ^C
> C symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php
> C symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php
> C symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php
> C symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php
> C symfony/lib/routing/sfRoute.class.php
> C symfony/lib/yaml/sfYamlInline.class.php
> ket%
>
> > > Here is a screenlog which illustrates the problem:
> > > http://cgi.sfu.ca/~jdbates/tmp/svn/200811280/screenlog
> > >
> > > The steps it illustrates are:
> > >
> > > * checkout a revision from my repository
> > > * get the eligible revisions of an ancestrally related branch using "svn
> > > mergeinfo --show-revs eligible"
> > > * manually merge those revisions
> > > * verify two files conflicted
> > >
> > > * checkout the same revision
> > > * automatically merge eligible revisions using "svn merge --reintegrate"
> > > * observe six files conflicted!
> > >
> > > Here is a summary of the commands from the screenlog and significant
> > > output:
> > >
> > > ket% ./svn --version
> > > svn, version 1.6.0 (dev build)
> > > compiled Nov 28 2008, 15:00:00
> > >
> > > Copyright (C) 2000-2008 CollabNet.
> > > Subversion is open source software, see http://subversion.tigris.org/
> > > This product includes software developed by CollabNet (http://www.Collab.Net/).
> > >
> > > The following repository access (RA) modules are available:
> > >
> > > * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
> > > - handles 'http' scheme
> > > - handles 'https' scheme
> > > * ra_svn : Module for accessing a repository using the svn network protocol.
> > > - handles 'svn' scheme
> > > * ra_local : Module for accessing a repository on local disk.
> > > - handles 'file' scheme
> > >
> > > ket% ./svn co http://example.com/svn/qubit/trunk/qubit/lib/vendor/symfony -r 1631
> > > [...]
> > > Checked out revision 1631.
> > > ket% ./svn mergeinfo http://example.com/svn/qubit/trunk/symfony/vendor symfony --show-revs eligible
> > > r1636
> > > ket% ./svn merge http://example.com/svn/qubit/trunk/symfony/vendor symfony -c 1636 --accept postpone
> > > --- Merging r1636 into 'symfony':
> > > [...]
> > > Summary of conflicts:
> > > Text conflicts: 2
> > > ket% ./svn status symfony | grep ^C
> > > C symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php
> > > C symfony/lib/yaml/sfYamlInline.class.php
> > > ket% ./svn co http://example.com/svn/qubit/trunk/qubit/lib/vendor/symfony -r 1631 symfony-reintegrate
> > > [...]
> > > Checked out revision 1631.
> > > ket% ./svn merge http://example.com/svn/qubit/trunk/symfony/vendor symfony-reintegrate
> > --reintegrate --accept postpone
> > > --- Merging differences between repository URLs into 'symfony-reintegrate':
> > > [...]
> > > Summary of conflicts:
> > > Text conflicts: 6
> > > Tree conflicts: 11
> > > ket% ./svn status symfony-reintegrate | grep ^C
> > > C symfony-reintegrate/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php
> > > C symfony-reintegrate/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php
> > > C symfony-reintegrate/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php
> > > C symfony-reintegrate/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php
> > > C symfony-reintegrate/lib/routing/sfRoute.class.php
> > > C symfony-reintegrate/lib/yaml/sfYamlInline.class.php
> > > ket%
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=987060

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=987613
Received on 2008-12-19 17:59:51 CET

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