[Request] [+ ] D11391: filemerge: be more strict when detecting conflict markers, add `|` markers

spectral (Kyle Lippincott) phabricator at mercurial-scm.org
Tue Sep 7 19:13:00 UTC 2021


spectral created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  I received a user complaint about detecting a line that contained 78 `=`
  followed by `*/` as a conflict marker. We'll never generate that, we generate 7
  identical characters and either the end of the line, or a space. Let's be
  explicit about detecting exactly what we produce to reduce the chances of a
  false positive.
  
  While we're here, add `|||||||` as a detected conflict marker (generated with
  the `keep-merge3` style conflicts).

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11391

AFFECTED FILES
  mercurial/filemerge.py

CHANGE DETAILS

diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -1212,9 +1212,13 @@
 
 
 def hasconflictmarkers(data):
+    # Detect lines starting with a string of 7 identical characters from the
+    # subset Mercurial uses for conflict markers, followed by either the end of
+    # line or a space and some text. Note that using [<>=+|-]{7} would detect
+    # `<><><><><` as a conflict marker, which we don't want.
     return bool(
         re.search(
-            br"^(<<<<<<<.*|=======.*|------- .*|\+\+\+\+\+\+\+ .*|>>>>>>>.*)$",
+            br"^([<>=+|-])\1{6}( .*)$",
             data,
             re.MULTILINE,
         )



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/20210907/274a28a8/attachment.html>


More information about the Mercurial-patches mailing list