##// END OF EJS Templates
merge: refactor code to advise fsmonitor in separate function...
Pulkit Goyal -
r45727:796b63b0 default
parent child Browse files
Show More
@@ -1477,6 +1477,49 b' def applyupdates('
1477 return updateresult(updated, merged, removed, unresolved), getfiledata
1477 return updateresult(updated, merged, removed, unresolved), getfiledata
1478
1478
1479
1479
1480 def _advertisefsmonitor(repo, num_gets, p1node):
1481 # Advertise fsmonitor when its presence could be useful.
1482 #
1483 # We only advertise when performing an update from an empty working
1484 # directory. This typically only occurs during initial clone.
1485 #
1486 # We give users a mechanism to disable the warning in case it is
1487 # annoying.
1488 #
1489 # We only allow on Linux and MacOS because that's where fsmonitor is
1490 # considered stable.
1491 fsmonitorwarning = repo.ui.configbool(b'fsmonitor', b'warn_when_unused')
1492 fsmonitorthreshold = repo.ui.configint(
1493 b'fsmonitor', b'warn_update_file_count'
1494 )
1495 try:
1496 # avoid cycle: extensions -> cmdutil -> merge
1497 from . import extensions
1498
1499 extensions.find(b'fsmonitor')
1500 fsmonitorenabled = repo.ui.config(b'fsmonitor', b'mode') != b'off'
1501 # We intentionally don't look at whether fsmonitor has disabled
1502 # itself because a) fsmonitor may have already printed a warning
1503 # b) we only care about the config state here.
1504 except KeyError:
1505 fsmonitorenabled = False
1506
1507 if (
1508 fsmonitorwarning
1509 and not fsmonitorenabled
1510 and p1node == nullid
1511 and num_gets >= fsmonitorthreshold
1512 and pycompat.sysplatform.startswith((b'linux', b'darwin'))
1513 ):
1514 repo.ui.warn(
1515 _(
1516 b'(warning: large working directory being used without '
1517 b'fsmonitor enabled; enable fsmonitor to improve performance; '
1518 b'see "hg help -e fsmonitor")\n'
1519 )
1520 )
1521
1522
1480 UPDATECHECK_ABORT = b'abort' # handled at higher layers
1523 UPDATECHECK_ABORT = b'abort' # handled at higher layers
1481 UPDATECHECK_NONE = b'none'
1524 UPDATECHECK_NONE = b'none'
1482 UPDATECHECK_LINEAR = b'linear'
1525 UPDATECHECK_LINEAR = b'linear'
@@ -1815,46 +1858,9 b' def update('
1815 # note that we're in the middle of an update
1858 # note that we're in the middle of an update
1816 repo.vfs.write(b'updatestate', p2.hex())
1859 repo.vfs.write(b'updatestate', p2.hex())
1817
1860
1818 # Advertise fsmonitor when its presence could be useful.
1861 _advertisefsmonitor(
1819 #
1862 repo, len(actions[mergestatemod.ACTION_GET]), p1.node()
1820 # We only advertise when performing an update from an empty working
1821 # directory. This typically only occurs during initial clone.
1822 #
1823 # We give users a mechanism to disable the warning in case it is
1824 # annoying.
1825 #
1826 # We only allow on Linux and MacOS because that's where fsmonitor is
1827 # considered stable.
1828 fsmonitorwarning = repo.ui.configbool(b'fsmonitor', b'warn_when_unused')
1829 fsmonitorthreshold = repo.ui.configint(
1830 b'fsmonitor', b'warn_update_file_count'
1831 )
1863 )
1832 try:
1833 # avoid cycle: extensions -> cmdutil -> merge
1834 from . import extensions
1835
1836 extensions.find(b'fsmonitor')
1837 fsmonitorenabled = repo.ui.config(b'fsmonitor', b'mode') != b'off'
1838 # We intentionally don't look at whether fsmonitor has disabled
1839 # itself because a) fsmonitor may have already printed a warning
1840 # b) we only care about the config state here.
1841 except KeyError:
1842 fsmonitorenabled = False
1843
1844 if (
1845 fsmonitorwarning
1846 and not fsmonitorenabled
1847 and p1.node() == nullid
1848 and len(actions[mergestatemod.ACTION_GET]) >= fsmonitorthreshold
1849 and pycompat.sysplatform.startswith((b'linux', b'darwin'))
1850 ):
1851 repo.ui.warn(
1852 _(
1853 b'(warning: large working directory being used without '
1854 b'fsmonitor enabled; enable fsmonitor to improve performance; '
1855 b'see "hg help -e fsmonitor")\n'
1856 )
1857 )
1858
1864
1859 wantfiledata = updatedirstate and not branchmerge
1865 wantfiledata = updatedirstate and not branchmerge
1860 stats, getfiledata = applyupdates(
1866 stats, getfiledata = applyupdates(
General Comments 0
You need to be logged in to leave comments. Login now