Mercurial > hg-stable
changeset 49099:079197e94b24
crecord: avoid duplicating lines when reverting noeol->eol change
When reversing a patch that looks like this while using crecord:
```
@@ -301,4 +302,4 @@ zza
zzb
zzc
zzd
-zze
\ No newline at end of file
+zze
```
we would previously reverse the `-zze` line to be an add, encounter the "no
newline" line and stop inspecting lines. This caused us to duplicate the line,
producing `zzezze` (still without a newline).
`break` is the correct action if we know there will be no lines afterwards, as
would be the case in an eol -> noeol transition. It is incorrect if there are
lines afterward, such as if both sides are missing the newline or if only the
lhs is missing the newline.
Differential Revision: https://phab.mercurial-scm.org/D12441
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Mon, 04 Apr 2022 18:05:33 -0700 |
parents | 9a5d09d7f108 |
children | 51565fedfe7f |
files | mercurial/crecord.py tests/test-revert-interactive-curses.t |
diffstat | 2 files changed, 1 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/crecord.py Tue Apr 05 11:09:57 2022 -0700 +++ b/mercurial/crecord.py Mon Apr 04 18:05:33 2022 -0700 @@ -505,7 +505,7 @@ text = line.linetext if line.linetext == diffhelper.MISSING_NEWLINE_MARKER: noeol = True - break + continue if line.applied: if text.startswith(b'+'): dels.append(text[1:])