简体中文 ▾ 主题 ▾ 最新版本 ▾ git-fsmonitor--daemon 最后更新于 2.43.0

名称

git-fsmonitor—​daemon - 内置文件系统监视器

概要

git fsmonitor--daemon start
git fsmonitor--daemon run
git fsmonitor--daemon stop
git fsmonitor--daemon status

描述

一个守护进程,使用平台特定的文件系统通知工具监视工作目录中的文件和目录更改。

该守护进程使用简单IPC接口而不是较慢的githooks[5]接口直接与git status等命令通信。

此守护进程内置于Git中,因此无需第三方工具。

选项

start

在后台启动一个守护进程。

run

在前台运行一个守护进程。

stop

停止当前工作目录中运行的守护进程(如果存在)。

status

如果守护进程正在监视当前工作目录,则以零状态退出。

备注

此守护进程是一个长时间运行的进程,用于监视单个工作目录并维护最近更改的文件和目录列表。如果git status等命令只要求工作目录更改的摘要并避免扫描磁盘,则其性能可以提高。

core.fsmonitor设置为true时(参见git-config[1]),git status等命令将向守护进程询问更改并自动启动它(如果需要)。

更多信息请参见git-update-index[1]中的“文件系统监视器”部分。

注意事项

fsmonitor守护进程目前不知道子模块,也不知道如何过滤掉子模块内部发生的文件系统事件。如果fsmonitor守护进程正在监视一个超级仓库,并且子模块的工作目录中的文件被修改,它将报告更改(作为针对超级仓库的更改)。然而,客户端将正确忽略这些额外的事件,因此性能可能会受到影响,但不会导致不正确的结果。

默认情况下,fsmonitor守护进程拒绝与网络挂载的仓库一起工作;这可以通过将fsmonitor.allowRemote设置为true来覆盖。但请注意,fsmonitor守护进程不保证能与所有网络挂载的仓库正确工作,因此这种用法被认为是实验性的。

在Mac OS上,各种Git命令与fsmonitor守护进程之间的进程间通信(IPC)通过Unix域套接字(UDS)——一种特殊类型的文件——进行,该套接字受原生Mac OS文件系统支持,但不支持网络挂载的文件系统、NTFS或FAT32。其他文件系统可能支持或不支持所需的特性;fsmonitor守护进程不保证能与这些文件系统一起工作,此类使用被认为是实验性的。

默认情况下,套接字在.git目录中创建。但是,如果.git目录在网络挂载的文件系统上,它将改为在$HOME/.git-fsmonitor-*创建,除非$HOME本身在网络挂载的文件系统上,在这种情况下,您必须将配置变量fsmonitor.socketDir设置为Mac OS原生文件系统上某个目录的路径,以在该目录中创建套接字文件。

如果上述任何目录(.git$HOMEfsmonitor.socketDir)不在原生Mac OS文件系统上,fsmonitor守护进程将报告一个错误,导致守护进程和当前运行的命令退出。

配置

本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同:

fsmonitor.allowRemote

默认情况下,fsmonitor守护进程拒绝与网络挂载的仓库一起工作。将fsmonitor.allowRemote设置为true会覆盖此行为。仅当core.fsmonitor设置为true时才受尊重。

fsmonitor.socketDir

这个Mac OS特定的选项,如果设置,指定用于在fsmonitor守护进程和各种Git命令之间进行通信的Unix域套接字创建的目录。该目录必须位于Mac OS原生文件系统上。仅当core.fsmonitor设置为true时才受尊重。

GIT

Git[1] 套件的一部分