You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by "Neels J. Hofmeyr" <ne...@elego.de> on 2008/09/26 02:28:22 UTC

tree-conflicts: more on dirs_same_p()

Neels J. Hofmeyr wrote:
> Hey Julian,
> 
> I'm investigating your preliminary patch for directory comparison (I've
> attached the patch for dev@'s reference). Here's what I found:

So, some more.

In merge_tests.py 122
  Second merge operation

[[[
  # Make a differing copy, locally modify it so it's the same,
  # and merge a deletion to it.
  target = 'A/B3'
  svn_copy(s_rev_orig, source, target)
  svn_commit(target)
  svn_moddir(target+"/E")
  # Should be deleted quietly.
  svn_merge(s_rev_del, source, target, '--- Merging|D ')
]]]

This section fails because the merge sources are found to differ. There are
two things:


1) dirs_same_p() says that the directories differ because it finds E/newfile
is missing. Because of 2), I guess it is not comparing to the local mods but
only to the previously committed state.

Question: Was that commit missing or is it intentionally omitted / Should
svn treat local mods like the committed ones here?


2) If I add another commit after svn_moddir(...), it still says the
directories differ, also because of E/newfile, but now it says that *files
differ*. Tracing around reveals that it's actually prop changes.

Propchanges are reported on:
"svn:entry:last-author"
"svn:entry:uuid"
"svn:entry:committed-rev"
"svn:entry:committed-date"

So I'm pasting your condition that categorically ignores svn:entry props
from dirs_same_dir_props_changed() over to dirs_same_file_changed().



Fixing these makes merge_tests.py 122 pass. 123 also passes. 124 XFAILS
(wasn't that XPASS before?).

...attaching a new diff that also contains my changes so far, and a diff
between your diff and my diff. Hm, a microbranch would have been useful.
Maybe next time...

NOTE: I updated trunk for this diff, and tests 122 123 124 are now 123 124 125.

-- 
Neels Hofmeyr -- elego Software Solutions GmbH
Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23458696  mobile: +49 177 2345869  fax: +49 30 23458695
http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelsreg: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194


Re: tree-conflicts: more on dirs_same_p()

Posted by Julian Foad <ju...@btopenworld.com>.
On Fri, 2008-09-26 at 04:28 +0200, Neels J. Hofmeyr wrote:
> Neels J. Hofmeyr wrote:
> > Hey Julian,
> > 
> > I'm investigating your preliminary patch for directory comparison (I've
> > attached the patch for dev@'s reference). Here's what I found:
> 
> So, some more.
> 
> In merge_tests.py 122
>   Second merge operation
> 
> [[[
>   # Make a differing copy, locally modify it so it's the same,
>   # and merge a deletion to it.
>   target = 'A/B3'
>   svn_copy(s_rev_orig, source, target)
>   svn_commit(target)
>   svn_moddir(target+"/E")
>   # Should be deleted quietly.
>   svn_merge(s_rev_del, source, target, '--- Merging|D ')
> ]]]
> 
> This section fails because the merge sources are found to differ. There are
> two things:
> 
> 
> 1) dirs_same_p() says that the directories differ because it finds E/newfile
> is missing. Because of 2), I guess it is not comparing to the local mods but
> only to the previously committed state.
> 
> Question: Was that commit missing or is it intentionally omitted / Should
> svn treat local mods like the committed ones here?

A commit is missing on purpose, here. The purpose of this section of the
test is to check that a merge to a WC with local mods works the same as
if the mods had been committed.


> 2) If I add another commit after svn_moddir(...), it still says the
> directories differ, also because of E/newfile, but now it says that *files
> differ*. Tracing around reveals that it's actually prop changes.
> 
> Propchanges are reported on:
> "svn:entry:last-author"
> "svn:entry:uuid"
> "svn:entry:committed-rev"
> "svn:entry:committed-date"
> 
> So I'm pasting your condition that categorically ignores svn:entry props
> from dirs_same_dir_props_changed() over to dirs_same_file_changed().

Oh, thanks. That's better.


> Fixing these makes merge_tests.py 122 pass. 123 also passes. 124 XFAILS
> (wasn't that XPASS before?).

> ...attaching a new diff that also contains my changes so far, and a diff
> between your diff and my diff. Hm, a microbranch would have been useful.
> Maybe next time...
> 
> NOTE: I updated trunk for this diff, and tests 122 123 124 are now 123 124 125.

Thanks for investigating.
- Julian



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org