# HG changeset patch # User Valentin Gatien-Baron # Date 2020-09-14 15:32:24 # Node ID c1d6e930ac8ad3b501d75f873edf30240f9d1bb2 # Parent 14be07d5603c10df913dd48cd2392e565f0f29aa fsmonitor: increase the threshold before we recommend it, when using rust 50k files works just fine with the rust status, and it's annoying to get told "consider using fsmonitor" when we have another solution to the status speed. 400k files was not chosen in any rigorous way. I know 200k files is fine. Twice as many files should still be fine. Differential Revision: https://phab.mercurial-scm.org/D9021 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 @@ beneficial to performance but isn't enab [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 @@ coreconfigitem( 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 @@ def _advertisefsmonitor(repo, num_gets, 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 @@ Lower the warning threshold to simulate $ 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