Skip to content

git-fsmonitor--daemon

内置文件系统监视器

概要

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

描述

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

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

此守护进程内置于 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) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布