[Request] [+ ] D12441: crecord: avoid duplicating lines when reverting noeol->eol change
spectral (Kyle Lippincott)
phabricator at mercurial-scm.org
Tue Apr 5 18:26:56 UTC 2022
spectral created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D12441
AFFECTED FILES
mercurial/crecord.py
tests/test-revert-interactive-curses.t
CHANGE DETAILS
diff --git a/tests/test-revert-interactive-curses.t b/tests/test-revert-interactive-curses.t
--- a/tests/test-revert-interactive-curses.t
+++ b/tests/test-revert-interactive-curses.t
@@ -68,6 +68,5 @@
$ do_revert
reverting a
$ cat a
- 0 (wdir known-bad-output !)
0 (no-eol)
diff --git a/mercurial/crecord.py b/mercurial/crecord.py
--- a/mercurial/crecord.py
+++ b/mercurial/crecord.py
@@ -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:])
To: spectral, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20220405/5f8faedd/attachment.html>
More information about the Mercurial-patches
mailing list