Re: [PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-06 Thread Pierre-Yves David



On 10/04/2016 09:03 PM, Gábor STEFANIK wrote:





--
This message, including its attachments, is confidential. For more information 
please read NNG's email policy here:
http://www.nng.com/emailpolicy/
By responding to this email you accept the email policy.



Feladó: Pierre-Yves David 
Elküldve: 2016. október 4. 19:28
Címzett: Gábor STEFANIK; mercurial-devel@mercurial-scm.org
Tárgy: Re: [PATCH 05 of 11] copies: don't record divergence for files needing 
no merge (issue4028)

On 10/04/2016 04:39 PM, Gábor Stefanik wrote:

# HG changeset patch
# User Gábor Stefanik 
# Date 1475494199 -7200
#  Mon Oct 03 13:29:59 2016 +0200
# Node ID bc8729a69d10d61498712d5dab773918f1edcde0
# Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
copies: don't record divergence for files needing no merge (issue4028)


Can you elaborate about why this change make sense ?

also: do not include (issue4028) tag until the changeset that actually
fixes the issue.

(Sorry for the weird headers and formatting, I'm using webmail.)

Yuya Nishihara specifically asked for this to be factored out into its own 
patch.

Of the two "break" statements that were changed to "return", only the first is a real 
change, as the 2nd one had "of = None" before it, to skip the final pass of recording divergent 
renames. The first one would record a divergence for files where there was nothing to merge in m2 compared to 
ma - this divergence would be dropped later in mergecopies as irrelevant.

The new checkcopies does more than just record a divergence after the main 
loop, which makes it essential that it doesn't enter the post-processing stage 
after the main loop when it has already came up with an answer. Specifically, 
an incomplete copy can get recorded, which could then be inappropriately 
matched in mergecopies with another incomplete copy or an incomplete divergence 
from the other pass.

So, this is a preparatory change for the checkcopies divergence handling patch.


Can  you update the patch description with that ?

--
Pierre-Yves David
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-05 Thread Gábor Stefanik
# HG changeset patch
# User Gábor Stefanik 
# Date 1475494199 -7200
#  Mon Oct 03 13:29:59 2016 +0200
# Node ID bc8729a69d10d61498712d5dab773918f1edcde0
# Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
copies: don't record divergence for files needing no merge (issue4028)

diff -r a2b50d0c5dc6 -r bc8729a69d10 mercurial/copies.py
--- a/mercurial/copies.py   Mon Oct 03 13:24:56 2016 +0200
+++ b/mercurial/copies.py   Mon Oct 03 13:29:59 2016 +0200
@@ -524,13 +524,12 @@
 if of not in m2:
 continue # no match, keep looking
 if m2[of] == ma.get(of):
-break # no merge needed, quit early
+return # no merge needed, quit early
 c2 = getfctx(of, m2[of])
 cr = _related(oc, c2, ca.rev())
 if cr and (of == f or of == c2.path()): # non-divergent
 copy[f] = of
-of = None
-break
+return
 
 if of in ma:
 diverge.setdefault(of, []).append(f)
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-05 Thread Gábor Stefanik
# HG changeset patch
# User Gábor Stefanik 
# Date 1475494199 -7200
#  Mon Oct 03 13:29:59 2016 +0200
# Node ID bc8729a69d10d61498712d5dab773918f1edcde0
# Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
copies: don't record divergence for files needing no merge (issue4028)

diff -r a2b50d0c5dc6 -r bc8729a69d10 mercurial/copies.py
--- a/mercurial/copies.py   Mon Oct 03 13:24:56 2016 +0200
+++ b/mercurial/copies.py   Mon Oct 03 13:29:59 2016 +0200
@@ -524,13 +524,12 @@
 if of not in m2:
 continue # no match, keep looking
 if m2[of] == ma.get(of):
-break # no merge needed, quit early
+return # no merge needed, quit early
 c2 = getfctx(of, m2[of])
 cr = _related(oc, c2, ca.rev())
 if cr and (of == f or of == c2.path()): # non-divergent
 copy[f] = of
-of = None
-break
+return
 
 if of in ma:
 diverge.setdefault(of, []).append(f)
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


RE: [PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-04 Thread Gábor STEFANIK




--
This message, including its attachments, is confidential. For more information 
please read NNG's email policy here:
http://www.nng.com/emailpolicy/
By responding to this email you accept the email policy.



Feladó: Pierre-Yves David 
Elküldve: 2016. október 4. 19:28
Címzett: Gábor STEFANIK; mercurial-devel@mercurial-scm.org
Tárgy: Re: [PATCH 05 of 11] copies: don't record divergence for files needing 
no merge (issue4028)

On 10/04/2016 04:39 PM, Gábor Stefanik wrote:
> # HG changeset patch
> # User Gábor Stefanik 
> # Date 1475494199 -7200
> #  Mon Oct 03 13:29:59 2016 +0200
> # Node ID bc8729a69d10d61498712d5dab773918f1edcde0
> # Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
> copies: don't record divergence for files needing no merge (issue4028)

Can you elaborate about why this change make sense ?

also: do not include (issue4028) tag until the changeset that actually
fixes the issue.

(Sorry for the weird headers and formatting, I'm using webmail.)

Yuya Nishihara specifically asked for this to be factored out into its own 
patch.

Of the two "break" statements that were changed to "return", only the first is 
a real change, as the 2nd one had "of = None" before it, to skip the final pass 
of recording divergent renames. The first one would record a divergence for 
files where there was nothing to merge in m2 compared to ma - this divergence 
would be dropped later in mergecopies as irrelevant.

The new checkcopies does more than just record a divergence after the main 
loop, which makes it essential that it doesn't enter the post-processing stage 
after the main loop when it has already came up with an answer. Specifically, 
an incomplete copy can get recorded, which could then be inappropriately 
matched in mergecopies with another incomplete copy or an incomplete divergence 
from the other pass.

So, this is a preparatory change for the checkcopies divergence handling patch.


>
> diff -r a2b50d0c5dc6 -r bc8729a69d10 mercurial/copies.py
> --- a/mercurial/copies.py Mon Oct 03 13:24:56 2016 +0200
> +++ b/mercurial/copies.py Mon Oct 03 13:29:59 2016 +0200
> @@ -524,13 +524,12 @@
>  if of not in m2:
>  continue # no match, keep looking
>  if m2[of] == ma.get(of):
> -break # no merge needed, quit early
> +return # no merge needed, quit early
>  c2 = getfctx(of, m2[of])
>  cr = _related(oc, c2, ca.rev())
>  if cr and (of == f or of == c2.path()): # non-divergent
>  copy[f] = of
> -of = None
> -break
> +return
>
>  if of in ma:
>  diverge.setdefault(of, []).append(f)
>
>
>
> ___
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>

--
Pierre-Yves David
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: [PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-04 Thread Pierre-Yves David



On 10/04/2016 04:39 PM, Gábor Stefanik wrote:

# HG changeset patch
# User Gábor Stefanik 
# Date 1475494199 -7200
#  Mon Oct 03 13:29:59 2016 +0200
# Node ID bc8729a69d10d61498712d5dab773918f1edcde0
# Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
copies: don't record divergence for files needing no merge (issue4028)


Can you elaborate about why this change make sense ?

also: do not include (issue4028) tag until the changeset that actually 
fixes the issue.




diff -r a2b50d0c5dc6 -r bc8729a69d10 mercurial/copies.py
--- a/mercurial/copies.py   Mon Oct 03 13:24:56 2016 +0200
+++ b/mercurial/copies.py   Mon Oct 03 13:29:59 2016 +0200
@@ -524,13 +524,12 @@
 if of not in m2:
 continue # no match, keep looking
 if m2[of] == ma.get(of):
-break # no merge needed, quit early
+return # no merge needed, quit early
 c2 = getfctx(of, m2[of])
 cr = _related(oc, c2, ca.rev())
 if cr and (of == f or of == c2.path()): # non-divergent
 copy[f] = of
-of = None
-break
+return

 if of in ma:
 diverge.setdefault(of, []).append(f)



___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel



--
Pierre-Yves David
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 05 of 11] copies: don't record divergence for files needing no merge (issue4028)

2016-10-04 Thread Gábor Stefanik
# HG changeset patch
# User Gábor Stefanik 
# Date 1475494199 -7200
#  Mon Oct 03 13:29:59 2016 +0200
# Node ID bc8729a69d10d61498712d5dab773918f1edcde0
# Parent  a2b50d0c5dc69a4ce15b6a54d030e478c0f4cc41
copies: don't record divergence for files needing no merge (issue4028)

diff -r a2b50d0c5dc6 -r bc8729a69d10 mercurial/copies.py
--- a/mercurial/copies.py   Mon Oct 03 13:24:56 2016 +0200
+++ b/mercurial/copies.py   Mon Oct 03 13:29:59 2016 +0200
@@ -524,13 +524,12 @@
 if of not in m2:
 continue # no match, keep looking
 if m2[of] == ma.get(of):
-break # no merge needed, quit early
+return # no merge needed, quit early
 c2 = getfctx(of, m2[of])
 cr = _related(oc, c2, ca.rev())
 if cr and (of == f or of == c2.path()): # non-divergent
 copy[f] = of
-of = None
-break
+return
 
 if of in ma:
 diverge.setdefault(of, []).append(f)
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel