diff --git a/hgext/fsmonitor/__init__.py b/hgext/fsmonitor/__init__.py --- a/hgext/fsmonitor/__init__.py +++ b/hgext/fsmonitor/__init__.py @@ -73,6 +73,8 @@ [fsmonitor] warn_update_file_count = (integer) + # or when mercurial is built with rust support + warn_update_file_count_rust = (integer) If ``warn_when_unused`` is set and fsmonitor isn't enabled, a warning will be printed during working directory updates if this many files will be diff --git a/mercurial/configitems.py b/mercurial/configitems.py --- a/mercurial/configitems.py +++ b/mercurial/configitems.py @@ -793,6 +793,9 @@ b'fsmonitor', b'warn_update_file_count', default=50000, ) coreconfigitem( + b'fsmonitor', b'warn_update_file_count_rust', default=400000, +) +coreconfigitem( b'help', br'hidden-command\..*', default=False, generic=True, ) coreconfigitem( diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1698,6 +1698,15 @@ fsmonitorthreshold = repo.ui.configint( b'fsmonitor', b'warn_update_file_count' ) + # avoid cycle dirstate -> sparse -> merge -> dirstate + from . import dirstate + + if dirstate.rustmod is not None: + # When using rust status, fsmonitor becomes necessary at higher sizes + fsmonitorthreshold = repo.ui.configint( + b'fsmonitor', b'warn_update_file_count_rust', + ) + try: # avoid cycle: extensions -> cmdutil -> merge from . import extensions diff --git a/tests/test-clone.t b/tests/test-clone.t --- a/tests/test-clone.t +++ b/tests/test-clone.t @@ -1241,6 +1241,7 @@ $ cat >> $HGRCPATH << EOF > [fsmonitor] > warn_update_file_count = 2 + > warn_update_file_count_rust = 2 > EOF We should see a warning about no fsmonitor on supported platforms