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

Re: mergeinfo marked not inheritable on sparse checkout

From: Stefan Sperling <stsp_at_elego.de>
Date: Fri, 21 Oct 2011 11:10:45 +0200

On Thu, Oct 20, 2011 at 02:02:48PM -0700, Douglas Wilson wrote:
>
>
> On Oct 20, 10:45 am, Stefan Sperling <s..._at_elego.de> wrote:
> >
> > Which version of SVN are you running when you hit the problem
> > you described in your first post? 1.6 or 1.7?
>
> Subversion 1.7.0

Ok, in that case what you are seeing is related to this change in
mergeinfo recording behaviour:
http://subversion.apache.org/docs/release-notes/1.7.html#svn-merge-sparse-no-tree-conflict
Quote:
  Merges into shallow working copies used to cause tree conflicts on nodes
  which were affected by the merge but not present in the working copy. In
  1.7, no tree conflict is flagged. Instead, non-inheritable subtree
  mergeinfo is created on the parents of missing nodes, so that later
  merges into working copies that are not sparse will pick up any missing
  changes for those nodes.

The case you described is similar to the case where 1.6 used to flag a tree
conflict. But it only flagged a tree conflict if the incoming delta of the
merge applies changes to a missing (shallow) subtree. It sounds like
in your case, the incoming delta does not touch the shallow subtree,
so svn 1.6 won't flag a conflict, but svn 1.7 for some reason it creates
non-inheritable mergeinfo on the parent anyway -- which would be wrong,
since the missing subtree isn't affected by the merge.

Does that make sense?

However, I cannot reproduce this problem in quick manual testing.
In my testing, non-inheritable mergeinfo is only created if the
incoming change does modify the missing subtree (see below).
Are you really sure that your merge does not modify the missing subtree?
Because if it does, there is no problem at all, and everything is working
as designed.

My simple test, where a merge wants to modify the file 'epsilon/zeta',
and we perform the merge once the file missing due to a shallow
subtree 'epsilon', and once with the file present but with a different
shallow subtree ('gamma') in the working copy.

$ cd svn-sandbox/trunk
$ echo foo >> epsilon/zeta
$ svn ci -mm
Sending epsilon/zeta
Transmitting file data .
Committed revision 3.
$ cd ../branch/
$ svn up -set-depth=empty epsilon/
D epsilon/zeta
Updating 'epsilon':
Updated to revision 3.
$ svn st
$ svn up
Updating '.':
At revision 3.
$ svn merge ^/trunk
Skipped missing target: 'epsilon/zeta'
--- Recording mergeinfo for merge of r2 through r3 into '.':
 U .
--- Recording mergeinfo for merge of r2 through r3 into 'epsilon':
 U epsilon
Summary of conflicts:
  Skipped paths: 1
$ svn st
 M .
 M epsilon
$ svn pl -v epsilon
Properties on 'epsilon':
  svn:mergeinfo
    /trunk/epsilon:2-3*
$ svn diff
Index: .
===================================================================
--- . (revision 3)
+++ . (working copy)

Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
   Merged /trunk:r2-3
Index: epsilon
===================================================================
--- epsilon (revision 3)
+++ epsilon (working copy)

Property changes on: epsilon
___________________________________________________________________
Added: svn:mergeinfo
   Merged /trunk/epsilon:r2-3*
$ svn revert -R .
Reverted '.'
Reverted 'epsilon'
$ svn up --set-depth=infinity epsilon
Updating 'epsilon':
A epsilon/zeta
Updated to revision 3.
$ svn up --set-depth empty gamma
D gamma/delta
Updating 'gamma':
Updated to revision 3.
$ svn merge ^/trunk
--- Merging r2 through r3 into '.':
U epsilon/zeta
--- Recording mergeinfo for merge of r2 through r3 into '.':
 U .
$ svn st
 M .
M epsilon/zeta
$ svn diff
Index: .
===================================================================
--- . (revision 3)
+++ . (working copy)

Property changes on: .
___________________________________________________________________
Added: svn:mergeinfo
   Merged /trunk:r2-3
Index: epsilon/zeta
===================================================================
--- epsilon/zeta (revision 3)
+++ epsilon/zeta (working copy)
@@ -1 +1,2 @@
 zeta
+foo
$
Received on 2011-10-21 11:24: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.