revlog: add an exception hint when processing LFS flags without the extension
authorMatt Harbison <matt_harbison@yahoo.com>
Tue, 28 Feb 2023 15:00:26 -0500
changeset 50285 10db46e128d4
parent 50284 13b66bcc9de8
child 50305 db6d210e9618
revlog: add an exception hint when processing LFS flags without the extension It would be even better if this was either detected sooner, or the transaction completed (especially since the read/write processors aren't needed for the exchange). But this makes it easier for the user to resolve until that can be figured out.
mercurial/revlogutils/flagutil.py
tests/test-lfs-serve.t
--- a/mercurial/revlogutils/flagutil.py	Mon Feb 27 23:12:23 2023 -0500
+++ b/mercurial/revlogutils/flagutil.py	Tue Feb 28 15:00:26 2023 -0500
@@ -176,8 +176,12 @@
             vhash = True
 
             if flag not in revlog._flagprocessors:
+                hint = None
+                if flag == REVIDX_EXTSTORED:
+                    hint = _(b"the lfs extension must be enabled")
+
                 message = _(b"missing processor for flag '%#x'") % flag
-                raise revlog._flagserrorclass(message)
+                raise revlog._flagserrorclass(message, hint=hint)
 
             processor = revlog._flagprocessors[flag]
             if processor is not None:
--- a/tests/test-lfs-serve.t	Mon Feb 27 23:12:23 2023 -0500
+++ b/tests/test-lfs-serve.t	Tue Feb 28 15:00:26 2023 -0500
@@ -314,6 +314,7 @@
   transaction abort!
   rollback completed
   abort: missing processor for flag '0x2000'
+  (the lfs extension must be enabled)
   [50]
   $ hg debugrequires -R $TESTTMP/client4_pull/ | grep 'lfs'
   [1]